Series · ODE Foundations · Chapter 4

常微分方程(四):拉普拉斯变换

工程师的秘密武器:用拉普拉斯变换把微分方程化为代数。学习核心性质、部分分式、传递函数和 PID 控制基础。

拉普拉斯变换把微积分变成了代数。 不必再硬算积分、猜试解、再把初值条件一条条对上。它把整个 ODE — 方程、激励、初始条件 — 一并丢进复变量 $s$ 的一道多项式方程里,像解中学题一样解出来,再变换回去。沿途还有一份意外的礼物:解的形状被翻译成了几何 — 极点落在复平面左半边就衰减,落在右半边就发散,落在虚轴上就永不停歇地振荡。本章从定义出发把这套图像一砖一瓦搭起来,再连接到工程上把拉普拉斯变换变成动力学通用语的那几件工具:传递函数、Bode 图、PID 控制。

本章要点

  • 定义,以及把 $e^{-st}$ 理解为"衰减探针"的直觉
  • 微分性质 — 把 ODE 化为代数的关键
  • 一张够用的小变换表,本章几乎所有反变换都查它
  • 部分分式分解:实极点、重极点、复极点
  • 传递函数、极零点图,以及稳定性的几何判据
  • 阶跃响应与冲激响应:它们已经把整个系统说全了
  • Bode 图:时间域与频率域的两面镜子
  • PID 控制:P、I、D 各自补对方的短板

前置知识

  • 第一至三章:一阶、二阶 ODE 与叠加原理
  • 代数/微积分中的部分分式分解
  • 复数的基础知识($a + bi$、模、幅角)
  • 熟悉 $\int_0^\infty e^{-st}\,dt$ 这一类积分

1. 为什么需要拉普拉斯变换

考虑由电压源驱动的 RC 电路:

$$RC\,V_c'(t) + V_c(t) = V_s(t), \qquad V_c(0) = V_0.$$

如果 $V_s$ 是常数,用积分因子两行就能写完。但只要 $V_s$ 变成开关式的阶跃、瞬时冲激、斜坡,或者实验台上信号源给的某段分段波形,初等方法就开始变得繁琐 — 一堆积分常数、分段拼接条件、各种讨论。

拉普拉斯变换给出一套统一的流程,把这些情况一次性收编:

  1. 变换等式两边 — 导数变成 $s$ 的多项式,初值条件被自动吸收。
  2. 对 $Y(s)$ 代数地求解
  3. 用一张小表 反变换回 $y(t)$。

那些琐碎的记账工作消失了,剩下的是一种干净的分工:在驱动系统(输入的变换)、系统做了什么(传递函数)、它从哪里起步(初值条件,已经被编织进去了)。

拉普拉斯变换的基本组件:单位阶跃、Dirac 冲激、衰减探针 $e^{-st}$。
拉普拉斯变换是把信号 $f(t)$ 与探针 $e^{-st}$ 做积分。阶跃和冲激是本章贯穿始终的两种典型输入。


2. 定义与一张可工作的变换表

2.1 正变换

$$F(s) = \mathcal{L}\{f(t)\} = \int_0^\infty f(t)\,e^{-st}\,dt.$$

直觉。 把 $e^{-st}$ 看成一根探针:对每个复频率 $s$,它问的是 — 如果我用一个以速率 $\operatorname{Re}(s)$ 衰减的指数去加权 $f$,还能剩下多少? $s$ 取得很大且为正时,探针只看得见 $f$ 在 $t = 0$ 附近的行为;$\operatorname{Re}(s)$ 取得很小时,它看到的是远端的尾巴。完整的 $F(s)$ 就是把所有 $s$ 上的回答放在一起 — 这是 $f$ 的一份指纹。

2.2 一张够用的变换表

$f(t)$$F(s) = \mathcal{L}\{f(t)\}$收敛域
$1$(或 $u(t)$)$1/s$$\operatorname{Re}(s) > 0$
$t^n$$n!/s^{n+1}$$\operatorname{Re}(s) > 0$
$e^{at}$$1/(s-a)$$\operatorname{Re}(s) > a$
$\sin\omega t$$\omega/(s^2+\omega^2)$$\operatorname{Re}(s) > 0$
$\cos\omega t$$s/(s^2+\omega^2)$$\operatorname{Re}(s) > 0$
$e^{at}\sin\omega t$$\omega/((s-a)^2+\omega^2)$$\operatorname{Re}(s) > a$
$e^{at}\cos\omega t$$(s-a)/((s-a)^2+\omega^2)$$\operatorname{Re}(s) > a$
$\delta(t)$(冲激)$1$所有 $s$
$u(t-a)$(延迟阶跃)$e^{-as}/s$$\operatorname{Re}(s) > 0$

