所以我正在做一个使用欧拉方法(微积分2)来近似微分方程解的程序。这是实际的问题:
对于边界条件为y(1)= 1的微分方程y'= x + 3y / x,使用Euler方法估计x = 2.5时的y值。取deltax = 0.1
问题是我需要while循环以x = 2.5结束。但是,当我选择增量x为0.1时,while循环只会运行到2.4,而不会执行最后的x值2.5。如果将while循环条件更改为x <2.5000001,则循环运行2.5。
这是与使用双精度值相关的固有问题吗?还是我的程序有问题。请帮忙。
// Student Name
// Cornerstone of Engineering
// Programming Lab 4-1
#include <iostream>
#include <math.h>
using namespace std;
int main() {
double x = 1, y = 1, deltaX, func, der, error;
cout<<"Enter your delta x"<<endl;
cin>>deltaX;
while (x <= 2.5) {
func = (2 * pow(x,3)) - pow(x,2);
der = x + ((3 * y)/ x);
cout<<"x: "<<x<<"\t"<<"y: "<<y<<"\t"<<"dy/dx: "<<der<<endl;
x = x + deltaX;
y = y + (der * deltaX);
}
error = (((y + der * deltaX) - func)/func) * 100;
cout<<error<<" %"<<endl;
}