课本24页 例2——6
#include<iostream>
#include<math.h>
using namespace std;
int main()
{
cout<<"请输入初始值X:"<<endl;
double x0,x,y,z;
cin>>x0;
int i;
for( i=0;i<50;i++)
{
y=x0*x0*x0-1;
z=y*y*y-1;
x=x0-(y-x0)*(y-x0)/(z-2*y+x0); //迭代函数
if(abs(x-x0)<10e-7)
{
cout<<x<<endl;
break;
}
else
x0=x;
}
if(i==50)
cout<<"超出最大迭代次数"<<endl;
else
cout<<"迭代次数为:"<<i<<endl;
return 0;
}
x0=1.5时迭代次数为5;
newton解:
#include<iostream>
#include<math.h>
using namespace std;
int main()
{
cout<<"请输入初始值X:"<<endl;
double x0,x1,F0,F1,F2,F3;
cin>>x0;
F0=x0*x0*x0-1-x0;
F1=3*x0*x0-1;
int i;
for( i=0;i<50;i++)
{
if(F1==0)
break;
x1=x0-F0/F1;
F2= x1*x1*x1-x1-1;
F3= x1*x1*3-1;
if(abs(x1-x0)<10e-7)
{
cout<<x1<<endl;
break;
}
else
{
x0=x1;
F0= F2;
F1=F3;
}
}
if(i==50)
cout<<"超出最大迭代次数"<<endl;
else
cout<<"迭代次数为:"<<i<<endl;
return 0;
}
x0=1.5时迭代次数为3;