數學 · 常微分方程 · 03

方向場Slope fields & Euler’s method

把變化規則鋪在平面上。從一個起點出發,看看局部斜率如何引導出曲線。

沿用前兩頁的 y′ = y,連接方向場、初始條件與 Euler 近似,並逐步算出誤差。

系列目錄 · 03/26

只知道下一步的方向,能走多遠?

灰色短線顯示每個點的斜率。讓 Euler 法依照當下斜率走直線,再和精確解比較。

精確解Euler 近似(金色虛線)初始點/垂直誤差
y′=y,y(0)=1:h=0.5 的 Euler 近似在 x=1 得到 2.25,精確值為 e。
兩軸的每單位畫面長度不同;斜率請用座標變化判斷。圖只顯示有限區域,線段長度也不代表速度大小。

起點 (0, 1) → 終點 x = 1

回上一頁改初始點 ↗

第 2 / 2 步 · x = 1

目前 Euler 值(約)2.25
同一位置精確值(約)2.7183
絕對誤差(約)0.4683

01 / 不先求出完整函數

每個位置,都先留下一個斜率。

就算還沒解出公式,方程也能告訴你:在每個位置,曲線該往哪個方向走。把這些方向畫滿,就是方向場。

前兩頁從 y′=y 找到精確解,再畫出曲線。現在反過來:假設還不知道解的公式,能不能只從方程看出它大概怎麼走?

把一階方程寫成 y′=f(x,y)。在平面上選一個點 (x,y),把座標代進 f,就得到解若經過這個點,必須具有的斜率。在那裡畫一小段這樣傾斜的線,再換很多個點做同樣的事,便得到方向場,也稱斜率場。

對 y′=y,斜率只由高度決定
平面上的點代入規則由左往右看
(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 軸往右走多遠。

  1. 先在目前近似點算斜率。

    mₙ = f(xₙ, yₙ)
  2. 暫時把這個斜率視為整步不變。用直線估計高度變化。

    Δy ≈ h mₙ
  3. 加上這段變化,得到下一個近似點。

    xₙ₊₁ = xₙ + h
    yₙ₊₁ = yₙ + h f(xₙ, yₙ)
  4. 在新點重新算斜率。每一步都更新,不能一直沿最初的斜率走。

這就是前向 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。若互動帶入了不同的初始點,畫面上的數值會隨它改變;下面是固定範例,方便逐行核對。

  1. 起點。x₀=0,y₀=1,所以目前斜率 f(0,1)=1。

  2. 第一步,從 x=0 到 x=0.5。

    y₁ = 1 + 0.5 × 1 = 1.5

    到達近似點 (0.5,1.5)。現在重新算斜率,得到 1.5。

  3. 第二步,從 x=0.5 到 x=1。

    y₂ = 1.5 + 0.5 × 1.5 = 2.25

    所以 Euler 的終點近似值是 2.25。

  4. 和同一位置的精確值比較。

    y(1) = e ≈ 2.718282
    |y₂ − y(1)| ≈ 0.468282

如果把兩步都沿斜率 1 前進,就會得到 2。那是一直沿初始切線外推,並沒有依 Euler 法在每一步重新更新斜率。

把步長縮小,並比較同一個終點

相同初值 (0,1),相同終點 x=1
步長 h步數Euler 終值絕對誤差
0.522.2500000.468282
0.2542.4414060.276876
0.12582.5657850.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(x) = x − 1 + Ae−(x−x₀)A = y₀ − x₀ + 1,是固定常數。

求導得到 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。數值方法是近似方法,不表示它對每個特殊解都一定產生非零誤差。

從「什麼叫解」到「怎麼選解」,再到「不知道公式時如何觀察與近似」,這三頁完成了第一段連續閱讀。後續會把方程的結構拆清楚,逐步建立各種解法及它們的適用條件。

核對與延伸

來源與範圍

這三頁以一個自變數的常微分方程為主,使用無因次的數學例子。畫面只顯示有限區域;曲線離開畫面,不代表解在那裡終止。

圖像幫助觀察,代回運算才檢查例子是否滿足方程。存在與唯一性的一般理論、更多解析解法,留在後續主題詳細展開。