牛顿迭代法求方程根

问题:

 设计:定义变量a,b,c,d.通过键盘输入a,b,c,d,取1附近的一个值1.5赋值给x,设置一个do while 循环,循环中把x的值赋值给x0,利用pow标准库函数求出f,并求出导数fd,利用公式求出x的值,循环的条件是|x-x0|>10的-5次方,因为题干的条件判定是|x-x0|<=10的-5次方,该题目若用while循环实现,需要同时给x0赋值。最后执行完循环,打印输出x的值即可。

#include<stdio.h>
#include<math.h>
int main()
{
double a,b,c,d,f,fd,x0,x=1.5;
scanf("%lf%lf%lf%lf",&a,&b,&c,&d);
do{
x0=x;

f=a*pow(x0,3)+b*pow(x0,2)+c*x0+d;
fd=3*a*x0*x0+2*b*x0+c;
x=x0-(f/fd);

}while(fabs(x-x0)>pow(10,-5));

printf("%lf",x);
return 0;
}

 

posted @ 2023-04-18 10:21  千恒  阅读(35)  评论(0编辑  收藏  举报