#include<stdio.h>
#include<math.h>
int a,b,c,d
float f(float x)
{ float y
y=((a*x+b)*x+c)*x+d
return(y)
}
float f1(float x)
{ float y
y=(3*a*x+2*b)*x+c
return(y)
}
void main()
{ float x0=1.0,x1
printf("请输入a,b,c,d的值:\n")
scanf("%d,%d,%d,%d",&a,&b,&c,&d)
x1=1
do
{
x0=x1
x1=x0-f(x0)/f1(x0)
}
while(fabs(x1-x0) >=0.00001)
printf("%f",x1)
}
牛顿迭代法:
牛顿迭代法(Newton's method)又称为牛顿-拉弗森方法(Newton-Raphson method),它是一种在实数域和复数域上近似求解方程的方法。方法使用函数的泰勒级数的前面几项来寻找方程的根。
给你一点提示。牛顿迭代法要计算
(1)
y1=f(x)
在
x
的函数值
(2)
d1=f(x)
的一阶导数
在
x
的值
你可以写两个函数,分别计算y1,d1
如果一阶导数有解析解,则可用赋值语句,否则要写数值解子程序。
步骤:
设解的精度,例
float
eps=0.000001
设x初值,x1
算y1=f(x1)
迭代循环开始
算一阶导数
在
x1
的值
d1
用牛顿公式
算出
x2
[x2
=
x1
-
y1
/
d1]
如果
fabs(x2-x1)
>
eps
则从新迭代
--
用新的函数值和一阶导数值推下一个
新x.