include"stdio.h"
include"math.h"
double rot(double x,double a,double b,double c,double d)
{
double f,f1;
do
{
f=a*x*x*x+b*x*x+c*x+d;
f1=3*a*x*x+2*b*x+c;
x=x-f/f1;
}while(fabs(x-1)>1e-6);
return x;
}
int main()
{
double a,b,c,d;
printf("输入a,b,c,d:\n");
scanf("%lf%lf%lf%lf",&a,&b,&c,&d);
printf("%f",rot(1.1,a,b,c,d));
return 0;
}
卡在这里,无输出...本人新手
把fabs(x - 1) > 1e - 6 改成 x - 1 > 1e - 6就能出结果,因为迭代的时候收敛很快,很可能越过你给的范围.
另外,我想说一下,即使这么改,答案也不准确,因为你不能保证迭代的时候在x == 1时一定收敛。