中點法解常微分方程(組)

閱讀原文

預備知識 常微分方程(組)的數值解

   我們先來嘗試用歐拉法解一階微分方程

y(t) = y   (1)

令初始條件為 y(0)=1 .令步長為 h=0.5 , 步數為 5 , 結果如圖 1 所示(代碼見詞條最後).

圖1:歐拉法數值解(藍)和解析解(紅)

   我們知道該方程的解析解為 y = mathrm e^t . 對比數值解和解析解, 不難分析出誤差產生的原因: 我們僅用每段步長區間左端的導數預測整個區間的曲線增量. 如果我們能利用每個區間中點的導數計算計算整個區間的增量, 這個預測將會比歐拉法更精確.

   考慮微分方程 y′(t)=f(y,t) 在區間 [t_n, t_{n+1}] 的曲線, 若我們已知區間左端的函數值為 y_n , 我們可以先用微分近似估計曲線中點的函數值為

yleft( t_n + frac h2
ight) = y_n + frac h2 f(y_n, t_n)   (2)

然後再求出這個近似中點的導數為

yleft( t_n + frac h2
ight) = fleft[ y_n + frac h2 f(t_n, y_n), t_n + frac h2
ight]   (3)

最後我們利用這個導數估算該區間的曲線增量

(剩下部分見頂部的「閱讀原文」)

推薦閱讀:

線性方程組(7)-最小殘差法
線性方程組(6)-阿諾爾迪演算法
線性方程組(8)-共軛殘差法
常微分方程(組)的數值解

TAG:計算物理學 | 數值分析 | MATLAB |