这是我到目前为止所做的。我无法获得第二个根(解决方案)。我得到第一个答案后,我不知道如何继续循环。 请帮帮我。
#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;
}
答案 0 :(得分:0)
使用此等式,您将遇到精度问题。这个等式的零点接近于x = 0.90和x = 1.32,但是不够接近以至于与epsilon
的值的比较将为(Example)提供单个好的值。您既不需要提高步长的精度(例如0.0001 - 我已经在示例中完成了),也可以存储每次迭代的值,并在值从负变为正(或者为正)时进行近似。负)。