C ++我的while循环在应该迭代之前停止了一次迭代

时间:2018-10-06 20:23:52

标签: c++ while-loop calculus

所以我正在做一个使用欧拉方法(微积分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;




}

0 个答案:

没有答案