數值分析與科學計算中,反向歐拉法或隱式歐拉法是求解常微分方程最基本的數值方法之一。其類似於(標準)歐拉法,不過是一種隱式方法。反向歐拉法的時間誤差為一階。
考慮常微分方程
![{\displaystyle {\frac {\mathrm {d} y}{\mathrm {d} t}}=f(t,y)}](https://wikimedia.org/api/rest_v1/media/math/render/svg/5e472078c4b129b89415c617fd0c9442ac61a51d)
有初值
此處函數
與初值數據
、
均未知;函數
取決於實變量
,同樣未知。數值方法產生一個序列
,使
近似於
,其中
稱為步長。
反向歐拉法計算近似值的方法是
[1]:57
異於(正向)歐拉法,後者用的是
而非
。
反向歐拉法是一種隱式方法:新近似值
在方程兩側都出現,因此該方法要求解未知
的代數方程。對非剛性問題,這可採用定點迭代法:
![{\displaystyle y_{k+1}^{[0]}=y_{k},\quad y_{k+1}^{[i+1]}=y_{k}+hf(t_{k+1},y_{k+1}^{[i]}).}](https://wikimedia.org/api/rest_v1/media/math/render/svg/9e8e8501d252780d672b65b22097d0b01afdc9c0)
若序列收斂(在給定精度內),則該方法會將其極限作為新的近似
。[1]:57
或者,也可以使用牛頓–拉斐森法求解代數方程。
將微分方程
自
積分到
,有
![{\displaystyle y(t_{n+1})-y(t_{n})=\int _{t_{n}}^{t_{n+1}}f(t,y(t))\,\mathrm {d} t.}](https://wikimedia.org/api/rest_v1/media/math/render/svg/f9c3dc7da20a16c723fdcca90aa568e0d6ca88ff)
現在用右手矩形法近似計算右式的積分:
![{\displaystyle y(t_{n+1})-y(t_{n})\approx hf(t_{n+1},y(t_{n+1})).}](https://wikimedia.org/api/rest_v1/media/math/render/svg/55074a5106927ef4278902b8318518f13d87aedc)
最後,用
應近似於
的性質,就得到了反向歐拉法公式。[1]:57
若用左手矩形法,同樣的推導會得到(標準)歐拉法。
圓盤外的粉色區域是反向歐拉法的穩域。
用大O符號表示反向歐拉法的局部截斷誤差(LTE)(定義為迭代一步產生的誤差)為
。特定時刻
的誤差為
,這是說該方法的階數為1。一般來說,具有
LTE的方法定義為k階。
反向歐拉法的絕對穩域是以1為圓心,半徑為1的圓盤在平面內的補集,如圖所示。[1]:70這包括整個複平面的左半部,使其適於求解剛性方程。[1]:71事實上,反向歐拉法甚至是L-穩定的。
利用反向歐拉法求解離散穩定系統的區域是半徑為0.5的圓,位於z平面的(0.5, 0)處。[2]
反向歐拉法是(前向)歐拉法的一種變體。其他變體還有半隱式歐拉法和指數歐拉法。
反向歐拉法可視為1階段的龍格-庫塔法,可用Butcher表描述:
![{\displaystyle {\begin{array}{c|c}1&1\\\hline &1\\\end{array}}}](https://wikimedia.org/api/rest_v1/media/math/render/svg/ba161e3ed2a47c2bba7805c3cf5c52f9e5eba8d8)
該方法也可看作是1步的線性多步法,是Adams–Moulton法族中的第一個方法,也是後向微分法的第一個方法。
- ^ 1.0 1.1 1.2 1.3 1.4 Butcher 2003
- ^ Wai-Kai Chen, Ed., Analog and VLSI Circuits The Circuits and Filters Handbook, 3rd ed. Chicago, USA: CRC Press, 2009.