01 / 不先求出完整函數
每個位置,都先留下一個斜率。
就算還沒解出公式,方程也能告訴你:在每個位置,曲線該往哪個方向走。把這些方向畫滿,就是方向場。
前兩頁從 y′=y 找到精確解,再畫出曲線。現在反過來:假設還不知道解的公式,能不能只從方程看出它大概怎麼走?
把一階方程寫成 y′=f(x,y)。在平面上選一個點 (x,y),把座標代進 f,就得到解若經過這個點,必須具有的斜率。在那裡畫一小段這樣傾斜的線,再換很多個點做同樣的事,便得到方向場,也稱斜率場。
| 平面上的點 | 代入規則 | 由左往右看 |
|---|---|---|
| (0, 1) | f(0,1)=1 | 向上傾斜 |
| (1, 1) | f(1,1)=1 | 和上一點相同 |
| (0, 0) | f(0,0)=0 | 水平 |
| (0, −2) | f(0,−2)=−2 | 向下傾斜 |
所以 y′=y 的同一水平列,線段方向都相同。上半平面越高,正斜率越大;下半平面越低,負斜率的絕對值越大。這些短線描述局部限制,還沒有替你選定初始點。
斜率是座標中的 Δy/Δx。若 x 軸一單位與 y 軸一單位在螢幕上長度不同,斜率 1 不會看起來剛好是 45°。本頁依兩軸刻度換算方向;短線採固定畫面長度,長短不表示變化率大小。
02 / 延續初始條件
選定起點,讓曲線沿著規則前進。
跟著方向走,不是黏著某一小段直線走。往前一步高度變了,該走的方向也跟著變。
上一頁選出的初始點,可以直接帶到這頁。若從 (0,1) 出發,已知精確解是 eˣ;它在任一位置的切線,方向都必須符合當地短線。若從 (0,−1) 出發,就改成 −eˣ;從 (0,0) 出發,得到零解。
注意「符合方向」不是讓整條曲線黏住某一小段直線。曲線前進之後,到達新的高度,就會遇到新的斜率。對正值的 y′=y 解而言,高度增加,斜率也增加,所以軌跡逐漸往上彎。
先取消「顯示精確解曲線」,只看灰色方向。猜猜從初始點往右會如何走,再打開綠色曲線核對。圖能幫助形成猜測,但有限個短線或像素不能證明某個函數是解;前兩頁的代回與推導仍然必要。
兩條解曲線一定不會交叉嗎?
對 y′=y,同一點唯一決定 C,因此兩條不同的解不會交叉。一般方向場是否具有這個性質,要看初值問題是否唯一。上一頁 y′=3y2/3 的例子中,零解和 x³ 就通過同一個初始點;不能只憑一張圖,就宣稱所有方程的解都不相交。
03 / 從局部線性近似開始
把「大概往哪走」變成計算。
Euler 法把「大概往那邊走」寫成算式:量斜率、走一小步、再量一次。
用 xₙ 表示第 n 步的位置,yₙ 表示目前的近似高度。下標 n 是步數,從 0 開始。選定一個正步長 h,表示這一步沿 x 軸往右走多遠。
先在目前近似點算斜率。
mₙ = f(xₙ, yₙ)暫時把這個斜率視為整步不變。用直線估計高度變化。
Δy ≈ h mₙ加上這段變化,得到下一個近似點。
xₙ₊₁ = xₙ + h
yₙ₊₁ = yₙ + h f(xₙ, yₙ)在新點重新算斜率。每一步都更新,不能一直沿最初的斜率走。
這就是前向 Euler 法,本頁簡稱 Euler 法。更新公式中的等號定義了演算法算出的 yₙ₊₁;它並不宣稱 yₙ₊₁ 等於精確解在同一位置的值。
為什麼只有近似?真實曲線通常在一小步內就已經改變斜率,而 Euler 用一條直線走完整步。下一步又從近似點出發,所以誤差也可能隨著計算累積。
yₙ 與 y(xₙ) 要分清楚:前者是演算法累積得到的數,後者是精確解。Euler 算的是 f(xₙ,yₙ),沒有偷偷拿精確高度當下一步的起點。
04 / y′=y,y(0)=1
不用跳步,從 1 算到 2.25。
一步一步照著算,數字才有感覺。這裡不跳步,每一步都寫出來。
本節固定初始點 (0,1),步長 h=0.5,終點 x=1。若互動帶入了不同的初始點,畫面上的數值會隨它改變;下面是固定範例,方便逐行核對。
起點。x₀=0,y₀=1,所以目前斜率 f(0,1)=1。
第一步,從 x=0 到 x=0.5。
y₁ = 1 + 0.5 × 1 = 1.5到達近似點 (0.5,1.5)。現在重新算斜率,得到 1.5。
第二步,從 x=0.5 到 x=1。
y₂ = 1.5 + 0.5 × 1.5 = 2.25所以 Euler 的終點近似值是 2.25。
和同一位置的精確值比較。
y(1) = e ≈ 2.718282
|y₂ − y(1)| ≈ 0.468282
如果把兩步都沿斜率 1 前進,就會得到 2。那是一直沿初始切線外推,並沒有依 Euler 法在每一步重新更新斜率。
把步長縮小,並比較同一個終點
| 步長 h | 步數 | Euler 終值 | 絕對誤差 |
|---|---|---|---|
| 0.5 | 2 | 2.250000 | 0.468282 |
| 0.25 | 4 | 2.441406 | 0.276876 |
| 0.125 | 8 | 2.565785 | 0.152497 |
這個例子中,步長變小,結果更接近 e,但有限步長仍有誤差。比較時一定固定初始條件、方程和終點;若比較不同位置,數字就不能直接回答「哪個步長比較準」。
這個例子也能直接核對所有步數
因為 f(x,y)=y,每一步都是 yₙ₊₁=(1+h)yₙ。從 y₀=1 開始,連乘 n 次,得到 yₙ=(1+h)ⁿ。因此兩步是 1.5²,四步是 1.25⁴,八步是 1.125⁸。這是 Euler 近似數列的精確公式;微分方程的精確解仍是 eˣ。
是不是把步長減半,誤差就一定減半?
不是每次都剛好一半。在固定有限區間、解與 f 具有足夠光滑性且誤差傳播受控制時,前向 Euler 的全域誤差是一階,通常寫成 O(h):h 充分小時,誤差可由某個常數乘 h 控制。這是條件下的量級敘述,不保證任意方程、任意步長的誤差都單調下降,也不消除浮點運算誤差。
05 / y′=x−y
水平的短線,不一定連成一條解。
把所有「斜率為 0」的位置連起來,那條線通常不是解。經過那裡,不代表它自己也遵守規則。
將互動切換成 y′=x−y。在同一高度移動 x,斜率也會改變:例如 (0,1) 的斜率是 −1,(1,1) 的斜率是 0,(2,1) 的斜率是 1。因此這次不能再只看高度。
所有滿足 y=x 的點,右側 x−y 都為 0,方向場在這些點留下水平短線。可是把函數 y=x 代進方程:左側 y′=1,右側 x−x=0,兩者不相等。連接「斜率為零的位置」得到的斜線,本身不是解。
這條 y=x 是零斜率的等斜線:描述哪些位置具有相同斜率。它和解曲線是不同物件。看到某一個點的短線水平,也不能因此判斷整條解是水平線。
切換後的綠色精確解從哪裡來?
這是後續一階線性方程的例子。此處先提供可直接驗證的公式:
求導得到 y′=1−Ae−(x−x₀);計算右側 x−y 也得到同一式,因此符合方程。再代入 x=x₀,得到 x₀−1+A=y₀,符合初始條件。
特別在 (0,1) 出發時,A=2,解為 x−1+2e⁻ˣ。所以 x=1 的精確值是 2/e≈0.735759;h=0.5 的 Euler 終值則是 0.5。完整的求解方法會在「一階線性微分方程」展開。
06 / 帶走一套讀圖方式
分清規則、曲線和近似。
方向場是規則、初始點是選擇、Euler 是近似——三件事分開講,才不會把折線當成答案。
方向場由方程決定;初始條件選擇要追蹤的解;Euler 法用有限步長近似它。這三件事分開,才不會把畫面上的金色折線當成新的精確解。
互動只往右算一個 x 單位,並且只提供三種步長。這是觀察範圍的選擇,並不表示方程只能往右解、只能走一個單位,或所有數值方法都採相同步長。畫面邊界、數值近似失準和精確解不再存在,也必須分別判斷。
1. y′=y,從 (0,1) 用 h=0.25 走第一步,高度是多少?
看完整推理
初始斜率是 1,所以新高度為 1+0.25×1=1.25,新位置是 x=0.25。這是 Euler 值;精確高度 e0.25≈1.284025,兩者已經不同。
2. 對 y′=x−y,點 (2,2) 的短線水平,能推論 y=2 是解嗎?
看完整推理
不能。y=2 的導數處處為 0,但右側是 x−2,只在 x=2 為 0。這又回到第一頁的原則:在一點符合,不代表整個區間都符合。
3. 對 y′=y,從零初始高度出發,Euler 會偏離零嗎?
看完整推理
在本頁的精確初值 0 下,每一步都是 0+h×0=0,所以 Euler 和精確零解相同,誤差為 0。數值方法是近似方法,不表示它對每個特殊解都一定產生非零誤差。
從「什麼叫解」到「怎麼選解」,再到「不知道公式時如何觀察與近似」,這三頁完成了第一段連續閱讀。後續會把方程的結構拆清楚,逐步建立各種解法及它們的適用條件。
核對與延伸
來源與範圍
這三頁以一個自變數的常微分方程為主,使用無因次的數學例子。畫面只顯示有限區域;曲線離開畫面,不代表解在那裡終止。
圖像幫助觀察,代回運算才檢查例子是否滿足方程。存在與唯一性的一般理論、更多解析解法,留在後續主題詳細展開。
- Jiří Lebl · Introduction to differential equations:方程、解與驗解的定義。
- Jiří Lebl · Slope fields:方向場及初值解的條件。
- Jiří Lebl · Euler’s method:逐步近似與誤差。
- MIT OpenCourseWare · First Order Differential Equations:一階微分方程的概念、幾何及數值觀點。