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

重根特徵值與廣義特徵向量

有時一個 2x2 系統有一個二重特徵值,卻只有一個特徵向量——配方似乎用光了解。本篇展示那優雅的解救:用一個廣義特徵向量補上缺失的方向,再以 t 乘向量的項把整幅圖補齊。

當配方用光了特徵向量

到現在為止,特徵值方法幾乎已成了機械動作。把方程化成系統 x' = A x,求出 A 的特徵值,給每個配上一個特徵向量,再讀出通解。第 3 篇處理了相異實特徵值(兩條乾淨的直線解),第 4 篇處理了複特徵值(旋轉,由一對共軛建構而成)。對一個 2x2 系統,你預期有兩個特徵值與兩個獨立的特徵向量——恰好足以張成整個平面。本篇談的,正是這套帳目悄悄失靈的情形。

麻煩一句話就能說清。特徵方程 det(A - lambda I) = 0 可以有重根——譬如一個二重特徵值 lambda。代數說 lambda「出現兩次」,所以你期待兩個特徵向量。但當你解 (A - lambda I) v = 0 時,可能只找到*單獨一個*獨立的特徵向量,而非兩個。這時矩陣稱為虧損的(defective):它的特徵值問題給出的特徵向量,少於代數重數所要求的數目。只有一個特徵向量 v,你就只能寫出一個解 e^(lambda t) v——而一個解不足以張成二維的向量解基本組

缺失的那個解:為什麼 t 非出現不可

第二個解從哪裡來?借用一個你早已信任的類比。回到常係數*純量*階段,當重根情形給出二重根 r 時,兩個解是 e^(rt) 與 t e^(rt)——多出來的那個 t 因子補住了缺口。同樣的直覺在這裡也管用,但你不能只是乘上 t 就罷手。試試天真的猜測 x = t e^(lambda t) v。把它代入 x' = A x,兩邊就對不上:左邊多生出一個 e^(lambda t) v 項,而右邊無從匹配。所以光禿禿的 t e^(lambda t) v *不是*解。

解法是*加上一個常數向量*來吸收那個殘餘項。試試修正後的形式 x = e^(lambda t)(t v + w),其中 v 是你手上唯一的特徵向量,而 w 是一個新的未知向量。微分後代入 x' = A x。在 e^(lambda t) 約掉之後,帶 t 的項自動平衡(因為 A v = lambda v),剩下的是一個只關於 w 的乾淨要求。那個要求正是整篇的核心:(A - lambda I) w = v。

try   x = e^(lambda t) ( t v + w )

      x' = e^(lambda t) [ lambda(t v + w) + v ]
  A x   = e^(lambda t) [ t (A v) + A w ]

  match, using A v = lambda v :
      lambda w + v  =  A w
  ------------------------------------
  (A - lambda I) w = v        <- solve for w
常數向量 w 必須滿足 (A - lambda I) w = v——那就是定義廣義特徵向量的方程。

認識廣義特徵向量

滿足 (A - lambda I) w = v 的向量 w,稱為[[ode-generalized-eigenvector|廣義特徵向量]]。把這兩個方程並排比較:普通的特徵向量滿足 (A - lambda I) v = 0,而廣義特徵向量滿足 (A - lambda I) w = v——右邊是特徵向量而非零。你可以把它想成一道短梯往上一階:v 在 (A - lambda I) 作用一次下被消滅;w 則在*兩次*下被消滅,因為 (A - lambda I)^2 w = (A - lambda I) v = 0。那條鏈 v <- w,正是虧損情形先前藏起來的結構。

兩個誠實的提醒讓這件事可操作。其一,w 並不唯一——若 w 可行,則 w 加上(v 的任意倍數)也可行,因為 (A - lambda I) 作用在 v 的倍數上得零。這份自由無害;任何有效的 w 都產生一個正確的第二個解,而那多餘的 v 倍數只會併入你早已有的 C1 e^(lambda t) v 項。其二,方程組 (A - lambda I) w = v *之所以*可解,恰恰因為 lambda 是虧損的特徵值;當高斯消去留下一個自由變數時別慌——那個自由變數就是 v 倍數的自由,不是矛盾。

