把高階方程化為一階方程組(conversion to a first-order system)
你花了不少力氣學會求解單一條二階方程,像是 y'' + p y' + q y = 0。但數值解法和整套方程組機制想要的是一階方程組。所幸有一個簡單、完全機械化的技巧,能把任何 n 階方程化成 n 條方程的一階方程組,不需要任何巧思,每次都是同一套做法。
以 y'' = f(t, y, y') 為例。給較低階的導數取新名字:令 x1 = y、x2 = y'。於是 x1' = y' = x2,這是第一條方程;x2' = y'' = f(t, x1, x2),這是第二條。於是這條二階方程就變成一對方程:x1' = x2、x2' = f(t, x1, x2)。對 n 階方程,你設 x1 = y、x2 = y'、…、xn = y^(n-1);前 n-1 條方程只是說每個 x_i' = x_{i+1}(這些變量連成一條鏈),而最後一條 xn' = f(t, x1, …, xn) 承載了原方程的內容。這筆交易是公道的:你用 n 個未知函數的 n 條方程,換掉一個未知函數的一條方程,但現在每條方程都是一階的。
正是這種轉換,使方程組的理論不是冷門,而是涵蓋了整套單一高階方程的理論。存在唯一性定理通常是對一階方程組證明的,然後就免費地適用於高階方程。實務上,要數值求解 y'' + sin(y) = 0(單擺),任何軟體在內部做的第一件事,正是這個改寫。
彈簧方程 y'' + 0.2 y' + y = 0。設 x1 = y(位置)、x2 = y'(速度)。於是 x1' = x2,且 x2' = -y - 0.2 y' = -x1 - 0.2 x2。這一對 (x1' = x2, x2' = -x1 - 0.2 x2) 就是等價的一階方程組。
位置與速度成為單一狀態向量 (x1, x2) 的兩個座標。
新變量並非任意挑選,每一個都必須是前一個的導數,才能使鏈式關係 x_i' = x_{i+1} 自動成立。順序選錯就會破壞等價性。