C语言编程中用牛顿迭代法求解方程

C语言编程中用牛顿迭代法求解方程,第1张

#include<stdio.h>

#include<math.h>

int main()

{

float x1,x,f1,f2static int count=0

x1=1.5//定义初始值

do

{

x=x1

f1=x*(2*x*x-4*x+3)-6

f2=6*x*x-8*x+3//对函数f1求导

x1=x-f1/f2 count++

}while(fabs(x1-x)<=1e-5)

printf("%8.7f\n",x1)printf("%d\n",count)

return 0

}

//2x3-4x2+3x-6//根据我改了初始值,查看结果,表明:改变初始值得到的结果并不一样,但是迭代的次数并没有改变!!

给你一点提示。

牛顿迭代法要计算

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

#include <stdio.h>

#include <math.h>

int main(void)

{

double x, x0, d

x0 = 0

do {

x = x0 - (x0 - exp(-x0)) / (1 + exp(-x0))

d = x - x0

x0 = x

} while (d >= 1e-10)

printf("%.10f", x)

return 0

}


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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存