齊次部分之後,還剩什麼
前面幾篇指南攻下了齊次方程——右端為零的那種,像 y'' + a y' + b y = 0。你建起它的特徵方程,讀出根,再拼出一個基本解組 y_1、y_2,它們的組合 C_1 y_1 + C_2 y_2 掃遍每一個解。這個組合就是齊次解 y_c。但真實問題很少在右端保持沉默:彈簧被推,電路被驅動,梁被加載。方程變成 y'' + a y' + b y = g(x),帶著一個真正的驅動項 g(x),單憑 y_c 已經滿足不了它。
下面這個結構性事實,讓本指南餘下的一切成為可能——它正是線性的饋贈。把方程寫成 L[y] = g,其中 L 是線性微分算子 L = d^2/dx^2 + a d/dx + b。假設你能找到僅僅一個被 L 送到 g 的函數 y_p,即 L[y_p] = g。那麼這個受迫方程的通解恰恰是 y = y_c + y_p:整族齊次解,被那單獨一個特解整體平移過去。一行就能驗證——L[y_c + y_p] = L[y_c] + L[y_p] = 0 + g = g——你便看見線性在替你幹活。
待定係數法:一次有根據的猜測
當驅動項 g(x) 屬於一小串格外乖巧的形狀之一——多項式、指數 e^{r x}、正弦或餘弦,或它們的乘積——待定係數法幾乎是白送給你一個 y_p。這個想法極其直白:這些函數在求導下會再生出同類。對多項式求導,得到多項式;對 e^{r x} 求導,得到 e^{r x} 的倍數;對 sin 和 cos 求導,永遠只在 sin 與 cos 之間來回倒換。所以特解必定住在與驅動項相同的那個小家族裡——你猜一份帶未知係數的 g(x) 副本,再讓方程告訴你這些係數是多少。
用 y'' - y' - 2y = 4x^2 來具體想象。驅動項是一個二次多項式,所以猜上完整的二次多項式 y_p = A x^2 + B x + C——絕不只猜 A x^2,因為求導會溢出到你必須準備好去匹配的低次項。求兩次導、代入、歸併:左邊得到 -2A x^2 + (-2A - 2B) x + (2A - B - 2C),它必須等於 4x^2 + 0x + 0。逐一匹配 x 的各次冪,得到三個樸素的代數方程,於是 A = -2、B = 2、C = -3 滾落出來,故 y_p = -2x^2 + 2x - 3。這道微積分問題已經化成了求解一個小小的線性方程組——這正是該方法全部的魅力所在。
參數變易法:永遠管用
待定係數法快,但脆弱:它只對那一小串菜單上的驅動項管用。要是 g(x) = tan(x)、sec(x),或任何不在單子上的東西呢?那就請出參數變易法,一種除了「你能積分」之外對 g 一無所求的方法,因而能對付任何驅動項。它的想法是一記小小的神來之筆。齊次解是 C_1 y_1 + C_2 y_2,其中 C_1、C_2 是常數。參數變易法說:讓那些常數變起來。去找 y_p = u_1(x) y_1 + u_2(x) y_2,把那兩個數提升成兩個未知函數,恰到好處地彎折齊次解,好把驅動項吸收掉。
兩個未知函數需要兩個條件。一個是方程本身;另一個我們可以自行選擇,而一個聰明的選擇能讓代數保持乾淨:要求 u_1' y_1 + u_2' y_2 = 0,這在那些雜亂的二階導數項冒頭之前就把它們殺掉。有了它,方程塌縮成 u_1' y_1' + u_2' y_2' = g。現在你有了關於兩個未知導數 u_1' 和 u_2' 的兩個線性方程,而它們的行列式恰恰是朗斯基行列式 W = y_1 y_2' - y_2 y_1'——正是這同一個量,因其非零,當初才認證了 y_1 與 y_2 的線性無關。解出來,再積分,y_p 就歸你了。
Given y'' + a y' + b y = g(x), with homogeneous basis y_1, y_2: Wronskian W = y_1 y_2' - y_2 y_1' (nonzero since y_1, y_2 independent) u_1' = - y_2 g / W u_2' = + y_1 g / W u_1 = INTEGRAL( - y_2 g / W ) dx u_2 = INTEGRAL( + y_1 g / W ) dx particular solution: y_p = u_1 y_1 + u_2 y_2 Example y'' + y = sec(x): y_1=cos x, y_2=sin x, W=1 u_1 = INTEGRAL(-sin x sec x)dx = ln|cos x|, u_2 = INTEGRAL(cos x sec x)dx = x y_p = cos(x) ln|cos x| + x sin(x) (undetermined coefficients cannot touch sec x)
對這裡「永遠管用」是什麼意思,要誠實。這個方法永遠能產出正確的那兩個積分——這一步從不失敗。但那些積分本身可能是非初等的,意思是不存在用初等函數寫出的公式,正如 e^{-x^2} 的高斯積分沒有初等原函數。「非初等」並不意味著不可計算:你仍可以把答案誠實地留作一個積分,或數值地算到任意精度。參數變易法永遠把問題歸結為積分;那個積分漂不漂亮,是另一個問題,而且答案並不總是友善的。
降階法:一個解生出兩個
上面兩種方法都悄悄假定你已經握有完整的齊次基 y_1、y_2。對常係數方程,特徵方程把兩個都交給你。但對變係數方程——a 和 b 依賴 x——根本沒有特徵方程,而你往往只能靠觀察或運氣找到一個齊次解。降階法正是把那單獨一個 y_1 變成一整對的工具。它的前提是同一招變形術:把第二個解找成 y_2 = v(x) y_1,即已知解乘上一個未知函數 v。
把 y_2 = v y_1 代入齊次方程,看魔術上演。因為 y_1 本來就滿足方程,所有帶 v(未求導)的項恰好相消——這個相消正是 y_1 必須是一個已知解的原因。倖存下來的項只含 v' 和 v'',從不含 v 本身。令 w = v',一個關於 v 的二階方程就變成關於 w 的一階方程——階數真真切切地降了一階,方法之名即由此而來。解這個一階方程(一個可分離或線性的方程),把 w 積分得到 v,於是 y_2 = v y_1 就是你那個獨立的第二解。
一個鮮活的例子:x^2 y'' - x y' + y = 0(一個歐拉方程)有顯而易見的解 y_1 = x。令 y_2 = v x;代入並經 w = v' 的替換,留下 x w' + w = 0,一個可分離的一階方程,給出 w = 1/x,於是 v = ln(x),第二解便是 y_2 = x ln(x)。這兩者,x 與 x ln(x),是獨立的——它們的朗斯基行列式是 x,在 x > 0 時非零——所以它們構成你所需的基。而這同一個 y_2 = v y_1 的想法,若推到受迫方程上而非齊次方程上,恰恰就是喬裝打扮的參數變易法:降階法是它那位只需一個解的祖先。
三者之間如何取捨
這三者不是對手;它們是一棵決策樹,一旦你看清結構,選擇幾乎是機械的。決定性的問題是:我是否已經握有完整的齊次基?驅動項有多乖?按順序問下來,對的工具自己就報到了。
- 你兩個齊次解都有嗎?若只有一個——通常是因為係數變化、沒有特徵方程——先用降階法造出第二個。現在你有了完整的基 y_1、y_2,可以往下走了。
- 驅動項 g(x) 是多項式、指數、正弦/餘弦,或它們的乘積嗎?若是,待定係數法最快——猜一份帶未知係數的副本,若與齊次解相撞(共振)就乘 x,再匹配。完全不需要積分。
- 驅動項是別的什麼嗎——正切、正割、對數、分式?那就用參數變易法這個萬能後備。它要花你兩個由朗斯基行列式搭起的積分,但它從不要求驅動項乖巧,也從不會交不出那個公式。
- 最後,組裝。把齊次解加回去:y = C_1 y_1 + C_2 y_2 + y_p。直到此刻才套用初始條件去定死 C_1 和 C_2——套在完整的 y 上,絕不只套在 y_c 上。
退一步,留意這份統一。這裡的每一種方法都是同一個手勢——拿起你信得過的齊次解,讓它們的常係數變成 x 的函數,把你已知的東西恰好彎折到能迎上驅動項。這單獨一個想法,即齊次部分與特解部分的疊加,就是線性微分方程的全部架構,而且它毫無怨言地向上推廣:同樣的 y_c + y_p 分拆組織起高階方程,統轄用矩陣指數求解的方程組,並在拉普拉斯變換把整個問題化成代數時再度現身。在這裡把求 y_p 學透,你便掌握了受迫響應——在它將來出現的每一個地方。