f(x)=x*x*x-3*x-1
迭代公式:x=(3*x+1)/x*x
#include <stdio.h>
#include <math.h>
#define maxrept 20 //迭代最高次数
double f(double x)
{
return (3*x+1)/x*x; //直接写迭代公式
}
void main()
{
int k=0;//迭代次数
double d;
double eps=0.0001; //给出精度
double x1=0.1,x2;
do
{
x2=f(x1);
d=fabs(x2-x1);
x1=x2;
k++;
printf("x=%.6lf\n",x2);
printf("k=%d\n",k); //打印出迭代次数
}while((d>=eps)&(k<maxrept));
if(k<maxrept)
printf("此迭代公式收敛!\n");
else
printf("此迭代公式发散,迭代失败!\n");//打印出敛散情况
}