编写c ++程序,从0求解e ^(x / 2)= 2sin(x)的eq

时间:2014-02-13 17:24:49

标签: c++

这是我到目前为止所做的。我无法获得第二个根(解决方案)。我得到第一个答案后,我不知道如何继续循环。 请帮帮我。

#include <iostream>
#include <cmath>
using namespace std;

int main()
{
    double x, y, y0;
    double dx = 0.01;
    const double EulerConstant = std::exp(1.0);

    x =dx;
    y= sqrt(pow(EulerConstant,x))-2*sin(x);
    y0=y;

    while (y*y0>0)
    {
        y0=y;
        x += dx;
        y = sqrt(pow(EulerConstant,x))-2*sin(x);
    }


    cout << "x =" << x << "\n";


    system("pause");
    return 0;
}

1 个答案:

答案 0 :(得分:0)

使用此等式,您将遇到精度问题。这个等式的零点接近于x = 0.90和x = 1.32,但是不够接近以至于与epsilon的值的比较将为(Example)提供单个好的值。您既不需要提高步长的精度(例如0.0001 - 我已经在示例中完成了),也可以存储每次迭代的值,并在值从负变为正(或者为正)时进行近似。负)。