Learning Objectives
- 說明微分方程的解是函數,並以代入法檢查一個函數是否為解
- 從斜率場讀出解的走向,說明初始值如何確定其中一條解
- 找出平衡解並判斷它穩定或不穩定
- 以歐拉法手算數步,說明步長與誤差的關係
- 說明步長過大時歐拉法發散的原因
微分方程與斜率場
熱咖啡放在桌上,每一分鐘的溫度未必已知,但有一條規則可循:溫度與室溫相差越多,下降越快。銀行帳戶亦然,已知的是「餘額每年增加 2%」,而不是每一年的餘額。
這類規則的數學形式稱為微分方程(differential equation):聯繫函數與其導數的等式,例如
$$y' = x - y$$
其意義為:在 $(x, y)$ 這個位置,函數的斜率必須是 $x - y$。
微分方程的解是一個函數,不是一個數。檢查一個函數是否為解時,將其代入並確認等式是否對每個 $x$ 都成立。例如 $y = x - 1$:左邊 $y' = 1$,右邊 $x - y = x - (x-1) = 1$,兩邊相等,所以它是解。$y = x - 1 + 2e^{-x}$ 也是解:左邊 $1 - 2e^{-x}$,右邊 $x - (x - 1 + 2e^{-x}) = 1 - 2e^{-x}$。
解不只一個,$y = x - 1 + Ce^{-x}$ 對任何常數 $C$ 都成立。要確定其中一條,需要額外的條件,稱為初始值:例如 $y(0) = 1$ 代入得 $-1 + C = 1$,所以 $C = 2$。
不解方程式也能觀察解的形狀。 方程式 $y' = f(x, y)$ 在平面上每一點都指定了一個斜率。在許多格點上各畫一小段具有該斜率的線段,所得的圖稱為斜率場(slope field)。
解的曲線必須在每一點都與該處的小線段相切。因此斜率場如同水流的方向:從一個起點順著方向延伸,即得一條解;起點改變,得到的是另一條解。
下方藍色的曲線是從起點出發的解,由程式以很小的步長數值計算。兩個方程式可以切換,也可以自行輸入 $f(x, y)$。
平衡解與唯一性
若 $f(x,y)$ 僅取決於 $y$,平衡解的穩定性可直接從導數判斷。以 $f(y) = y(2-y)$ 為例:
- $y$ 在 0 和 2 之間時 $f > 0$,解遞增;$y > 2$ 時 $f < 0$,解遞減。因此 $y = 2$ 兩側的解都向其靠近,此平衡解是穩定的
- $y$ 略小於 0 時 $f < 0$,解向下遠離;$y$ 略大於 0 時解向上遠離。$y = 0$ 是不穩定的
解的交叉。 若 $f$ 和 $\frac{\partial f}{\partial y}$ 在 $(x_0, y_0)$ 附近都連續,則通過這一點的解在 $x_0$ 附近存在且唯一,所以兩條解不會在此相交。此定理有兩點須注意:
- 不唯一:$y' = 2\sqrt{y}$($y \ge 0$)、$y(0) = 0$。$y = 0$ 是解,$y = x^2$($x \ge 0$)也是解。這裡 $\frac{\partial f}{\partial y} = \frac{1}{\sqrt{y}}$ 在 $y = 0$ 不連續
- 定理只保證附近:$y' = y^2$、$y(0) = 1$ 的解是 $y = \frac{1}{1-x}$,$f$ 處處平滑,解卻在 $x = 1$ 趨向無窮大。因此「存在」僅在起點附近有保證,並不保證解可延伸至任意位置
歐拉法
大部分微分方程無法寫出解的公式,此時可依斜率場逐步前進。在 $(x_n, y_n)$ 處,斜率是 $f(x_n, y_n)$;以切線近似函數(線性近似,$\Delta y \approx y' \cdot \Delta x$),前進水平距離 $h$:
$$y_{n+1} = y_n + h\,f(x_n, y_n), \qquad x_{n+1} = x_n + h$$
此即歐拉法(Euler's method),$h$ 稱為步長。每一步都以「起點的斜率」涵蓋整段,而真解的斜率持續變化,所以每一步都會產生些微偏差。
手算一次 $y' = y$、$y(0) = 1$、$h = 0.5$(正確的解是 $y = e^x$):
| $n$ | $x_n$ | $y_n$ | 斜率 $f = y_n$ | $y_{n+1} = y_n + 0.5\,y_n$ |
|---|---|---|---|---|
| 0 | 0 | 1 | 1 | 1.5 |
| 1 | 0.5 | 1.5 | 1.5 | 2.25 |
到達 $x = 1$ 時得到 2.25,正確值 $e \approx 2.71828$,相差約 0.468。此解為凹向上,切線始終在曲線下方,所以歐拉法在此持續低估。
動畫:歐拉法的迴圈程式
本動畫不需要程式基礎:這支程式執行的是前述公式,逐步重複。請先觀察中間三行如何更新 $y$ 和 $x$,再觀察最後的輸出:步數每次加倍時誤差的變化。
歐拉法的誤差階
輸出的誤差如下:
| 步長 $h$ | 誤差 | 和上一列的比值 |
|---|---|---|
| 0.5 | 0.468282 | |
| 0.25 | 0.276876 | 1.69 |
| 0.125 | 0.152497 | 1.82 |
| 0.0625 | 0.080353 | 1.90 |
| 0.03125 | 0.041292 | 1.95 |
比值趨近 2:步長減半,誤差約減半。原因是當 $f$ 足夠平滑時,每一步因直線近似產生的誤差約與 $h^2$ 成正比(泰勒展開的二次項),而到達固定終點需要 $\frac{1}{h}$ 步,累積誤差與 $h$ 成正比。這種方法稱為一階方法。
準確度每增加一位,步數須增加十倍。因此實務上常用更高階的方法,例如互動練習中作為參考答案的 RK4(四階的 Runge-Kutta),其每一步多次計算斜率再取加權平均,步長減半時誤差約縮小為 $\frac{1}{16}$。
歐拉法的數值穩定性
將歐拉法的公式用於 $y' = -3y$:
$$y_{n+1} = y_n + h(-3y_n) = (1 - 3h)\,y_n$$
因此每一步都乘上同一個數 $1 - 3h$,$n$ 步後為 $(1-3h)^n$:
| 步長 | $1 - 3h$ | 數值解 |
|---|---|---|
| $0 < h < \frac{1}{3}$ | 在 0 和 1 之間 | 單調趨近 0,與真解的形狀相同 |
| $\frac{1}{3} < h < \frac{2}{3}$ | 在 $-1$ 和 0 之間 | 正負交替,振幅縮小 |
| $h > \frac{2}{3}$ | 小於 $-1$ | 正負交替,振幅變大,發散 |
一般而言,$y' = -\lambda y$($\lambda > 0$)須 $h < \frac{2}{\lambda}$ 才不會發散。$\lambda$ 越大,解衰減得越快,歐拉法反而越需要小步長。
須注意真解 $e^{-3x}$ 並無異常。數值解發散不代表方程式的解發散,數值結果發散時應先檢查步長。
重點整理
- 微分方程是變化率的規則,解是函數;以代入檢查,以初始值確定其中一條
- 斜率場在每一點畫出解必須有的斜率,解的曲線和小線段相切
- 平衡解是讓斜率恆為 0 的水平線;附近的解向其靠近稱為穩定,遠離稱為不穩定
- $f$ 和 $\frac{\partial f}{\partial y}$ 連續時,解在起點附近存在且唯一,但不保證可延伸至任意位置(可能在途中趨向無窮大);條件不成立時可能不唯一
- 歐拉法:$y_{n+1} = y_n + h\,f(x_n, y_n)$,一階方法,步長減半誤差約減半
- 步長過大會使數值解振盪或發散,這是方法造成的,不代表真解如此
下一課以積分求出解,討論指數成長、半衰期、冷卻與 logistic 模型。更完整的文字說明見優微積分讀本的一階微分方程。
小測驗
哪一個函數同時滿足 $y' = 2y$ 和 $y(0) = 3$?
$y' = x + y$,目前位於 $(1, 2)$,步長 $h = 0.1$。歐拉法的下一個 $y$ 是多少?
以歐拉法計算至固定的終點,步長 $h$ 減為一半時,當 $h$ 足夠小,誤差大約變成?
$y' = -10y$、$y(0) = 1$,以歐拉法取 $h = 0.3$,數值解的行為為何?
$y' = y(2-y)$、$y(0) = 3$,解的長期行為為何?