從一直開著的開關,到一瞬即逝的一擊
上一篇交給了你赫維塞德階梯——一個在某個時刻把強迫項打開、然後一直開著的開關。它涵蓋了你插上電的電路、放下後不再動的負載。但大自然也給我們一些作用後幾乎立刻消失的力:撞球擊中另一顆球、鎚子輕敲音叉、短促的電壓尖峰。總推力是有限的,卻在一瞬間就送了出去。對於一個你還沒眨眼就結束的東西,你要怎麼寫下它的強迫函數呢?
這裡有個業內的訣竅。想像一個力是又高又窄的矩形脈衝:到處為零,唯獨在從 t = 0 起、寬度為 e 的一小段窗口上,高度為 1/e。注意它的面積恰好是 (1/e) 乘以 e = 1,無論 e 多麼小。現在收窄這扇窗——讓 e 趨向零。脈衝變得更高更窄,但它始終圍出同樣的一個單位面積。這番擠壓的極限,就是狄拉克 δ,記作 delta(t):一個寬度為零、高度無窮、面積恰為 1 的對象。
扛起一切的那一條性質
delta 所做的一切,都源自單獨一條規則,即篩選性質。若你把 delta(t - a) 乘上任何規矩的函數 g(t),再對所有時間積分,t = a 處的尖峰會伸進去、單單挑出那一個值 g(a):g(t) delta(t - a) 的積分 = g(a)。這就是全部的魔法。那道無窮尖峰,與一個光滑函數相權,篩出了它在尖峰所在那一瞬的高度。位移版本 delta(t - a) 只是把這一擊放在時刻 a,而非原點——正是你在階梯那裡已見過的 t 位移想法。
現在看它在 s 域裡的回報。直接從定義取 delta(t - a) 的拉普拉斯變換:L{delta(t - a)} = 從 0 到無窮對 e^(-s t) delta(t - a) dt 積分。但這道積分正是 g(t) = e^(-s t) 的篩選性質,所以它等於 g(a) = e^(-a s)。對於原點上的一擊(a = 0),更是簡單:L{delta(t)} = 1。再讀一遍。可想像中最猛烈、最尖銳的輸入,竟有著所有輸入中最溫順的變換——不過是常數 1。
Sifting: integral_0^infinity g(t) delta(t - a) dt = g(a) (a >= 0)
Transforms: L{ delta(t) } = 1
L{ delta(t - a) } = e^(-a s)
Compare step: L{ u(t - a) } = e^(-a s) / s
Delta = derivative of the step: delta(t) = u'(t) (in the distribution sense)在框中最後一行裡,藏著一個優美的關係。赫維塞德階梯從 0 跳到 1;它的變化率處處為零,唯獨在跳躍那一點,變化得無窮快。那一陣瞬間的、單位面積的斜率爆發,恰恰就是 delta。所以 delta(t) 是階梯的導數 u'(t)——反過來,階梯是 delta 的累積積分。兩者的變換完美吻合:求導使變換 e^(-a s)/s 乘上 s,把 1/s 抵消,留下 e^(-a s)。本節這兩個新對象並非各自獨立的發明;它們是同一道邊緣的兩種視角。
踢一腳系統:脈衝響應
現在讓 delta 上工,當作一個強迫項。取一個熟悉的質量-彈簧-阻尼系統,靜止著,然後敲它一下:m y'' + b y' + k y = delta(t),其中 y(0) = 0、y'(0) = 0。系統一開始死寂不動,在 t = 0 受到一記猛擊,之後便任其自行衰盪。隨之而來的運動如此重要,以致它有自己的名字:脈衝響應,通常記作 h(t)。它是系統的指紋——這一具特定的質量、彈簧、阻尼器,對單一單位猛擊的回答。
解它快得幾乎令人難為情,而這正是前幾篇的功夫得到回報之處。兩邊做變換。導數法則把左邊化成 (m s^2 + b s + k) Y(s),沒有殘留的初值項,因為系統由靜止出發。右邊是 L{delta(t)} = 1。於是 (m s^2 + b s + k) Y = 1,立刻給出 Y(s) = 1 / (m s^2 + b s + k)。沒有要搏鬥的強迫積分,右邊也沒有雜亂的部分分式——delta 送來了一個光禿禿的 1。
為何這一擊是萬能鑰匙
你或許覺得脈衝響應是個狹隘的奇談——真有誰會拿理想化的無窮尖峰去敲東西?答案是,這一擊是通往其他每一種輸入的萬能鑰匙。對一個輕阻尼的情形,把 Y(s) 用反變換帶回家,你會得到一條衰減、振盪的 h(t):系統由那一擊啟動、隨著阻尼器耗散能量而漸弱的固有欠阻尼振盪。原來,這單獨一條曲線,悄悄地編碼了對任意強迫的響應。
這裡是直覺,下一篇會把它說得精確。任何強迫函數 f(t),都可想像成一列密集的微小猛擊——在每一瞬,是一個強度為 f(t) dt 的 delta。由於方程是線性的,總響應不過是對所有這些小擊之響應的總和,而每一個響應都是 h(t) 的一份拷貝,在它自己的時刻啟動、按其強度縮放。這個「眾擊疊加」之和,恰好就是 f 與 h 的卷積,也就是第三篇所環繞的運算。瞬間的一擊,就是組裝出每一個響應的那顆原子。
而你上面找到的那個倒數 1 / (m s^2 + b s + k),正是轉移函數的初次現身——系統在 s 域中由輸入到輸出的增益,也是第四篇的主角。把任意輸入的變換乘上它,便得到輸出的變換;它的分母是特徵多項式,其根將決定系統是穩定下來還是發散。所以這短短一篇,悄悄為本節其餘部分播下種子:一擊給你 h(t),h(t) 構築卷積,而它的變換就是轉移函數。
從頭到尾解一個被踢的問題
讓我們把一個具體例子從頭走到尾,好讓抽象落地。取 y'' + y = delta(t - pi),其中 y(0) = 0、y'(0) = 0——一個無阻尼振子,靜止著,在時刻 t = pi 被擊一次。我們將循著主算法:變換、解出 Y、反變換。看 delta 如何讓第一步變得輕而易舉,而 t 位移 e^(-a s) 又如何替延遲記好帳。
- 兩邊做變換。在零初值下 L{y''} = s^2 Y,而 L{delta(t - pi)} = e^(-pi s),於是 (s^2 + 1) Y = e^(-pi s)。
- 用簡單的除法解出 Y:Y(s) = e^(-pi s) / (s^2 + 1)。
- 認出各片段:1/(s^2 + 1) 是 sin(t) 的變換,而因子 e^(-pi s) 意味著「延遲 pi」——這正是第二位移定理在運作。
- 反變換:y(t) = u(t - pi) sin(t - pi)——也就是說,y 在 t = pi 之前恰好為 0,之後開始一段純正弦,振子永遠振盪不止,因為沒有阻尼。
退一步,欣賞它跑得多麼乾淨俐落。在 t = pi 那一擊到來之前,系統什麼也沒做——因果性藉由第二位移定理所供給的階梯 u(t - pi),清楚可見地內建其中。猛擊之後,它就照著自己的脈衝響應所規定的那樣振盪。那個看似永遠無法積分的怪物 delta,結果竟是讓代數最為簡短的那個輸入。這就是本節反覆出現的教訓:一個輸入在時域裡看起來越粗糙,它在 s 域裡往往越友善。