s 域裡的乘積,t 域裡的謎
到現在,拉普拉斯的往返你已駕輕就熟:把問題變換過去、在 s 域裡解容易的代數,再搭著逆變換回家。一路上,你不斷碰到乘積。解出 Y(s) 時,常常落得像 Y(s) = H(s) * F(s) 這樣——一個變換乘上另一個。把單一因子反變換沒問題,但這裡有個你也許已踩過的陷阱:乘積的逆變換並不是各自逆變換的乘積。L^(-1){H * F} 幾乎從不等於 (L^(-1){H}) 乘 (L^(-1){F})。那麼,兩個變換的乘積,搬回時間裡究竟代表哪一個函數?
把這個陷阱具體看一遍是值得的。取 H(s) = 1/s 與 F(s) = 1/s,乘積便是 1/s^2。我們知道 1/s 反變換成常數 1,也知道 1/s^2 反變換成 t。若乘積的逆變換真等於逆變換的乘積,我們會得到 1 乘 1 = 1——但真正的答案是 t。乘積 1/s^2 並非由兩個時間函數相乘而來;它來自一種不同、更溫和地把 1 與它自身結合起來的方式。這個結合運算正是整篇導引的主角,它有個名字:卷積。
卷積究竟在做什麼
兩個函數 f 與 g 的卷積,記作 (f * g)(t),由一道積分定義:(f * g)(t) = 從 0 到 t 對 f(tau) * g(t - tau) dtau 積分。把各部分慢慢讀。變數 tau 在從 0 到當下時間 t 的區間上跑。在每個瞬間 tau,你取值 f(tau),乘上 g(t - tau)——這第二個函數被翻轉並滑動,讓它的「現在」對齊「tau 是多久以前」。然後把這些乘積全部加總。它是兩個函數的一種滑動、加權的摻和,而不是逐點相乘。
一幅圖能幫上忙。把 f(tau) 想成隨時間陸續抵達的一串小輸入,而 g 是系統對單一輸入、在它已老化 (t - tau) 之後的響應。很久以前落下的輸入(tau 小、t - tau 大)被 g 在其尾巴遠處的值加權;剛抵達的輸入(tau 接近 t)則被 g 在起點附近的值加權。卷積把每一個過去輸入殘留的效應加總起來,各自依它演化了多久而衰褪。這個「對歷史求和」的讀法,正是為什麼凡是系統當下狀態由其全部過去構築而成時,它就會現身。
把兩個世界繫起來的定理
回報來了,而且漂亮俐落。卷積定理說:L{f * g} = F(s) * G(s)。用白話講,時域裡的卷積,在 s 域裡變成普通的乘法。橋這一側那道雜亂的摻和積分,對應到對岸一個單純的乘積。這正是開篇那道謎反過來的拼圖:既然把變換相乘等於把卷積變換,那麼乘積 H(s) * F(s) 的逆變換,就必然是卷積 L^(-1){H} * L^(-1){F}——而不是兩個時間函數的乘積。
Convolution: (f * g)(t) = integral_0^t f(tau) g(t - tau) dtau
The theorem: L{ f * g } = F(s) G(s)
Run backward: L^(-1){ F(s) G(s) } = f * g
Sanity check: 1 * 1 = integral_0^t 1 * 1 dtau = t
L{1} L{1} = (1/s)(1/s) = 1/s^2 = L{t} ✓請留意這為何是真正有用、而不只是工整。你常常能把一個頑固的 Y(s) 拆成兩個各自認得的因子之乘積,即便部分分式會很醜或根本辦不到——例如當某個因子像 F(s) 因輸入是任意的而保留成符號時。與其跟代數搏鬥,你把每個因子分別反變換,再做卷積。卷積定理遞給你第二條、獨立的過橋回家之路,而有時它是唯一可行的那一條。
把脈衝響應當作萬能鑰匙
現在本節的觀念全部扣合在一起。上一篇你已認識了 狄拉克 delta與脈衝響應 h(t):當你在 t = 0 用單一、瞬間的單位一擊敲打系統時的輸出。本節的主張是:h(t) 不只是一個特殊的答案——它暗中包含了對*每一個*輸入的答案。原因是把卷積定理用在一個線性、非時變的系統上。
推理鏈是這樣的。脈衝響應依定義就是系統轉移函數 H(s) 的逆變換——也就是 H(s) = L{h}。現在餵給同一個系統任意強迫 f(t),其變換為 F(s);這個輸入輸出系統的代數給出 Y(s) = H(s) * F(s)。用卷積定理把這個乘積反變換,便得 y(t) = (h * f)(t) = 從 0 到 t 對 h(t - tau) * f(tau) dtau 積分。讀懂它在說什麼:對任意輸入的響應,就是輸入與脈衝響應的卷積。只要知道系統如何回應單一一擊,你就知道它如何回應任何東西。
一條完整走過的線,與一條誠實的界線
- 取一個轉移函數為 H(s) = 1/(s + 1) 的系統;反變換回去,找到它的脈衝響應 h(t) = e^(-t)。
- 用一個在 t = 0 開啟、穩定的輸入 f(t) = 1 去驅動它;你想得到輸出,而不必重解那條 ODE。
- 做卷積:y(t) = (h * f)(t) = 從 0 到 t 對 e^(-(t - tau)) * 1 dtau 積分。
- 算出這道積分,得 y(t) = 1 - e^(-t)——那條朝穩態攀升的熟悉曲線,全程不見任何特徵方程。
用另一條路交叉驗算,方法的一致性就顯現了:Y(s) = H(s) * F(s) = (1/(s + 1)) * (1/s) = 1/(s(s + 1)),由部分分式得 1/s - 1/(s + 1),反變換成 1 - e^(-t)。同一個答案,兩條路。這份等價並非巧合——它正是卷積定理所打包的那個積分與乘積的對應。當輸入具體時,部分分式通常更快;當輸入保留一般形、或確實棘手時,卷積這條路便勝出。
對卷積能買到什麼、買不到什麼,要誠實。公式 y = h * f 只給出響應裡由輸入驅動的那部分——即從系統完全靜止出發的強迫部分。若你的問題帶有非零初始條件,那些會由導數規則貢獻出自己額外的項,需另外加上。卷積之所以乾淨,也主要是因為我們假設系統是線性且非時變的;一旦係數隨時間變動、或出現非線性,h 就不再是單一固定的形狀,「一擊知全部」的故事便瓦解。但在它誠實的適用範圍內,它是整個學科中最強大的單一觀念之一。