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

把一條方程化成一個方程組

每一條高階線性方程,骨子裡都是一個喬裝過的一階方程組。學會那個唯一的記帳訣竅,把 y'' 或 y^(n) 改寫成一串相互耦合的一階方程——正是這一步,讓線性代數的全部威力得以接手。

我們為何一開始就想要一個方程組

至此為止,一個問題意味著一個未知函數與一條方程——單獨一個 y(x) 服從像 a y'' + b y' + c y = 0 這樣的東西。但真實世界鮮少只交給你一個孤零零的變數。兩台以彈簧相連的小車有兩個位置要追蹤;掠食者與其獵物有兩群數量一同起落;一個電網裡有好幾股電流彼此推擠。誠實的模型是同時有好幾個未知量,每一個的變化率都取決於其他者。這就是一個方程組,而本節要解的,正是其中線性的那些。

其決定性的特徵在於諸未知量彼此糾纏——它們是耦合未知量。你無法先把第一個解出來、收尾完畢,然後才回頭處理第二個,因為第二個就坐在第一個的方程裡,反之亦然。想像翹翹板上的兩個人:少了對方,任一人的高度都說不通。為了解開這團糾纏,我們最終會向線性代數借來特徵值與特徵向量——但在那套機械能運轉之前,我們需要把每個問題寫成一個標準形狀。製造出這個形狀,正是這第一篇的全部工作。

標準形狀:只准一階

以下是我們將在本節餘下兌現的驚人承諾:無論階數多高,每一條線性常微分方程都能只用一階導數重寫出來。 一條雜亂的三階方程、一對耦合的二階方程——全部塌縮成一份平坦的清單,其中每條方程的左邊都只是一個單撇號。我們稱這份清單為一階系統,而進入前方一切優雅理論的門票,就是把你的問題弄成恰好這個形式。

為何非得一階不可?因為一旦一切都成了一階,你就能把所有未知量疊進單一個向量 x,把所有右邊疊進單一個矩陣 A,於是整個系統化為一句精巧得令人屏息的陳述:x' = A x。這個向量—矩陣形式看起來與你很久以前見過的純量增長律 y' = k y 一模一樣——而這份神似並非巧合,它就是整套策略。你對單一指數所知的一切,即將一個維度接一個維度地,被擢升進矩陣的語言裡。

訣竅:給導數取名字

整套轉換倚靠一個簡單到近乎令人難為情的念頭:給每一個導數取它自己的名字。 假設你有一條二階方程,比如 y'' + 3 y' + 2 y = 0。它之所以是二階,是因為 y'' 出現了。那麼就為速度引進一個全新的未知量:令 x1 = y,並令 x2 = y'。你一絲一毫都沒改動這個問題——你只不過給斜率取了一個屬於它自己的名字。現在看好,那兩條一階方程幾乎免費地掉出來。

第一條方程純憑定義即為真:既然 x2 被定義為 y'、x1 被定義為 y,我們便有 x1' = y' = x2。第二條方程正是原方程派上用場之處——我們把它對最高階導數解出,y'' = -3 y' - 2 y,再把每個符號譯成新名字:x2' = y'' = -3 x2 - 2 x1。兩條一階方程,分毫不差如先前所諾,而兩者合起來所說的,正是那單一條二階方程所說的。這個記帳動作就是化為一階系統,而對線性方程它從不失手。

Start (one 2nd-order eq):   y'' + 3 y' + 2 y = 0

Name the derivatives:        x1 = y ,   x2 = y'

The system (two 1st-order):  x1' = x2
                             x2' = -2 x1 - 3 x2

In vector-matrix form:       x' = A x ,  with
                                  | x1 |          |  0    1 |
                             x =  | x2 |  ,   A =  | -2   -3 |
一條二階方程化為兩條耦合的一階方程,再化為單一條矩陣方程 x' = A x。A 的頂列由定義 x1' = x2 所強制決定;底列則是把原方程對 y'' 解出後所得。

攀升到 n 階

這訣竅沒有任何地方是二階所專屬的——它直接向上擴展,而這恰恰就是純量 n 階方程與系統之間的連結。對一條 n 階方程,你為整道導數的階梯命名:x1 = y、x2 = y'、x3 = y'',依此類推一路到 xn = y^(n-1)。於是前 n-1 條方程全是純定義,每一條都宣告下一個變數是前一個的導數——x1' = x2、x2' = x3,一路向上。它們不過是像傳水桶的隊伍那樣,把導數一個傳一個地往下遞。

唯有最後那一條方程 xn' 承載真正的內容:它就是原方程本身,對 y^(n) 解出後以新名字重寫。於是一條 n 階純量方程化為一個 n×n 的線性常微分方程組,x' = A x,其中 A 的對角線正上方排著一列 1(那些定義),而單獨的底列由原來的係數構築而成(那些物理)。這不只是方便而已——它正是我們有資格透過系統來研究每一條線性常微分方程的緣由。兩種圖像確確實實是同一個對象,而任何為 x' = A x 證得的真理,自動就是關於它所從出的那條純量方程的真理。

一幅新圖像:相平面中的運動

把問題改寫成 x' = A x,所做的不只是把代數整理乾淨——它改變了一個解*看起來*是什麼樣子。一個純量解 y(x) 是你對著 x 畫出的一條曲線。但一個向量解是一個會*移動*的點:在每一個瞬間,x 都是平面上(對一個 2×2 系統而言)單一個點,其座標為 y 與 y'。隨著時間流逝,那個點描出一條路徑。所有這類點所在的場地就是相平面,而一個解在其中刻出的路徑,便是它的軌跡。

再把 x' = A x 當作一句關於這個平面的話來讀:在點 x 處,矩陣 A 告訴你那支速度箭頭 x'。所以 A 把每一個位置都轉成一支小箭頭,而一個解不過是一個隨之流動的點,始終服從它腳下的那支箭頭。一條彈簧的振盪,作為 y 的擺動圖像本是乏味的,在相平面裡卻成為一個繞著原點盤旋的乾淨環圈。這個幾何觀點是整個系統學科的靈魂,而一旦特徵向量到來、標出流動中那些特殊的直線方向,你便會時時刻刻倚賴它。

這為接下來解鎖了什麼

如今每個問題都穿上了同一套制服 x' = A x,本節餘下的部分便是一場專注的戰役:解這條方程。策略就是我們先前已經點出的那個類比。純量律 y' = k y 的解是 y = c * e^(kt)——一個常數乘上一個指數。於是我們*猜測* x' = A x 有同樣風味的解,x = v * e^(lambda t),此處 v 如今是一個指向固定方向的常數向量,而 lambda 是一個設定增長或衰減速率的數。代入這個猜測,便召喚出特徵值法,而它正是下一篇的引擎。

把 x = v * e^(lambda t) 代入 x' = A x,會把整條微分方程熬煮成單一個代數要求 A v = lambda v——特徵值方程。從那裡起,本節分岔成三種情形,往後的一切都依此編排:實的相異特徵值,給出貨真價實的直線解;複的特徵值,把運動彎成旋轉;以及重複的特徵值,逼著我們發明廣義特徵向量。你如今已築好它們全都立足其上的那一座橋。帶著一句話往前走:一條高階線性方程與一個一階系統是同一隻生物,而系統形式,正是那個讓線性代數得以收尾的形式。