常微分方程的數值方法

尤拉法

/ Euler (OY-ler) /

尤拉法是沿著解行走最簡單的方式,而且正是你自己會想出來的辦法。你站在一點 (t_n, y_n)。微分方程告訴你那裡的斜率:f(t_n, y_n)。一條帶有該斜率的直線,就是曲線往哪走的最佳直線猜測。於是你沿著那條切線走一小步 h,落到一個新點。然後你忘掉那條線,讀出新點處的斜率,再沿著一條新切線走。一步一步,你用許多微小的直線段假冒出一條曲線。

精確地說,規則是 y_(n+1) = y_n + h * f(t_n, y_n)。讀出來就是:新值等於舊值加上步長乘以舊點處的斜率。就這樣,整個方法只有一行。它直接來自導數的定義——y' 約等於 (y_(n+1) - y_n) / h——重新整理以解出下一個值。因為它只用了你離開的那一點處的斜率,在踏步之前就算好,所以尤拉法是顯式的:未知量 y_(n+1) 單獨出現在左邊,直接算出,無需解任何方程。

尤拉法是整門學科的觀念基礎——每一種更花俏的方法,本質上都是這個切線步的更聰明版本。但作為實用工具它很粗糙。它的全域誤差只有一階:步長減半只讓誤差減半,所以多一位正確數字要付出十倍的工作量。在彎曲的解上,切線總是抄近路切過彎角,微小的誤差一步又一步地累積。它是你用來「理解」的方法,通常不是用來「計算」的方法。

對 y' = y, y(0) = 1 取 h = 0.1:y1 = 1 + 0.1 * 1 = 1.1;y2 = 1.1 + 0.1 * 1.1 = 1.21;y3 = 1.21 + 0.1 * 1.21 = 1.331;...走 10 步後 y10 = 2.5937,但真值 e = 2.7183。尤拉法低估了,因為曲線向上彎、離開每一條切線。

每步一行算術——直觀,但誤差大且只有一階。

尤拉法幾乎從不用於正式計算;它唯一真正的優點是把數值積分的概念講得一清二楚。別把它的簡單誤認為準確。

又称
forward Eulerthe tangent-line method尤拉方法前向尤拉法