一個對象就能概括的系統
整整一級裡,你一遍又一遍地用著同一個節奏:把一個微分方程變換,在 s 裡解代數,再求逆。看看這台機器對一個靜止的線性常係數系統究竟產出了什麼。把諸如 y'' + 2 y' + 5 y = x(t) 這樣的方程變換、令一切初始條件為零,導數便化成 s 的冪,沒有殘留的邊界項;方程坍縮成 (s^2 + 2 s + 5) Y(s) = X(s)。解出輸出便得 Y(s) = X(s) / (s^2 + 2 s + 5)。看清剛剛發生的事:系統把變換後的輸入乘上一個固定的因子,再交回變換後的輸出。
那個固定的因子值得擁有一個名字。傳遞函數 H(s) 是變換後輸出與變換後輸入之比,Y(s) = H(s) X(s),在系統起始於靜止的前提下一勞永逸地算出。對我們的例子,H(s) = 1/(s^2 + 2 s + 5),而你能直接從微分方程的係數把它讀出來——無需求解。它是把這個盒子的整套輸入-輸出個性,擠壓進單單一個 s 的多項式之比。餵進任何輸入,乘上同一個 H(s),求逆,響應便出來了。傳遞函數就是這個盒子所做一切的 s 域概括。
衝激響應:敲它一下,聽一聽
傳遞函數有一個活在時間裡的孿生兄弟,而它有一層美妙的物理含義。敲一下鐘,要快、要利,聽一聽:那盪開又消逝的聲響就是鐘的簽名。這一記利落敲擊的數學版本,是單位衝激,即狄拉克 delta delta(t)——一個時長為零、總強度為一的輸入。把 delta(t) 餵進一個起始於靜止的系統,得到的輸出便稱為衝激響應,記作 h(t)。它是系統的指紋:你戳它一下、退後一步,它如何鳴響、衰減或共振。
美妙的關聯在此。狄拉克 delta 在 s 域裡是最乾淨不過的輸入,因為它的拉普拉斯變換恰是 1——一條平坦、毫無特徵的譜。於是當輸入為 delta(t),變換後的輸入 X(s) 等於 1,而 Y(s) = H(s) X(s) 便簡化為 Y(s) = H(s)。變換後的衝激響應,就是傳遞函數本身。換言之,h(t) 與 H(s) 是一對拉普拉斯變換對:衝激響應是 H(s) 的拉普拉斯逆變換,而 H(s) 是 h(t) 的變換。同一個系統戴著兩副面孔——時間裡的 h(t),s 裡的 H(s)——而單單一個積分把它們聯繫起來。
為什麼一次敲擊能預言每個輸入
「衝激響應是一份*完整*指紋」這一斷言,聽上去未免太強。敲一下,你就知道對萬物的響應?然而對線性時不變系統,它恰恰為真,緣由正是你早些時候在本級遇到的卷積定理。在 s 域裡,輸出是簡單的乘積 Y(s) = H(s) X(s)。卷積定理說,把兩個變換相乘,回到時間裡對應的並不是把函數相乘,而是把它們*卷積*。於是時間域的輸出是 y(t) = 從 0 到 t 對 h(tau) x(t - tau) d tau 積分。
把那個積分當作一個故事來讀,它便不再神秘。把輸入 x(t) 想成一列密集的衝激:在過去時間的每一個微小切片 tau 裡,輸入遞出了一記大小為 x(t - tau) 的小敲擊。系統對一記敲擊的回應是 h,經過縮放與延遲。卷積積分不過是把系統對那每一記小敲擊的回聲加起來,每個回聲都按它當時的大小加權、按它落下已有多久而衰減。這便是為何單單一個響應 h(t) 就夠了——因為線性讓你能用縮放、平移的衝激搭出任何輸入,而時不變性說系統對每一記的回應方式都相同,只是更晚。整個預言歸結為把回聲相加。
s 平面裡的極點,以及它們告訴你什麼
在我們打開逆變換之前,先看看傳遞函數在何處發散。對一個有理的 H(s)(多項式之比),使分母為零的那些 s 值稱為極點——H(s) 在那裡衝向無窮的點。對 H(s) = 1/(s^2 + 2 s + 5),分母分解後的根是 s = -1 + 2 i 與 s = -1 - 2 i,於是複 s 平面裡坐著兩個極點。它們不是代數上的奇趣;它們的位置編碼了系統的整套定性行為,而你一眼就能把答案讀出來。
一個在 s = a 處的極點,意味著衝激響應裡含有一項正比於 e^{a t} 的項。於是每個極點的*實部*決定了那一項的命運。實部為負、坐在 s 平面左半邊的極點,給出衰減的 e^{a t}——系統安定下來。實部為正、在右半平面的極點,給出增長的項——系統不穩定、失控發散。而*虛部*決定了鳴響的頻率。我們那兩個在 -1 +/- 2 i 的極點實部為 -1(故響應像 e^{-t} 那樣衰減)、虛部為 +/- 2(故以頻率 2 振盪):衝激響應是一個阻尼正弦,e^{-t} 乘一個正弦——一口被敲響的鐘,以音高 2 鳴響並漸漸隱去。整個故事,從平面裡的兩個點便讀了出來。
表的底下:布羅姆維奇積分
整整一級裡,我們都靠倒著讀表來求逆——用部分分式把 F(s) 拆開,直到每一塊都對上某個表項,再查出對應的時間函數。這管用,也快,但它是辨認,不是定義。一個不出現在任何表裡的 F(s),它的拉普拉斯逆變換究竟*是*什麼?必得有一個誠實的公式,從 F(s) 直接復原 f(t),是定義積分 F(s) = 從 0 到無窮對 e^{-s t} f(t) dt 的精確逆運算。確有其物,它叫布羅姆維奇積分。
公式在此,請立刻注意它棲居於複平面:f(t) = (1/(2 pi i)) 乘以沿豎直線 Re(s) = c 對 e^{s t} F(s) ds 的積分。你沿 s 平面裡一條筆直的豎線向上積分,從底端的 c - i*infinity 到頂端的 c + i*infinity,其中 c 是任意一個被放在 F(s) 一切奇點右側的實數——也就是落在收斂域之內。這條豎直路徑就是布羅姆維奇圍道。因子 e^{s t} 是當初搭起正變換那個 e^{-s t} 的逆向搭檔,而 1/(2 pi i) 則是複圍道積分的指紋。正是在這裡,拉普拉斯變換不再是實變量的記帳,而成了貨真價實的複分析。
Im(s) Bromwich contour: vertical line Re(s)=c,
^ placed RIGHT of every pole of F(s).
| : line Re(s)=c
pole x : --> close to the LEFT with a big arc
| :
-------+--------:------------> Re(s)
| :
pole x :
| :
f(t) = (1/(2 pi i)) * integral_{c - i*inf}^{c + i*inf} e^{s t} F(s) ds
Close left, apply the residue theorem:
f(t) = sum over all poles s = a of Res[ e^{s t} F(s) , s = a ]
Simple pole at s = a -> residue = e^{a t} * (numerator / denominator')|_{s=a}
-> contributes a term proportional to e^{a t}.把圍道閉合——以及為何部分分式一直就是留數
你幾乎從不直接沿那條無限長的豎線積分。取而代之,你動用複分析的看家本領:閉合圍道。向*左*甩出一段巨大的半圓弧,把豎線的頂端接回底端,使路徑成為一個圈住 F(s) 一切極點的閉合迴路。當 t > 0,因子 e^{s t} 在那段左弧上衰減——因為那裡的 s 有很大的負實部——而隨著弧的增大,弧的貢獻消失(這是帶拉普拉斯味道的若爾當引理)。剩下的就是那個閉合迴路,而一個繞著極點的閉合迴路,恰恰是留數定理生來就要求值的對象。
留數定理說,閉合迴路積分等於 2 pi i 乘以被積函數在所圈極點處留數之和。這個 2 pi i 抵消掉前頭的 1/(2 pi i),留下乾淨的陳述:f(t) = e^{s t} F(s) 在一切極點處留數之和。這裡便是把本篇與之前一切繫在一起的回報。在一個簡單極點 s = a 處,e^{s t} F(s) 的留數是一個常數乘 e^{a t}。於是用留數對有理的 F(s) 求逆,恰好產出一個指數項之和,每個極點一項——與「查表加部分分式」給出的答案分毫不差。原來,部分分式一直就在算留數,只是披著代數的外衣。