歐拉方法

維基百科,自由的百科全書
跳至導覽 跳至搜尋

數學計算機科學中,歐拉方法,命名自它的發明者萊昂哈德·歐拉,是一種一階數值方法,用以對給定初值的常微分方程(即初值問題)求解。它是一種解決數值常微分方程的最基本的一類顯型方法(Explicit method)。

非正式的幾何描述[編輯]

歐拉方法的圖示。待求的曲線為藍色,它的折線近似為紅色。

考慮計算這樣的一個未知曲線的形狀:它具有給定的起點並且滿足一個給定的微分方程。 這裡,所謂「微分方程」可以看作能夠通過曲線上任意點的位置而計算出這一點的切線斜率的公式。

思路是,一開始只知道曲線的起點(假設為),曲線其他部份是未知的,不過通過微分方程,的斜率可以被計算出來,也就得到了切線。

順著切線向前走一小步到點。如果我們假設是曲線上的一點(實際上通常不是),那麼同樣的道理就可以確定下一條切線,依此類推。在經過幾步之後,一條折線就被計算出來了。一般情況下,這條折線與原先的未知曲線偏離不遠,並且任意小的誤差都可以通過減少步長來得到(雖然對於剛性方程而言會比較複雜)。

歐拉方法的推導[編輯]

圖示為方程的數值積分。藍色為歐拉法,綠色為中點法,紅色為精確解。所用步長為
圖示為同一個方程在步長時的結果。可以看出中點法比歐拉法收斂更快。

以以下微分方程為例

希望用 y 在點 (t0,y(t0)) 附近的線性近似來得到其近似解(也就是 y泰勒展開式的前二項)。利用時間 tn 時的數值,若用單步的歐拉方法,可得到時間 tn+1 = tn + h 時的近似值如下:

歐拉方法是一種顯型方法,也就是說 的解是 , 的顯函數。

歐拉方法可以求解一階的微分方程,而任何階的微分方程都可以表示成一階的微分方程。

對於微分方程

可以通過新設輔助變量 ,得到以下的等價方程

這是一個以為變量的一階系統,因此可以用歐拉法求解,也可以使用其他的一階數值方法。[1]

應用例題[編輯]

設微分方程為 ,初始值為 ,試用歐拉方法求 的近似值,步長為

歐拉法為:

首先求(當),的定義為,因此有

透過以上步驟,求得解曲線在點的切線斜率。回顧直線斜率的定義:變化量和變化量的比值,亦記作

接著是

重複以上步驟求出的值。

由於歐拉法屬於遞歸算法,把運算整理成表格也許有助於避免計算錯誤。

1 0 1 1 1 2
2 1 2 1 2 4
4 2 4 1 4 8

局部截尾誤差[編輯]

歐拉法的局部截尾誤差(Local truncation error, LTE)是指在實施一次歐拉法所產生的誤差,是指經過一步的數值解與在時精確解的誤差。數值解由以下給出:

對於精確解,我們使用泰勒級數展開給出:

歐拉法的局部截尾誤差為:

擁有三階有界導數時,這個結果是成立的。[2]

結果顯示:當步長很小時,局部截尾誤差近似與 成比例。也就是說,歐拉法沒有其他的高階方法如龍格-庫塔法線性多步法精確,這些方法的局部截尾誤差與p>2)成比例。

全局截尾誤差[編輯]

全局截尾誤差(Global truncation error, GTE)是指在一個固定時間時的誤差,但是很多步之後該方法需要以從初始時間到達該時間來計算。全局截尾誤差可以看做是一個每一步的局部截尾誤差的累積效應。[3] 經過的步驟數為,而每步的誤差則正比於。因此,可以預期全局截尾誤差是正比於的。[4]

這個直觀的推測可以被嚴謹地證明。如果解存在二階有界導數,並且關於利普希茨連續的,那麼全局截尾誤差是有界的:

其中 是在給定區間內的二階導數的上界,的利普希茨常數。[5]

這種精確的形式其實是沒有什麼意義的,通常情況下這個上界都會嚴重高估了歐拉法所造成的實際誤差。[6]重要的是,這顯示了全局截尾誤差是近似正比於的,所以歐拉法被稱為是一階的。[7]

註腳[編輯]

  1. ^ Butcher 2003,第3頁; Hairer,Nørsett & Wanner(1993),第2頁
  2. ^ Butcher 2003,第60頁
  3. ^ Atkinson 1989,第344頁
  4. ^ Butcher 2003,第49頁
  5. ^ Atkinson 1989,第346頁; Lakoba 2012,公式 (1.16)
  6. ^ Iserles 1996,第7頁
  7. ^ Butcher 2003,第63頁

參考文獻[編輯]