微分方程的数值解法之欧拉方法
生活随笔
收集整理的這篇文章主要介紹了
微分方程的数值解法之欧拉方法
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
'''歐拉方法'''
#所求常微分方程
f_x=input('y\'=')
def fy(x,y):return eval(f_x)#原方程的精確解
f_e=input('y =')
def fe(x,y):return eval(f_e)#輸入已知條件
def Condition(x,y,h1,N1):a = float(input('x下限:'))b = float(input('x上限:'))h1 = float(input('步長h:'))x = float(input('初值x:'))y = float(input('初值y:'))N1 = (b-a)/h1return x,y,h1,N1#歐拉方法
def Euler(x_i,y_i,h1,N1):n=0ys=[] #創(chuàng)建一個空列表,存儲y_i1while n<N1:n+=1x_i1=x_i+h1y_i1=y_i+h1*fy(x_i,y_i)ys.append(y_i1)x_i=x_i1y_i=y_i1return ys
#調(diào)用所建立函數(shù)
x0=y0=h=N=0
x0,y0,h,N=Condition(x0, y0, h, N)
ans = Euler(x0, y0, h, N)
print(" xi 歐拉法yi 精確解y(xi) 誤差")
for i in range(1,int(N)+1):xi=x0+h*i #xi取值exact = fe(xi, y0) #帶入xi計算精確解err=abs(exact-ans[i-1]) #計算歐拉方法與精確解誤差print("{x:.2f} --> {y: .6f} --> {e:.6f} --> {err:.6f} ".format(x=xi, y=ans[i-1],e=exact,err=err))
input("輸入任意鍵結(jié)束")
運行結(jié)果:
剛剛開始學(xué)習(xí)python,也查詢了一些資料,改寫可這個代碼。因為自己為數(shù)學(xué)專業(yè),這些方法偶爾會用到,就選擇利用input() 輸入方法,運行后輸入給定信息 ,得到答案。打包為exe文件,方便使用。
總結(jié)
以上是生活随笔為你收集整理的微分方程的数值解法之欧拉方法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: PMO的部门职责和未来发展方向
- 下一篇: 背景图片自适应大小(平铺)