M2.0 13 分鐘閱讀 2026年9月

M2.0 河面上的箭頭:Vector Field 與 ODE

本篇重用M0.0霧中下山:Gradient 與方向

一條河與一片葉子

你站在橋上往下看。這條河的水面不是均勻往前流的:靠岸的地方慢,中間快;過了橋墩以後水流微微往左彎,再往前又擺回來。假設你有一張完整的「水流地圖」——河面上每一個位置都標好了此刻水往哪個方向流、流多快。

現在你把一片葉子輕輕放在腳下的水面上。一分鐘後,它會在哪裡?

先用直覺回答,並且順手寫下兩件事:你有多確定?依據是什麼?大多數人的答案是「它會順著箭頭走,一步一步接下去就知道了」。這個答案是對的。但請再多問自己一句:如果我在同一個位置放兩片葉子,它們一定會漂到同一個地方嗎?如果兩片葉子從不同地方出發,有可能在某一刻剛好漂到同一點、之後又分開嗎?直覺這時候開始猶豫——這正是需要數學的地方。

課堂提問Q1

把這個情境翻成數學問題。「水流地圖」是什麼樣的數學物件?「葉子的位置」是什麼?「順著箭頭走」要怎麼寫成一條式子?

先想一想,再展開看整理後的答案

最直覺的說法是「地圖是一堆箭頭」,這已經抓到了一半。往下把它寫精確:

水流地圖是一個函數。 河面上每個位置 xR2x\in\mathbb R^2,在時刻 tt,對應一支箭頭 u(x,t)R2u(x,t)\in\mathbb R^2——方向是水流方向,長度是流速。這樣「把位置對到向量」的函數叫做 vector field(每點一支箭頭的場)。如果水流不隨時間改變,就寫 u(x)u(x),叫 autonomous(不依賴時間)。

葉子的位置是一條隨時間變化的曲線 x(t)R2x(t)\in\mathbb R^2x(0)x(0) 是你放葉子的地方。

「順著箭頭走」是說:葉子此刻的速度,等於它所在位置的水流。 速度是位置對時間的導數,所以

x˙(t)=u(x(t),t),x(0)=x0.\dot x(t)=u\big(x(t),t\big),\qquad x(0)=x_0 .

這就是一條 ODE(ordinary differential equation:只對一個變數 tt 微分的方程式)加上一個初始條件。我們想知道的量是 x(60)x(60)——一分鐘後的位置。注意這裡沒有隨機變數:水流地圖給定、起點給定,葉子的路徑是被決定的。這是這個 class 叫 deterministic 的原因;有亂流的河留給下一個 class。

先看畫面:一張地圖,一條路

想像水流地圖是一張畫滿短箭頭的紙,葉子是一支筆尖。筆尖落在某一點,就沿著那點的箭頭滑一小段,到了新位置再看新位置的箭頭,再滑一小段。把「一小段」縮到無限小,筆畫出來的線就是葉子的軌跡。

這個畫面已經暗示了兩件事。第一,軌跡上每一點的切線方向就是那一點的箭頭——軌跡「貼著」場走。第二,只要箭頭的方向從一點到鄰近的點是連續變化的,從同一點出發的兩支筆應該畫出同一條線,因為每一刻它們看到的箭頭都一樣。第二件事「應該」成立,但它需要一個條件,下面說。

寫成數學:存在、唯一、不交叉

定義。 一個 vector field 是函數 u:Rd×[0,T]Rdu:\mathbb R^d\times[0,T]\to\mathbb R^d。給定 x0x_0,ODE 初值問題是找一條可微曲線 x(t)x(t) 滿足 x˙(t)=u(x(t),t)\dot x(t)=u(x(t),t)x(0)=x0x(0)=x_0。這樣的 x()x(\cdot) 叫這個初值問題的,也叫從 x0x_0 出發的 trajectory(軌跡)。

定理(Picard–Lindelöf,只講結論)。 如果 uutt 是 continuous 的,並且對 xxLipschitz 的——存在常數 LL 使得對所有 x,y,tx,y,t 都有 u(x,t)u(y,t)Lxy\|u(x,t)-u(y,t)\|\le L\|x-y\|(相鄰兩點的箭頭差,不超過距離的 LL 倍)——那麼對每個 x0x_0,解存在唯一,至少在一小段時間內;若 uu 的成長不超過線性,解可以延伸到整段 [0,T][0,T]

Lipschitz 是「箭頭不能變得太突然」的精確版本:任何 xu\nabla_x u 有界的場都滿足(LL 取 Jacobian norm 的上界即可)。證明的想法是把 ODE 改寫成 x(t)=x0+0tu(x(s),s)dsx(t)=x_0+\int_0^t u(x(s),s)\,ds,然後證明右邊那個「把一條猜測曲線送進去、吐出一條新曲線」的操作,在 Lipschitz 條件下每做一次就把兩條猜測之間的差距縮小一個固定比例,反覆做會收斂到唯一的固定點。這門課只用結論,細節見 [1–3]。

推論(軌跡不交叉)。x()x(\cdot)y()y(\cdot) 都是同一個 ODE 的解。若存在某時刻 ss 使 x(s)=y(s)x(s)=y(s),則 x(t)=y(t)x(t)=y(t) 對所有 tt 成立。

