五種歐拉法求解一階常微分方程(MATLAB)

1. 歐拉法
由拉格郎日中值定理,在區(qū)間內(nèi)必定存在
,使得:
所以。如果知道
,代入這個(gè)遞推公式,那么遞推過(guò)程得到的序列
,沒(méi)有誤差。但求
往往很困難,常用一個(gè)易求的值近似地代替
。顯式歐拉法、隱式歐拉法、梯形公式法、中點(diǎn)歐拉方法的區(qū)別是對(duì)
和
的近似方法不同。
(1)顯式歐拉法
顯式歐拉法把近似為區(qū)間
的起點(diǎn),即
顯式歐拉法是單步法,每一輪遞推只用到前面一輪遞推的結(jié)果。歐拉公式具有明顯的幾何意義,就是用折線近似代替方程的解曲線,因而常稱為歐拉折線法。由泰勒展開(kāi)式可知顯式歐拉法具有1階精度。
顯式歐拉法在步長(zhǎng)過(guò)大時(shí)誤差較大;在步長(zhǎng)較小時(shí)需要多步遞推,可能出現(xiàn)誤差累積的現(xiàn)象。由于顯式歐拉法的精度不高,因此在實(shí)際應(yīng)用中用的較少。
(2)隱式歐拉法
隱式歐拉法把近似為區(qū)間
的終點(diǎn),即
隱式歐拉法是隱式方法,遞推公式的右端包含未知量,故隱式歐拉法需要求解方程,得出
。
為避免求解方程,常用顯式歐拉法的計(jì)算結(jié)果作為迭代的初值,把隱式歐拉法的遞推公式作為迭代公式反復(fù)迭代,得到迭代序列
。如果步長(zhǎng)
足夠小,那么迭代序列收斂于
。
隱式歐拉法具有1階精度。
(3)梯形公式法
梯形公式法把近似為區(qū)間
的起點(diǎn)和終點(diǎn)導(dǎo)數(shù)的平均值。遞推公式為:
顯然,梯形公式法是隱式方法,需要求解方程。為避免解方程,常用顯式歐拉法的計(jì)算結(jié)果作為迭代的初值,把梯形公式法的遞推公式作為迭代公式反復(fù)迭代,得到迭代序列
。如果步長(zhǎng)
足夠小,那么迭代序列收斂于
。
梯形公式法具有2階精度。
(4)中點(diǎn)歐拉法
中點(diǎn)歐拉法把近似為區(qū)間
的中點(diǎn)
,即
中點(diǎn)歐拉方法是雙步法,需要2個(gè)初值和
才能啟動(dòng)遞推過(guò)程。一般先用單步法由點(diǎn)
計(jì)算出
,再用中點(diǎn)歐拉方法反復(fù)地遞推。
中點(diǎn)歐拉方法具有2階精度。
(5)改進(jìn)的歐拉法
改進(jìn)的歐拉法是一種預(yù)測(cè)—校正方法,它的每一輪遞推包括預(yù)測(cè)和校正這2個(gè)步驟:
(1)先用顯式歐拉公式計(jì)算出,
,即預(yù)測(cè);
(2)再用梯形公式迭代一次,即校正。
改進(jìn)的歐拉法精度比顯式歐拉法高,不需要解方程,是一種更實(shí)用的方法。
2. 歐拉法MATLAB算法實(shí)現(xiàn)
如下算法實(shí)現(xiàn)五種形式的歐拉法,根據(jù)用戶選擇ode_method的方法,采用不同的歐拉法求解。
3. 歐拉法算法測(cè)試
例1:采用五種歐拉法求解一階微分方程,已知解析解為。
測(cè)試代碼如下:
測(cè)試結(jié)果:輸出參數(shù)為結(jié)構(gòu)體,如顯式歐拉法的輸出結(jié)果:
可視化圖像如圖1和圖2所示,可見(jiàn)較小的步長(zhǎng)可獲得較高的精度,但注意計(jì)算時(shí)的舍入誤差和誤差累積。

