一个迭代问题,无法得出正确答案。求解
编写一个子程序NewTon(float x0,float eps,float x1)。它的功能是用牛顿迭代法求f(x)= 在x=0附近的一个实根。牛顿迭代公式为:X(n+1)=Xn-f(Xn)/f`(Xn)
迭代收敛判据为:f(X(n+1))的绝对值小于eps (eps为指定的迭代精度,例如1e-6)。若迭代成功,则返回非零值;否则,返回0。
#include <stdio.h>
#include <math.h>
float NewTon()
{float f,f1,x0,eps,x1;
printf("请输入指定迭代精度:\n");
scanf("%f",&eps); x0=0;
do {x1=x0;
f=x0*x0*x0-2*x0*x0+4*x0+1;
f1=3*x0*x0-4*x0+4; x0=x1-f/f1;
if (fabs(x0*x0*x0-2*x0*x0+4*x0+1)<eps)
break;}
while(fabs(x0*x0*x0-2*x0*x0+4*x0+1)>=eps);
return x0;
printf("%f",x0);
}
void main()
{
NewTon();
}
这是我打的代码。编译没问题,但感觉不对。求解。这个程序到底该怎么编