證明只要三行:把 ss 當成新的起始時刻,xxyy 都是「從 x(s)x(s) 出發」這個初值問題的解;唯一性說這樣的解只有一條;所以它們是同一條。(往前與往後都成立,因為把時間反向 ttt\mapsto -t 之後 u-u 仍然 Lipschitz。) \square

要小心的是「交叉」的意思。若 uu 不隨時間變(autonomous),推論說的是兩條不同的軌跡在空間裡永遠不會碰到同一點——葉子畫出的線不會相交。若 uu 隨時間變,兩片葉子可以在不同時刻經過同一個位置(水流那時已經不同了),推論只保證它們不會在同一時刻出現在同一點。畫在 (x,t)(x,t) 的空間裡,軌跡依然不交叉。

展開細節唯一性失效的例子:ẋ = x^(1/3),x(0) = 0

這個場在原點不是 Lipschitz 的:x^(1/3) 的斜率在 0 附近趨近無限大。結果從 x(0)=0 出發至少有兩條解:x(t) ≡ 0,以及 x(t) = (2t/3)^(3/2)。直接代入驗證第二條:d/dt (2t/3)^(3/2) = (3/2)(2t/3)^(1/2)·(2/3) = (2t/3)^(1/2) = x^(1/3)。事實上還有無限多條:先在 0 停留任意久、再開始沿第二條走,也都是解。這就是「同一個位置放兩片葉子卻漂去不同地方」的數學版本。

另一個常見的失效是「解在有限時間內跑到無限遠」:ẋ = x²,x(0)=x₀>0 的解是 x(t) = 1/(1/x₀ − t),在 t = 1/x₀ 時爆掉。這裡 Lipschitz 只在每個有界區域內成立(局部 Lipschitz),所以只保證短時間內的存在唯一。

回到河面:直覺對了,但要說出條件

回頭看起點問題。「順著箭頭一步一步走」是對的,而且我們現在能說清楚它為什麼對:Lipschitz 條件下軌跡唯一,所以不論你用什麼方法沿著箭頭走,只要走得夠細,都會逼近同一條線;一分鐘後的位置是一個確定的答案 x(60)x(60)

同一位置放兩片葉子會漂到同一處——在 Lipschitz 的河面上是對的。兩片葉子從不同地方出發會不會在某刻重合又分開——不會,這是不交叉推論。直覺在這裡沒有錯,它缺的只是「依賴什麼假設」:真實的河面在礁石邊、漩渦中心,水流方向會在極短距離內劇烈改變,Lipschitz 常數 LL 很大甚至不存在,這時「同一點放兩片葉子」的結果就不再由地圖決定,任何微小的擾動都會被放大。理論的價值不在於重申直覺,而在於告訴你在哪裡該不相信直覺。

回到河面:動手放葉子

用電腦「順著箭頭走」最簡單的做法,就是把上面「滑一小段」的畫面直接寫成程式:每隔 hh 秒看一次箭頭,往那個方向走 huh\cdot u

import numpy as np
def u(x, t):                     # 水流地圖:往右流,上下擺動
    return np.array([1.0, 0.5*np.cos(x[0])])
def drift(x0, T=60.0, h=0.1):
    x, t = np.array(x0, float), 0.0
    while t < T - 1e-12:
        x = x + h*u(x, t); t += h
    return x
print(drift([0.0, 0.0]))          # 應接近 (60, 0.5*sin 60)

這個場有 closed form 解 x(t)=tx(t)=ty(t)=0.5sinty(t)=0.5\sin t(自己代入檢查:y˙=0.5cost=0.5cosx\dot y=0.5\cos t=0.5\cos x),所以可以對答案。hh 縮小十倍,數值解與 closed form 解的差距也大約縮小十倍——這個「差距怎麼隨 hh 縮小」的規律,本 class 後面兩篇會精確算出來。

先消化一下

想一想

氣象台給你一張「每個位置此刻的風向風速」地圖,你放出一顆完全隨風飄的氣球。下面哪個描述最貼切?

想一想

某條河的水流地圖是 u(x)=(1,sign(y)y)u(x)=(1,\,\mathrm{sign}(y)\sqrt{|y|})。你在中線 y=0y=0 上放兩片葉子。下面哪個說法對?

想一想

一個 autonomous 的 Lipschitz vector field,兩條不同的軌跡在平面上畫出來的曲線:

參考文獻

  1. Strogatz, S. H. Nonlinear Dynamics and Chaos: With Applications to Physics, Biology, Chemistry, and Engineering. Westview Press, 2nd ed., 2015.(第 2、6 章:一維與二維 vector field 的幾何直覺,存在唯一定理的結論式陳述。)
  2. Hirsch, M. W., Smale, S., Devaney, R. L. Differential Equations, Dynamical Systems, and an Introduction to Chaos. Academic Press, 3rd ed., 2013.(第 7 章:Picard–Lindelöf 的完整證明。)
  3. Hairer, E., Nørsett, S. P., Wanner, G. Solving Ordinary Differential Equations I: Nonstiff Problems. Springer, 2nd ed., 1993.(第 I 章:存在唯一定理與數值方法的共同起點。)