JOVANA
Library Glossary Getting Started Three Levels Fields How it works Mission
Join the mission
All guides

相線:不求解也能談穩定性

本梯級裡多數模型都有封閉形式的解——但大多數方程並沒有。相線是一個漂亮的技巧:對一個自治的一階方程,你能從一條數線上讀出每個起點的長期命運,完全不必求解。

解不出來,仍然看得見

前面四篇很走運。成長與衰減、牛頓冷卻、混合水箱、邏輯斯諦方程——每一個都乾淨地分離變數,給出一條整齊的答案公式。但這種運氣很罕見。整個學科一個誠實的真相是:絕大多數微分方程根本沒有封閉形式的解;用初等函數根本寫不出任何公式。於是真正的問題變成:若我永遠解不出 y' = f(y),我還能不能說出一個族群、一個溫度、一個帳戶餘額最終會怎樣?令人驚訝的是,往往可以——而那件工具就是相線

這招只對一種特別、卻極其常見的形狀有效:自治方程 y' = f(y),其右邊只依賴 y,從不顯式依賴時間 t。本梯級幾乎每一個模型都是自治的:dP/dt = k P、dP/dt = k P (1 - P/K)、dT/dt = -k(T - T_room),右邊全都只由未知量本身組成。就是這一個特徵——右邊沒有 t——讓我們能拋開求解,改從一條數線讀出未來。(一個右邊帶 t 的方程,例如 y' = y + sin t,得不到乾淨的相線,因為運動規則隨時間不斷改變。)

畫出那條線:平衡點與 f 的正負

整個構造如下。為變數 y 畫一條垂直的數線。首先找出系統完全靜止的位置:使 f(y*) = 0 的那些值 y*。在這種點上 y' = 0,所以 y 永不移動——這些就是平衡點,即常數的平衡解 y(t) = y*。對邏輯斯諦方程 y' = r y (1 - y/K),令右邊為零得到 y* = 0(滅絕)與 y* = K(承載量)。在線上標出這兩個點;它們把線切成若干區間。

現在來到唯一一個真正的想法。在每一段平衡點之間的區間上,f(y) 只有單一正負號——它不經過一個零點就無法變號,而那些零點恰恰就是你已標出的平衡點。所以只要在每段區間裡測試一個點即可。在 f(y) > 0 之處,解有 y' > 0,故 y 遞增:畫一個朝的箭頭。在 f(y) < 0 之處,y 遞減:畫一個朝的箭頭。這就是f(y) 的正負分析的全部方法,而你最終得到的這條被裝飾過的數線,就是相線。

Logistic:  y' = r y (1 - y/K)   with r > 0, K > 0

  y                f(y) sign      arrow      meaning
  -----------------------------------------------------------
  y > K            f < 0           down       falls back to K
  --- K --------------------------- equilibrium (sink) -----
  0 < y < K        f > 0            up         climbs toward K
  --- 0 --------------------------- equilibrium (source) ---
  y < 0            f < 0           down        (runs away; non-physical)
邏輯斯諦方程的相線:兩個平衡點、三段區間、各一個箭頭。y = K 兩側的箭頭都指向它,而 y = 0 兩側的箭頭都背離它。

從箭頭讀出命運:穩定、不穩定、半穩定

箭頭告訴你關於長期行為的一切。看一個平衡點,問它的鄰居往哪流。若兩個箭頭都指向它——下方往上、上方往下——那麼任何鄰近的起點都會被拉進來,這個平衡點便是穩定的:一個匯點(或吸引子)。若兩個箭頭都背離它,最微小的擾動就讓解逃逸,它便是不穩定的:一個源點。對邏輯斯諦方程,y = K 是匯點、y = 0 是源點——這正是為何一個小小的建群族群會朝承載量成長並停在那裡。這就是平衡點穩定性的全部內容,無需一個積分就讀了出來。

還有第三種可能,初學者常常漏掉:箭頭可以在一個平衡點兩側方向一致——同往上、或同往下。那麼解從一側趨近、卻在另一側被推開;這個點是半穩定的。這恰恰發生在 f 觸碰零卻不穿越之時,像 y' = (y - 2)^2 裡的二重根。左側穩定,右側不穩定。誠實地把這三種都點出來很重要,因為真實的捕撈或門檻模型往往就坐落在這種微妙的半穩定情形上,系統的命運取決於你從線的哪一側出發。

一個更快的判據,以及它悄悄失效之處

通往上下箭頭,有一條避開逐區間測試的捷徑:導數判據。在平衡點 y* 處,看 f 在那裡的斜率。若 f'(y*) < 0,則 f 在 y* 略下方為正、略上方為負,故箭頭朝內——穩定。若 f'(y*) > 0,箭頭朝外——不穩定。這是在平衡點附近線性化最簡單的情形:在 y* 附近,方程的行為像 y' = f'(y*) (y - y*),當 f'(y*) 為負時微小的偏差按 e^(f'(y*) t) 衰減,為正時則爆增。

但要對這條捷徑的破綻誠實。當 f'(y*) = 0 時,線性判據什麼也說不出來——線性部分是平的,結論落在 f 更高階的形狀上。半穩定的情形 y' = (y - 2)^2 正是如此:f'(2) = 0,這個點卻明確是半穩定的。這個教訓——它呼應你日後在高維會遇到的一個深刻定理——是:線性化只在雙曲平衡點才可信,也就是線性斜率非零之處。在退化的點上,丟掉捷徑,回到 f 在每一側的真實正負號。

當一個旋鈕改變整幅圖:初嚐分岔

真正的威力顯現於你的模型帶著一個參數時——一個漁業配額、一個藥物劑量、一個控制增益。考慮帶定量捕撈的邏輯斯諦漁業:y' = r y (1 - y/K) - h,其中 h 是捕撈率。對小的 h,右邊仍有兩個零點,一個高的穩定族群與一個低的不穩定門檻。當你把 h 調大,那兩個平衡點相向滑近、相撞、然後消失。越過那個臨界的 h,拋物線再也碰不到零,沒有任何平衡點留存,無論你從哪裡出發 y 都崩向零——漁業是驟然崩潰,而非逐漸衰退。

那種定性的震盪——平衡點隨著某參數越過門檻而出現、合併、或改變穩定性——就是分岔,而相線是看見它最乾淨的窗口。把許多 h 值對應的相線並排堆疊起來,你便得到一張分岔圖,一幅命運對參數的地圖。這是你的初識分岔,是平滑的調節產生行為驟變的那道接縫,也是「不求解也能談穩定性」回報最豐之處:盯著任何單一公式,你永遠不會察覺那場突如其來的崩潰。

  1. 把方程寫成 y' = f(y),並確認它是自治的——右邊沒有 t。
  2. 解 f(y) = 0 求出每個平衡點 y*;把每個都標成 y 數線上的一個點。
  3. 在每段點與點之間的區間測試 f(y) 的正負;f > 0 處畫上箭頭,f < 0 處畫下箭頭。
  4. 依周圍箭頭判定每個平衡點:兩者朝內為穩定匯點,兩者朝外為不穩定源點,方向一致為半穩定點。
  5. 若存在參數,對它的數個值重複以上步驟,留意平衡點相撞或翻轉——那就是分岔。