一個從頭到尾的 2x2 系統範例

取矩陣 A = [3, 1; 0, 3](列以分號分隔)。它的特徵方程是 (3 - lambda)^2 = 0,一個教科書式的[[repeated-eigenvalues-case|重特徵值]] lambda = 3,代數重數為二。現在尋找特徵向量,看那個虧損如何現身:A - 3I = [0, 1; 0, 0],所以 (A - 3I) v = 0 迫使 v 的第二個分量為零。每個特徵向量都是 v = (1, 0) 的倍數——只有*一個*方向,證實了矩陣是虧損的。

  1. 特徵值與特徵向量:lambda = 3(二重),而 (A - 3I) v = 0 給出唯一的特徵向量 v = (1, 0)。
  2. 解廣義特徵向量:(A - 3I) w = v 意指 [0, 1; 0, 0] w = (1, 0),所以 w 的第二個分量為 1。取 w = (0, 1)(第一個分量任意——那就是 v 倍數的自由)。
  3. 組裝兩個解:x1 = e^(3t)(1, 0) 與 x2 = e^(3t)[ t(1, 0) + (0, 1) ] = e^(3t)(t, 1)。
  4. 寫出通解:x = C1 e^(3t)(1, 0) + C2 e^(3t)(t, 1)。你可以代入驗證,兩個部分都滿足 x' = A x。

這在相平面上是什麼樣子?因為只有一個特徵向量方向,過原點只有一條線是不變的——軌跡無法像相異實根情形那樣沿兩條直線散開。取而代之,每條路徑都沿著那唯一的方向切入(或切出),隨著 t v 項增長而彎曲。這幅圖像就是退化節點(improper node,又稱蛻化節點):所有軌跡在原點共用一條切線。這裡 lambda = 3 > 0,所以是不穩定的退化節點;一個負的重特徵值給出同樣的形狀但時間倒轉,即穩定的退化節點。

更深的圖像:喬丹形式與矩陣指數

虧損系統究竟為何非存在不可?因為並非每個矩陣都能對角化。相異特徵值與複數情形之所以如此順暢,是因為 A 在特徵向量基底下能寫成對角矩陣。虧損矩陣拒絕如此——你能做到的最好是[[jordan-form-method|喬丹形式]],它在像 [lambda, 1; 0, lambda] 這樣的區塊中於對角線正上方放一個 1。那個頑固的非對角 1,正是 (A - lambda I) w = v 這條鏈的偽裝,也正是它把 t 逼進解裡。所以重特徵值的配方並非外加的特殊技巧;它就是當對角化不可能時,特徵值方法*所變成*的樣子。

有一個單一的統合物件,把本階段三種情形全部串在一起:[[ode-matrix-exponential|矩陣指數]] e^(At),它透過 x(t) = e^(At) x(0)(x(0) 為初始向量)給出 x' = A x 的解。對可對角化的 A,它由樸素的 e^(lambda t) 因子構成。對一個虧損的喬丹區塊,e^(At) 的級數產生一個乘上 e^(lambda t) 的*關於 t 的多項式*——而那個多項式正是你的 t v 項的來源。同一個 e^(At) 對相異根給出 e^(lambda t)、對複根給出旋轉、對重根給出帶 t 的項;這三種情形是同一個公式透過三種特徵值所見的樣貌。

最後一個關於範圍的誠實提醒。對於 3x3 或更大的虧損矩陣,鏈可以變得更長:你也許需要 w 滿足 (A - lambda I) w = v,再需要 u 滿足 (A - lambda I) u = w,產生既帶 t 又帶 t^2/2 的解的部分。原則從不改變——持續往上爬廣義特徵向量的梯子,直到你有足夠多的獨立向量張成整個空間——但代數會膨脹,這正是為何對大型系統而言,矩陣指數與計算工具會成為實用方法,而非親手去解每一條鏈。