C语言程序 牛顿迭代法

C语言程序 牛顿迭代法,第1张

给你一点提示。

牛顿迭代法要计算

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

把两个子函数都尘早写主函数里头吧!你这样写a、誉顷b、c、d都没有传参,害我找了半天。

#include<stdio.h>

#include<math.h>

int

a,b,c,d

//a、b、c、d为系数

void

main()

{

int

k=0

//计数变量

float

X0,X1,f,f1

int

a,b,c,d

printf("提示:函数f(x)=a*x^3+b*x^2+c*x+d\n")

printf("请输入系数:a,b,c,d的值:\n")

scanf("%d%d%d%d",&a,&b,&c,&d)

printf("请输入初始近庆兄陆似值X0:\n")

scanf("%f",&X1)

printf("---------------\n")

printf("敛散情况:\n")

printf("k:\tXk:\n")

printf("k=%d\tX%d=%f\n",k,k,X1)

do

{

k++

X0=X1

f=((a*X0+b)*X0+c)*X0+d

f1=(3*a*X0+2*b)*X0+c

X1=X0-f/f1

printf("k=%d\tX%d=%f\n",k,k,X1)

}

while(fabs(X1-X0)

>=0.00001)

printf("--------------------------\n")

printf("迭代的次数为:%d\n",k)

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12406322.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-25
下一篇 2023-05-25

发表评论

登录后才能评论

评论列表(0条)

保存