本章几乎所有的反变换问题都能用这张表解决。

2.3 从定义出发的两个推导

$\mathcal{L}\{1\}$。 直接积分:

$$\int_0^\infty e^{-st}\,dt = \left[-\frac{1}{s}\,e^{-st}\right]_0^\infty = \frac{1}{s}, \qquad \operatorname{Re}(s) > 0.$$

$\mathcal{L}\{e^{at}\}$。 先把指数合并再积分:

$$\int_0^\infty e^{at}\,e^{-st}\,dt = \int_0^\infty e^{-(s-a)t}\,dt = \frac{1}{s-a}, \qquad \operatorname{Re}(s) > a.$$

同样的小技巧 — 把 $e^{at}$ 折进核里 — 也正是后面频移性质之所以显然的原因。


3. 真正在干活的几条性质

3.1 线性

$$\mathcal{L}\{a f + b g\} = a F(s) + b G(s).$$

3.2 微分性质 — 整个学科的钥匙

$$\mathcal{L}\{f'(t)\} = sF(s) - f(0),$$$$\mathcal{L}\{f''(t)\} = s^2 F(s) - s f(0) - f'(0),$$$$\mathcal{L}\{f^{(n)}(t)\} = s^n F(s) - s^{n-1} f(0) - \cdots - f^{(n-1)}(0).$$

为什么重要。 对 $t$ 求导变成对 $s$ 相乘,并且初值条件就写在公式里,不再是事后需要补对的边界条件。一个 $n$ 阶线性 ODE 直接化为一个关于 $s$ 的 $n$ 次代数方程,而这个方程已经知道 $y(0), y'(0), \dots$ 是什么了。

证明只需要分部积分一次:

$$\int_0^\infty f'(t)\,e^{-st}\,dt = \left[f(t)\,e^{-st}\right]_0^\infty + s\int_0^\infty f(t)\,e^{-st}\,dt = sF(s) - f(0),$$

前提是 $f(t)\,e^{-st}\to 0$ 当 $t\to\infty$ — 这正是收敛域的含义所在。

3.3 频移

$$\mathcal{L}\{e^{at}f(t)\} = F(s-a).$$

时间域上乘 $e^{at}$,频域上整张图就被平移了 $a$。这正是为什么变换表里所有"带阻尼"的条目都只是其无阻尼对应物经过 $s\to s-a$ 替换得到的。

3.4 时移(延迟)

$$\mathcal{L}\{f(t-a)\,u(t-a)\} = e^{-as}F(s), \qquad a > 0.$$

时间上的延迟在 $s$ 域里就是一个相位因子 $e^{-as}$。注意要乘上闸门 $u(t-a)$ — 它保证你变换的是被延迟并且截掉头部的信号,而不是原信号。

3.5 卷积

$$\mathcal{L}\{(f * g)(t)\} = F(s)\,G(s), \qquad (f * g)(t) = \int_0^t f(\tau)\,g(t-\tau)\,d\tau.$$

时间域上 LTI 系统对输入的响应是一次卷积;到了 $s$ 域就只是相乘。这正是工程框图能成立的代数底座。

3.6 终值定理

$$\lim_{t\to\infty} f(t) = \lim_{s\to 0} sF(s),$$

成立的前提是该极限存在,并且 $sF(s)$ 的所有极点都严格落在左半平面。它能让你不做反变换就直接读出稳态值。


4. 求解 ODE:两个例子展示流程

4.1 一阶 + 指数激励

求解 $y' + 2y = e^{-t}$,$y(0) = 1$。

变换。 两边取 $\mathcal{L}$,套用微分性质:

$$sY(s) - 1 + 2Y(s) = \frac{1}{s+1}.$$

代数地求解。 合并整理:

$$(s+2)Y(s) = 1 + \frac{1}{s+1}, \qquad Y(s) = \frac{1}{s+2} + \frac{1}{(s+1)(s+2)}.$$

部分分式。 把 $\dfrac{1}{(s+1)(s+2)} = \dfrac{1}{s+1} - \dfrac{1}{s+2}$ 代入:

$$Y(s) = \frac{1}{s+2} + \frac{1}{s+1} - \frac{1}{s+2} = \frac{1}{s+1}.$$

反变换。 查表得 $\mathcal{L}^{-1}\{1/(s+1)\} = e^{-t}$。

$$\boxed{\; y(t) = e^{-t}.\;}$$

验证。 $y' + 2y = -e^{-t} + 2e^{-t} = e^{-t}$,且 $y(0) = 1$。完毕。

4.2 二阶共振

求解 $y'' + \omega_0^2\,y = \cos\omega_0 t$,$y(0) = y'(0) = 0$。

变换。 $\mathcal{L}\{y''\} = s^2 Y - sy(0) - y'(0)$,$\mathcal{L}\{\cos\omega_0 t\} = s/(s^2+\omega_0^2)$,得:

$$s^2 Y + \omega_0^2 Y = \frac{s}{s^2 + \omega_0^2}, \qquad Y(s) = \frac{s}{(s^2 + \omega_0^2)^2}.$$

反变换。 查表得:

$$y(t) = \frac{t}{2\omega_0}\,\sin\omega_0 t.$$

关键之处是这个显式的 $t$ 因子。代数上,它来自 $s = \pm j\omega_0$ 这一对重极点 — 一个更高重数的极点会在时间域里贡献"多项式 × 正弦"的项。物理上,它意味着振幅无界增长 — 这就是共振

同频驱动产生线性增长,异频驱动产生有界拍频。
$Y(s)$ 中的重极点是共振的代数指纹:反变换会"长出"一个 $t$ 因子,响应随时间线性增长。


5. 部分分式:你真正需要的那一项技术

只要 $Y(s)$ 已经是一个有理函数,反变换的绝大部分工作就是把它拆成若干个能在表里查到的小块。

5.1 不同的实极点

$$\frac{P(s)}{(s-a)(s-b)} = \frac{A}{s-a} + \frac{B}{s-b}.$$

遮盖法:$A$ 等于把 $(s-a)$ “盖住"之后剩下的 $P(s)/(s-b)$ 在 $s = a$ 处的取值。

5.2 重极点

$$\frac{P(s)}{(s-a)^3} = \frac{A_1}{s-a} + \frac{A_2}{(s-a)^2} + \frac{A_3}{(s-a)^3}.$$

每一个重数为 $k$ 的极点,在时间域里贡献一项形如 $t^{k-1}\,e^{at}/(k-1)!$ 的项。

5.3 共轭复极点

对于不可约的二次因子,先配方:

$$\frac{B s + C}{(s-\alpha)^2 + \beta^2}\;\xrightarrow{\;\mathcal{L}^{-1}\;}\; e^{\alpha t}\big(B \cos\beta t + D \sin\beta t\big),$$

其中 $D = (C + \alpha B)/\beta$ — 把分子先改写为 $B(s-\alpha) + (C + \alpha B)$ 即可。

反变换看作模式之和:把 $F(s)$ 拆成可查表的小块,再把时间域的分量加起来。
$Y(s) = \dfrac{3s+5}{(s+1)(s+2)} = \dfrac{2}{s+1} + \dfrac{1}{s+2}$,所以 $y(t) = 2 e^{-t} + e^{-2t}$。每一个极点贡献一个模式,再线性叠加。


6. 传递函数与稳定性的几何

6.1 定义

对一个把输入 $u(t)$ 映射到输出 $y(t)$ 的线性时不变(LTI)系统,定义

$$H(s) \;=\; \frac{Y(s)}{U(s)}\quad\text{(零初始条件下)}.$$

$H(s)$ 就是传递函数。它只和系统本身有关,与你喂进去什么、它从哪里起步无关。

例 — RC 低通滤波器。 由 $RC\,V_c' + V_c = V_s$ 和 $V_c(0) = 0$,

$$H(s) = \frac{1}{RCs + 1} = \frac{1}{\tau s + 1}, \qquad \tau = RC.$$

只有一个实极点,位于 $s = -1/\tau$。

6.2 极点、零点与稳定性

  • 零点是使 $H(s) = 0$ 的 $s$(分子的根)。
  • 极点是使 $H(s) \to \infty$ 的 $s$(分母的根)。

极点图决定了关于自由响应的一切。每一个极点在 $\mathcal{L}^{-1}\{H(s)\}$ 里贡献一个模式:

极点位置时间域模式行为
实数,$s = -a$,$a > 0$$e^{-at}$衰减到零
实数,$s = a > 0$$e^{at}$无界增长 — 不稳定
复数对 $\alpha \pm j\beta$,$\alpha < 0$$e^{\alpha t}(\cos\beta t,\sin\beta t)$阻尼振荡
纯虚 $\pm j\beta$$\cos\beta t,\,\sin\beta t$等幅振荡
复数对,$\alpha > 0$$e^{\alpha t}(\cos\beta t,\sin\beta t)$增长振荡 — 不稳定

稳定性的几何判据。 系统是渐近稳定的,当且仅当 $H(s)$ 的所有极点严格落在左半平面 $\operatorname{Re}(s) < 0$。

复 $s$ 平面上五种典型极点位置,以及它们各自产生的冲激响应。
极点的实部决定衰减速率,虚部决定振荡频率。稳定性问题不过是"极点是否落在左半平面”。

6.3 阶跃响应与冲激响应

两类典型激励都有自己的名字。

  • 冲激响应。 $h(t) = \mathcal{L}^{-1}\{H(s)\}$ — 输入是 Dirac 冲激时的输出。
  • 阶跃响应。 $s(t) = \mathcal{L}^{-1}\{H(s)/s\}$ — 输入是单位阶跃时的输出。
  • 关系。 $h(t) = s'(t)$。两者编码同样多的信息,因为阶跃就是冲激的积分。

只要拿到了 $h(t)$,对任何输入的响应都是卷积 $y(t) = (h * u)(t)$;等价地,$Y(s) = H(s)\,U(s)$。


7. 同一个系统的两扇窗:时间与频率

把 $s = j\omega$ 代回 $H(s)$,得到频率响应 $H(j\omega)$。$|H(j\omega)|$ 告诉你每个正弦频率被放大多少;$\arg H(j\omega)$ 告诉你被延迟多少。在对数–对数坐标上画出来,就是 Bode 图

对二阶规范系统

$$H(s) = \frac{\omega_n^2}{s^2 + 2\zeta\omega_n s + \omega_n^2},$$

阻尼比 $\zeta$ 控制着一切。$\zeta < 1$ 时极点是复数,阶跃响应有超调和振铃;$\zeta = 1$ 时它们汇合到 $-\omega_n$ 的二重实极点,响应在不超调的前提下尽可能快地上升;$\zeta > 1$ 时极点在实轴上分开,响应变得迟钝。

欠阻尼、临界阻尼、过阻尼三种二阶系统的阶跃响应与 Bode 图。
三种视角,同一个系统。时域的超调、频域的峰值、复平面上的极点位置 — 都是同一个无量纲数 $\zeta$ 的不同侧影。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
from scipy import signal
import numpy as np
import matplotlib.pyplot as plt

# H(s) = 1 / (s^2 + 0.5 s + 1) 欠阻尼二阶系统
sys = signal.TransferFunction([1.0], [1.0, 0.5, 1.0])

t, y = signal.step(sys)
w, mag, phase = signal.bode(sys)

fig, axes = plt.subplots(1, 3, figsize=(12, 3.5))
axes[0].plot(t, y);            axes[0].set_title("阶跃响应")
axes[1].semilogx(w, mag);      axes[1].set_title("Bode 幅频 (dB)")
axes[2].semilogx(w, phase);    axes[2].set_title("Bode 相频 (deg)")
for ax in axes: ax.grid(True, alpha=0.3, which="both")
plt.tight_layout()

8. PID 控制:每一项都在补另一项的短

PID 控制器是工业控制的主力。它根据跟踪误差 $e(t) = r(t) - y(t)$ 给出执行量 $u(t)$:

$$u(t) = K_p\,e(t) + K_i\!\int_0^t e(\tau)\,d\tau + K_d\,\frac{de}{dt}.$$

在 $s$ 域里,

$$C(s) = K_p + \frac{K_i}{s} + K_d\,s.$$

每一项都在弥补另外两项的特定弱点。

在做什么长处短处
P(比例)响应当前误差反应快留下稳态误差
I(积分)累积过去的误差把稳态误差驱到零拖慢系统、可能引起振荡
D(微分)预测误差走向抑制超调放大测量噪声

把 PID 围在被控对象 $G(s)$ 外面闭环,得到

$$T(s) = \frac{C(s)\,G(s)}{1 + C(s)\,G(s)}.$$

调节 $K_p, K_i, K_d$ 就是在 $s$ 平面上挪动闭环极点。这门手艺的目标是把它们推得离左半平面深处足够远(保稳定、保速度),又不让虚部过大(避免振铃)。

P-only、PI、整定后的 PID 三种控制器在同一个轻阻尼二阶被控对象上的闭环阶跃响应。
P 单干会留下稳态偏差。加上 I 偏差消除了,但系统变慢、超调变大。再加上 D 把超调压下去,整定后的 PID 很快就稳定地落进 $\pm 5\%$ 的带子里。


9. Python 实践:符号与数值

9.1 用 SymPy 做符号变换

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
from sympy import (symbols, laplace_transform, inverse_laplace_transform,
                   exp, sin, apart)

s, t = symbols("s t")
a, omega = symbols("a omega", positive=True)

print("L{1}        =", laplace_transform(1, t, s))
print("L{exp(-at)} =", laplace_transform(exp(-a*t), t, s))
print("L{sin(wt)}  =", laplace_transform(sin(omega*t), t, s))

F = (3*s + 5) / ((s + 1) * (s + 2))
print("partial fractions:", apart(F, s))
print("L^{-1}{F}        =", inverse_laplace_transform(F, s, t))

9.2 用 SciPy 做极零点分析

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
import numpy as np
from scipy import signal

# H(s) = (s + 2) / (s^2 + 3 s + 2)
sys = signal.TransferFunction([1, 2], [1, 3, 2])

poles = np.roots([1, 3, 2])
zeros = np.roots([1, 2])
stable = all(p.real < 0 for p in poles)

print(f"poles  = {poles}")
print(f"zeros  = {zeros}")
print(f"stable = {stable}")

10. 总结

五步工作流

  1. 变换等式两边,把初值条件吸收进去。
  2. 代数地求解 $Y(s)$。
  3. 部分分式分解
  4. 对照表逐项反变换
  5. 代回原方程验证

一定要记住的几条性质

性质公式用在哪里
微分$\mathcal{L}\{f'\} = sF(s) - f(0)$把 ODE 化为代数
频移$\mathcal{L}\{e^{at}f\} = F(s-a)$阻尼振子、指数激励
时移$\mathcal{L}\{f(t-a)u(t-a)\} = e^{-as}F(s)$延迟、开关式输入
卷积$\mathcal{L}\{f * g\} = F(s)\,G(s)$框图、系统响应
终值$\lim_{t\to\infty} f = \lim_{s\to 0} sF(s)$不做反变换就读稳态

一句话总览

线性时不变系统的天然栖息地是 $s$ 平面:极点是它们的基因,左半平面就是"稳定",时间域里的运算到了 $s$ 域就化简成了算术。


练习题

基础

  1. 用频移性质求 $\mathcal{L}\{t^2 e^{-3t}\}$ 和 $\mathcal{L}\{e^{2t}\sin 3t\}$。
  2. 反变换 $F(s) = \dfrac{2s+1}{(s+1)(s+3)}$。
  3. 用拉普拉斯变换求解 $y' + 3y = e^{-2t}$,$y(0) = 1$,并验证答案。
  4. 通过分部积分从定义出发证明微分性质 $\mathcal{L}\{f'\} = sF(s) - f(0)$,并准确写出在 $t \to \infty$ 处需要的条件。

进阶

  1. 求解 $y'' + 4y = \delta(t)$,$y(0) = y'(0) = 0$,并解释为什么冲激响应等于 $\tfrac{1}{2}\sin 2t$。
  2. 对 $H(s) = \dfrac{10}{s^2 + 2s + 10}$,求极点、冲激响应、阶跃响应。从中读出 $\zeta$ 与 $\omega_n$。
  3. 用终值定理求 $\lim_{t\to\infty} y(t)$,其中 $Y(s) = \dfrac{5}{s(s^2+3s+2)}$,并验证定理的前提是否满足。

编程

  1. 画出 $H(s) = \dfrac{100}{s^2 + 10s + 100}$ 的 Bode 幅频与相频,从图上估读谐振峰的位置,并与 $\omega_n\sqrt{1 - 2\zeta^2}$ 的理论值对比。
  2. 用 SciPy 的 lsim 模拟带纯时延的系统 $H(s) = \dfrac{e^{-s}}{s+1}$ 的阶跃响应,先用 Padé 近似把延迟展开成有理函数。

参考资料

  • Kreyszig, E. Advanced Engineering Mathematics(第 10 版),Wiley (2011) — 第 6 章是拉普拉斯变换的标准教材化处理。
  • Ogata, K. Modern Control Engineering(第 5 版),Pearson (2010) — 极零点分析、Bode 图、PID 整定的深入讲解。
  • Oppenheim, A. V. & Willsky, A. S. Signals and Systems(第 2 版),Prentice Hall (1997) — 信号工程视角与卷积。
  • Strang, G. Differential Equations and Linear Algebra,Wellesley-Cambridge (2014) — 几何味更浓的入门读物。
  • SciPy: scipy.signal — 传递函数、阶跃/冲激响应、Bode 图的 Python 工具。

系列导航

上一章第三章:高阶线性微分方程
当前第四章:拉普拉斯变换
下一章第五章:级数解法与特殊函数

Liked this piece?

Follow on GitHub for the next one — usually one a week.

GitHub