前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >用不动点法和牛顿迭代法求解函数根-Julia

用不动点法和牛顿迭代法求解函数根-Julia

原创
作者头像
Pulsar-V
发布2018-11-29 15:11:48
1.6K0
发布2018-11-29 15:11:48
举报
文章被收录于专栏:Pulsar-VPulsar-V

对方程

不动点迭代法undefined原方程可转换为

由不动点迭代法得

牛顿迭代法undefined给定一个初始x0,做一条垂线与函数f(x)相交,得到的交点为(x0,y0),过该点在f(x)上作一条切线,得到该切线与x轴的交点为(x1, 0)。之后对(x1, 0)重复上述步骤,直到与x轴的交点的横坐标xn逐渐收敛到f(x)=0的根。也就是对于第i+1次迭代(i>=0),有下列等式

Julia代码如下

print("Input max iter times: ")
f=x->(x*x-3*x+2-exp(x))
g=x->(2*x-3-exp(x))
h=x->(x*x+2-exp(x))/3

n=parse(Int, readline())
t=n
x = -1
newton_x=-1
x1 = h(x)
newton_y=newton_x-f(newton_x)/g(newton_x)
println("不动点迭代法               牛顿迭代\n")
println("step$(0): $(x)                     step$(0):$(newton_y)")
while ((abs(x-x1)>=(1e-12))||(abs(newton_x-newton_y)>=(1e-12)))&&(n!=0)
	x = x1
    newton_x = newton_y
    println("step$(t-n): $(x1)     step$(t-n):$(newton_y)")
    x1 = h(x)
    newton_y=newton_x-f(newton_x)/g(newton_x)
	n-=1
end
println("step$(t-n): $(x1)     step$(t-n):$(newton_y)");

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档