需要一些有关此代码的帮助。我一直试图找出代码是否有错误,因为cos x - x
的近似解是-1.57
,而不是0.739
。感谢
double f(double x)
{
double y;
y = cos(x) - x;
return y;
}
int main()
{
double p,p0;
int i=1,N;
cout<<"p0 = ";
cin>>p0;
cout<<"N = ";
cin>>N;
while(i <= N)
{
p = f(p0);
if(fabs(p-p0) < eps)
{
cout<<p<<endl;
break;
}
cout<<"Iteration "<<i<<": p = "<<p<<endl;
i++;
p0 = p;
cout<<"The solution is "<<p<<endl;
if(i>N)
{
cout<<"Solution not found (method diverges)"<<endl;;
break;
}
}
cout<<"The approximated solution is x = "<<p<<" in the iteration "<<i-1<<endl;
system("PAUSE");
return 0;
}
感谢您的帮助!
答案 0 :(得分:1)
简单迭代的方法是替换x = F(x)。对于你的等式x = cos(x)。
#include <iostream>
#include <cmath>
using namespace std;
double f(double x)
{
return cos(x);
}
int main()
{
double p,p0=1,eps = 0.001;
int i=1,N=1000;
while(i <= N)
{
p = f(p0);
if(fabs(p-p0) < eps)
{
cout<<p<<endl;
break;
}
cout<<"Iteration "<<i<<": p = "<<p<<endl;
i++;
p0 = p;
cout<<"The solution is "<<p<<endl;
if(i>N)
{
cout<<"Solution not found (method diverges)"<<endl;;
break;
}
}
cout<<"The approximated solution is x = "<<p<<" in the iteration "<<i-1<<endl;
return 0;
}