c语言牛顿迭代法

Python015

c语言牛顿迭代法,第1张

#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.