f(x)=x*x*x-3*x-1
迭代公式:x=(3*x+1)/(x*x)
#include <stdio.h>
#include <math.h>
#define maxrept 1000
double f1(double x)
{
return (3*x+1)/(x*x);
}
double f(double t)
{
double y,z;
y=f1(t);
z=f1(y);
return t-(((y-t)*(y-t))/(z-2*y+t));
}
void main()
{
int k=0;
double d;
double eps=0.00001;
double x1=1.5,x2,y,z;
do
{
x2=f(x1);
d=fabs(x2-x1);
x1=x2;
k++;
printf("x=%.5lf\n",x2);
printf("k=%d\n",k);
}while((d>=eps)&(k<maxrept));
if(k<maxrept)
printf("此迭代公式收敛!\n");
else
printf("此迭代公式发散,迭代失败!\n");
}