流動靜止之處
上一篇教你把平面系統 x' = f(x, y)、y' = g(x, y) 讀成一個 速度向量場:在每一點,一支箭告訴你一個粒子會往哪個方向、以多快的速度漂移,而那些 軌跡 就是順著這些箭穿行的曲線。如今問一個關於這種流動最簡單不過的問題:哪裡什麼都不動?一個速度箭縮成零的點——也就是 f = 0 與 g = 0 同時成立之處——就是一個平衡點(又稱臨界點或不動點)。把一個粒子恰好放在那裡,它便永遠停駐;它的 軌跡 就是一個靜止不動的點。
因此尋找平衡點純粹是代數,而非微積分:同時解兩條方程 f(x, y) = 0 與 g(x, y) = 0。在幾何上,每條方程在平面上刻出一條曲線——那條使某個速度分量消失的 零斜線。在 f = 0 那條曲線上,流動純粹是垂直的(只有 y 在動);在 g = 0 上,則純粹是水平的。一個 平衡點 恰好落在這兩條零斜線交會之處,因為唯有在那裡,水平與垂直的運動才*同時*停下。一個系統可以有一個這樣的交點、好幾個,或一個也沒有。
「靜止」並非有趣之處
知道流動*在哪裡*靜止,只是開場白。整齣戲的核心,是一個被放在平衡點*附近*、但不恰好在其上的粒子會有什麼下場。三種截然不同的命運皆有可能,而它們決定了整幅圖的性格。粒子可能被穩定地往內拉,於是平衡點吞噬掉周圍的一切——一個匯(sink)。它也可能被推開,於是最微小的偏移都會無界地增長——一個源(source)。又或者它繞著圈轉,從不真正落定,也從不逃脫。同樣是一個靜止的點,鄰里卻迥然不同。
這正是從一維帶上來的穩定性觀念。在相位線上,你藉由檢查 f' 在該處的正負號,把每個平衡點分類為 匯或源。在平面上,同樣的問題銳化成一套關於*形狀*的詞彙:一個把一切吸入的平衡點,可能沿著直線吸入(一個 節點),也可能以螺旋方式吸入(一個 螺旋點);一個讓某些方向進、某些方向出的,是一個 鞍點;一個被閉合迴圈環繞的,是一個 中心。為這些形狀命名並區辨它們,是緊接著下一篇的任務。本篇回答的是更前一步的問題:我們究竟*如何*從方程式讀出局部行為?
拉近,直到曲線看起來變直
這裡是整門學科的核心想法,而它直接借自初學的微積分。湊近看,一條光滑曲線看起來就像它的切線;這正是導數的全部意涵。對一個流動也是如此。把自己停泊在一個平衡點上,丟掉除了 f 與 g 的「第一階斜率」以外的一切,那條彎曲的非線性場便被換成一個平坦的線性場——一個你早已懂得用特徵值徹底求解的系統 x' = A x。這個替換叫做 繞平衡點的線性化,它正是讓相平面變得可處理的關鍵。
具體而言,平移坐標讓平衡點落在原點,用 u 與 v 表示微小的偏移,再只保留 f 與 g 的線性項。那些線性項恰恰就是 f 與 g 的偏導數,被裝進一個 2×2 的矩陣裡,這矩陣叫做 Jacobian 矩陣,並在*平衡點處*取值。Jacobian 是當年主導相位線故事的那個單一斜率 f' 的多變量版本。它的四個元素,是兩個速度對兩個偏移做出反應的四種方式,而它們正是局部全貌所需的一切。
Nonlinear: x' = f(x, y)
y' = g(x, y)
At an equilibrium (x*, y*): f(x*, y*) = 0, g(x*, y*) = 0
Let u = x - x*, v = y - y* (small displacement). Keep only linear terms:
[ u' ] [ f_x f_y ] [ u ]
[ ] = [ ] [ ] all partials evaluated at (x*, y*)
[ v' ] [ g_x g_y ] [ v ]
\_______________/
Jacobian J = A
Local behaviour <- eigenvalues of J.現在來看回報。局部系統 u' = J u 恰恰就是上一節那個常係數線性系統,所以它的命運完全由 J 的特徵值決定。實的負特徵值往內拉(一個匯);實的正特徵值往外推(一個源);一正一負給出一個鞍點;複數特徵值打旋,其實部決定增長或衰減。你早已懂得計算的那些特徵值,*就是*「在這個平衡點附近會發生什麼」的答案。定性的相平面,骨子裡就是把特徵值法用幾何的方式讀出來。
食譜,一步一步來
把各塊拼起來,就得到一套簡短而可靠的程序,從今以後你會在每個平面系統的每個平衡點上跑它。值得記下來,因為本節最後三篇都倚賴它。
- 同時解 f(x, y) = 0 與 g(x, y) = 0,找出每一個平衡點——這是代數,常常就在零斜線的交會處。
- 在某個平衡點上,整理出 (f, g) 的 Jacobian J——四個偏導數 f_x、f_y、g_x、g_y——並在該點取值。
- 由 det(J - lambda I) = 0(一條關於 lambda 的二次式)算出 J 的特徵值。
- 由特徵值讀出局部類型:實部皆負(匯)、皆正(源)、異號(鞍點)、複數(螺旋,若為純虛數則為中心)。
- 對每個平衡點重複以上步驟,再把各個局部圖縫合成整體相圖——這正是最後一篇的主題。
請注意,你完全不必去*解*那個非線性系統,就能得知它的局部行為——而這正是整件事的要旨。大多數非線性 ODE 根本沒有封閉形式的解,所以一套能從單一個導數矩陣讀出定性命運的方法,並非便利,而是必需。一旦握有特徵值,每個平衡點便得到一個標籤和一張小草圖,而整體的 相圖,就成了用一致的流動箭頭把這些局部草圖耐心拼接起來的工作。
當線性化會說謊
誠實地說:用線性部分取代彎曲的場是一種近似,而近似都有附帶細則。授權它的定理是 Hartman-Grobman 定理,它給出一個精確的承諾:在平衡點附近,真實的非線性流動看起來就像它的線性化——同樣是節點、鞍點或螺旋——*前提是 Jacobian 的特徵值都沒有零實部*。滿足這個條件的平衡點叫做 雙曲的,而在一個雙曲平衡點上,線性草圖直到定性形狀都是可信賴的。
危險恰恰坐落在邊界上。當某個特徵值有零實部時——一對純虛數,其中線性 中心 情形是最典型的元兇——這條定理便保持沉默,而且事出有因。線性化也許報告出整齊的閉合迴圈,而被丟棄的高階項卻悄悄把它們變成一個緩慢往內的螺旋,或往外的螺旋。那些微小的項,在別處對命運可忽略不計,在這裡卻成了*決定性*的因素,正因為線性部分恰好平衡在刀鋒上。線性中心是整個理論中最脆弱的預測。