牛顿迭代法求方程根(1)

发布时间 2023-04-17 21:36:54作者: 麹义

问题描述:

问题描述:用牛顿迭代法求方程的根 方程为aX3+bX2+cx+d,有一根在1附近 要求迭代至10-5次方以内

 

解题思路:

问题分析:牛顿迭代法是不断接近根的方法,背景:多数方程不存在求根公式,因此求精确根比较复杂,甚至不可解,从而寻找方程的近似解就显得很重要。方法是使用*f(x)*的泰勒级数的前面几项来寻找方程f(x)的根。

代码表达

 

程序代码:

#include<stdio.h>
#include<math.h>
main()
{
float solution(float a,float b,float c,float d);
float a,b,c,d,x;
printf("输入方程的系数:");
scanf("%f %f %f %f",&a,&b,&c,&d);
x=solution(a,b,c,d);
printf("所求方程根为:%f",x);
}
float solution(float a,float b,float c,float d);
{
float x0,x=1.5,f,fd,h;
do
{
x0=x
f=a*x*x0*x0+b*x0+c*x0+d
fd=3*a*x0*x0+2*b*x0+c
h=f/fd;
x=x0-h;
}
while(fabs(x-x0)>=1e-5);
return x;
}