您的位置:首页 > 其它

牛顿迭代法、迭代逼近

2009-03-10 23:01 302 查看
/*zstu 求一元三次方程的根

要求1附近的根,只要把x0初始化为1代入,然后牛顿迭代1000次就出结果了

*/

#include<stdio.h>
double c[4],d[3];
double f(double x)
{
double fac=1,sum=0;
int i;
for(i=0;i<4;i++)
{
sum+=fac*c[i];
fac*=x;
}
return sum;
}
double df(double x)
{
double fac=1,sum=0;
int i;
for(i=0;i<3;i++)
{
sum+=fac*d[i];
fac*=x;
}
return sum;
}
main()
{
int i;
double x0;
while(scanf("%lf%lf%lf%lf",&c[3],&c[2],&c[1],&c[0])!=EOF)
{
d[0]=c[1];
d[1]=c[2]*2;
d[2]=c[3]*3;
x0=1;
i=1;
while(i<1000)
{
i++;
x0=x0-f(x0)/df(x0);
}
printf("%.2f/n",x0);
}
}
 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: