这个小程序算出的结果为什么不正确.

来源:百度知道 编辑:UC知道 时间:2024/05/16 20:44:13
#include<stdio.h>
void main()
{
float x=1.6,y,y1,x1;

do
{
y=2*x*x*x-4*x*x+3*x-6;
y1=6*x*x-8*x+3;
x1=x-y/y1;
x=x1;
}
while((fabs(x-(x-y/y1)))>1e-5);
printf("%f",x);
getch();

}

是爹带法求根,已知根在1.5附近

错在x=x1; 把 x 更新后 再做 while(。。)里的比较
这时x==x1 啦。

改成:
....
x1=x-y/y1;
if ( fabs(x-x1) < 1e-05) break;
x=x1;
}
while(1);

爹带法...无敌了....