牛顿法解方程举例

编程入门 行业动态 更新时间:2024-10-06 21:26:35

牛顿法解<a href=https://www.elefans.com/category/jswz/34/1766651.html style=方程举例"/>

牛顿法解方程举例


def cal(f,step,x0,ret):'''f 方程  step 精度  x0 初始值  ret 方程目标值'''f2=lambda x: f(x)-ret #转化方程f3=lambda x: x+step/(1-f2(x+step)/f2(x)) #转化方程的切线 求与 X轴交点x1=f3(x0)# y1=f2(x1)return x1def test1(ret):def f1(x):return 5*x*x+x-5print('y=5*x*x+x-5')x0=0for i in range(10):x1=cal(f1,0.000001,x0,ret)y1=f1(x1)        if abs(y1-ret)<0.000001:print('x,y',x1,y1)breakx0=x1
def test2():import mathdef f2(x,y):'''点M(x,y) 到 点 A(0,0) 的距离比到点 B(0,1)的距离的2倍少1'''MA=math.sqrt(x*x+y*y) #到点A的距离MB=math.sqrt( x*x+(y-1)*(y-1) )return MA-2*MB+1lt=[i/200 for i in range(0,1000)]rtlt=[]for j in lt:x0=0.1y0=jdef f3(x):return f2(x,y0)for _ in range(20):ret=0x1=cal(f3,0.000001,x0,ret)y1=f3(x1)if abs(y1-ret)<0.000001: rtlt.append([x1,y0])breakx0=x1import matplotlib.pyplot as pltxl=[i[0] for i in rtlt]yl=[i[1] for i in rtlt]plt.figure()ax=plt.gca()ax.scatter(xl,yl,1)plt.show()def test3():import mathdef f2(x,y):return 3*x*x+4*y*y+-5*x*y-6*x-7*y+8lt=[i/100 for i in range(0,1000)]rtlt=[]for j in lt:x0=-0.1y0=jdef f3(x):return f2(x,y0)for _ in range(50):ret=0x1=cal(f3,0.000001,x0,ret)y1=f3(x1)if abs(y1-ret)<0.000001: rtlt.append([x1,y0])breakx0=x1import matplotlib.pyplot as pltxl=[i[0] for i in rtlt]yl=[i[1] for i in rtlt]plt.figure()ax=plt.gca()ax.scatter(xl,yl,1)plt.show()test1(0)
test1(20)
test2()
test3()#要点是 如果 有 x y两个变量. 要先分析变量值的定义域 合理选择范围
#在定义范围内,将一个变量做成列表枚举
#另一个变量求解,然后做成值对,画图# 简单举例 未考虑 0 除问题

 

更多推荐

牛顿法解方程举例

本文发布于:2024-02-24 21:02:12,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1696639.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:方程

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!