【信号与系统】一道题吃透二阶系统:RLC 电路 + ζ/ωn 标准式(附 MATLAB 风格配图)
本文从一个经典教材习题(二阶系统 H(s)=b1s+b0s2+a1s+a0H(s)=\dfrac{b_1s+b_0}{s^2+a_1s+a_0}H(s)=s2+a1s+a0b1s+b0)出发,用 RLC 串联电路作为物理载体,配合 s 平面极点图、冲激响应曲线、根轨迹,把"为什么二阶系统要用 ζ、ωn 表示"讲透。配图全部可复现,文末附 Python 脚本。
📌 写在前面
学二阶系统时,很多人卡在两个地方:
- 公式里的 a1,a0a_1,a_0a1,a0 到底代表什么物理意义?
- 教材为什么非要把它改写成 s2+2ζωns+ωn2s^2+2\zeta\omega_n s+\omega_n^2s2+2ζωns+ωn2,多此一举?
其实只要挂到一个真实的电路------RLC 串联电路上,这两个问题瞬间就通了。下面我们一步步来。
一、电路长什么样?

图1:RLC 串联电路。输入 x(t) 为电压源,输出 y(t)=v_C(t) 取电容两端电压。
这是一个再普通不过的串联电路:电压源 x(t)x(t)x(t) 驱动 R-L-C 串联回路,输出取电容电压 y(t)=vC(t)y(t)=v_C(t)y(t)=vC(t)。
二、从电路到微分方程(对应题 a)
设回路电流 i(t)i(t)i(t),电容上有 i=Cv˙Ci=C\dot v_Ci=Cv˙C。对整个回路列 KVL(基尔霍夫电压定律):
Li˙+R i+vC=x(t),i=Cv˙C L\dot i + R\,i + v_C = x(t),\qquad i = C\dot v_C Li˙+Ri+vC=x(t),i=Cv˙C
消去 iii,得到:
LC y¨+RC y˙+y=x(t) \boxed{\,LC\,\ddot y + RC\,\dot y + y = x(t)\,} LCy¨+RCy˙+y=x(t)
两边同除 LCLCLC,对照一般二阶系统的微分方程 y¨+a1y˙+a0y=b0x\ddot y + a_1\dot y + a_0 y = b_0 xy¨+a1y˙+a0y=b0x(这里 b1=0b_1=0b1=0),得到系数对应关系:
| 一般形式系数 | 在电路里的值 |
|---|---|
| a0a_0a0 | 1LC\dfrac{1}{LC}LC1 |
| a1a_1a1 | RL\dfrac{R}{L}LR |
| b0b_0b0 | 1LC\dfrac{1}{LC}LC1 |
💡 小贴士 :同一个电路,从电阻 两端取输出 y=vRy=v_Ry=vR,会得到 b1≠0b_1\neq0b1=0(带通)形式;从电感 取则为高通。分子 b1,b0b_1,b_0b1,b0 由"从哪个元件取输出"决定,分母 a1,a0a_1,a_0a1,a0 只由回路本身决定。
三、ζ、ωn 与 R、L、C 的关系(对应题 c)
教材总喜欢把分母写成标准形式 s2+2ζωns+ωn2s^2+2\zeta\omega_n s+\omega_n^2s2+2ζωns+ωn2。比对系数即可:
ωn=1LC,ζ=R2CL \boxed{\,\omega_n=\frac{1}{\sqrt{LC}},\qquad \zeta=\frac{R}{2}\sqrt{\frac{C}{L}}\,} ωn=LC 1,ζ=2RLC
这俩式子是全文最关键的洞察,请记住:
- LLL、CCC 决定 ωn\omega_nωn → 决定响应的快慢 / 振荡频率;
- RRR 决定 ζ\zetaζ → RRR 是回路里唯一的耗能元件,它就是"阻尼"。
一句话:R 越大,ζ\zetaζ 越大,振荡越弱。
四、三种极点情况(对应题 b、c)

图2:s 平面上三种极点分布(取 ωn=1)。 左:过阻尼(两相异实极点);中:临界阻尼(实数重根);右:欠阻尼(共轭复数对)。
把电阻 RRR 从小调到大,ζ\zetaζ 从 0 增到 >1>1>1,极点会经历三个阶段:
| 阻尼类型 | 条件(标准式) | 极点位置 | 物理含义 |
|---|---|---|---|
| 欠阻尼 | 0<ζ<10<\zeta<10<ζ<1 | −ζωn±jωd-\zeta\omega_n\pm j\omega_d−ζωn±jωd(共轭复数) | R 小,能量损耗慢,电流在 L↔C 间反复交换 → 振荡 |
| 临界阻尼 | ζ=1\zeta=1ζ=1 | −ωn-\omega_n−ωn(实数重根) | R 刚好大到不振荡 |
| 过阻尼 | ζ>1\zeta>1ζ>1 | 两个相异负实数 | R 很大,能量被迅速消耗,不振荡但变慢 |
其中阻尼自然频率 ωd=ωn1−ζ2\omega_d=\omega_n\sqrt{1-\zeta^2}ωd=ωn1−ζ2 。
这三种情况对应同一个判别式 Δ=a12−4a0=4ωn2(ζ2−1)\Delta=a_1^2-4a_0=4\omega_n^2(\zeta^2-1)Δ=a12−4a0=4ωn2(ζ2−1) 的 <0, =0, >0<0,\,=0,\,>0<0,=0,>0。
五、冲激响应对比(对应题 d、e)

图3:三类二阶系统的冲激响应 h(t)(取 ωn=1, b0=ωn²)。 蓝色过阻尼、绿色临界阻尼、红色欠阻尼(虚线为包络)。
这张图直接对应题 (d) 的三条公式:
-
🔵 过阻尼(ζ=2\zeta=2ζ=2) :
h(t)=b02ωnζ2−1(es1t−es2t)u(t) h(t)=\frac{b_0}{2\omega_n\sqrt{\zeta^2-1}}\left(e^{s_1 t}-e^{s_2 t}\right)u(t) h(t)=2ωnζ2−1 b0(es1t−es2t)u(t)
单调爬升再衰减,不穿零,但被慢极点拖累,响应迟缓。
-
🟢 临界阻尼(ζ=1\zeta=1ζ=1) :
h(t)=b0 t e−ωntu(t) h(t)=b_0\,t\,e^{-\omega_n t}u(t) h(t)=b0te−ωntu(t)
不振荡里最快回到平衡的那一条曲线。
-
🔴 欠阻尼(ζ=0.4\zeta=0.4ζ=0.4) :
h(t)=b0ωde−ζωntsin(ωdt) u(t) h(t)=\frac{b_0}{\omega_d}e^{-\zeta\omega_n t}\sin(\omega_d t)\,u(t) h(t)=ωdb0e−ζωntsin(ωdt)u(t)
包络 e−ζωnte^{-\zeta\omega_n t}e−ζωnt 衰减下的衰减振荡,反复穿零。
👉 命名由来(对应题 e)
"阻尼" = 电阻 R 的耗能。相对于"刚好不振荡"的那个临界值:
- 耗能过多(过阻尼)→ 牺牲速度,换来单调不超调;
- 刚好(临界)→ 单调里最快的那条;
- 不足(欠阻尼)→ 压不住,能量在 L↔C 间来回弹,于是振荡。
曲线形态一目了然,名字也就好理解了。
六、为什么偏爱 ζ、ωn 标准式?(对应题 c-v)

图4:随 ζ 变化的极点轨迹(ωn=1)。 欠阻尼区极点始终落在半径为 ωn 的圆上(灰色虚线),ζ 只决定极点在圆上的角度。
这张根轨迹图给出了 (c-v) 最有力的答案:
- 在欠阻尼区(红/橙曲线),无论 ζ\zetaζ 怎么变,极点始终落在半径为 ωn\omega_nωn 的圆上;
- ζ\zetaζ 只决定极点在圆上的角度 θ=cos−1ζ\theta=\cos^{-1}\zetaθ=cos−1ζ:ζ=0\zeta=0ζ=0 在虚轴(纯振荡),ζ=1\zeta=1ζ=1 落到负实轴。
于是两个参数的分工极其干净:
ωn\omega_nωn(由 L、C 决定)设圆的半径 = 响应速度;ζ\zetaζ(由 R 决定)设极点在圆上的角度 = 阻尼性质。
相比之下,原始系数 a1,a0a_1,a_0a1,a0 把"速度"和"阻尼"搅在一起(ωn=a0\omega_n=\sqrt{a_0}ωn=a0 ,ζ=a1/2a0\zeta=a_1/2\sqrt{a_0}ζ=a1/2a0 ),既看不出物理量,也看不出与超调量、建立时间等时域指标的直接关系。
这就是工程界统一采用 ζ,ωn\zeta,\omega_nζ,ωn 标准形式的根本原因。
七、总结:一表映射全题
| 题目部分 | 电路 / 图形对应 |
|---|---|
| (a) 微分方程 | RLC 回路 KVL → LCy¨+RCy˙+y=xLC\ddot y+RC\dot y+y=xLCy¨+RCy˙+y=x |
| (b) 用 a1,a0a_1,a_0a1,a0 判极点 | a1=R/La_1=R/La1=R/L,a0=1/LCa_0=1/LCa0=1/LC |
| © ζ,ωn\zeta,\omega_nζ,ωn 形式 | ωn=1/LC\omega_n=1/\sqrt{LC}ωn=1/LC ,ζ=R2C/L\zeta=\dfrac{R}{2}\sqrt{C/L}ζ=2RC/L |
| (d) 冲激响应 | 图3 三色波形 |
| (e) 命名由来 | R 的耗能强弱 ↔ 三种曲线形态 |
| (c-v) 为何偏爱此形式 | 图4 根轨迹:ωn 设圆半径,ζ 设角度 |
🎯 一句话总结
二阶系统 = RLC 电路。L、C 决定快慢(ωn),R 决定阻尼(ζ) ;ζ 大到刚好不振荡就是"临界",再大就"过阻尼"(变慢),小了就"欠阻尼"(振荡)。标准式 ζ,ωn\zeta,\omega_nζ,ωn 把"速度"和"阻尼"干净解耦,这就是它被偏爱一生的原因。
核心片段(欠阻尼冲激响应):
python
import numpy as np
wn, zu, b0 = 1.0, 0.4, 1.0
wd = wn * np.sqrt(1 - zu**2)
t = np.linspace(0, 16, 2000)
h_under = b0 / wd * np.exp(-zu*wn*t) * np.sin(wd*t)
如果觉得有帮助,欢迎点赞👍收藏⭐! 有问题欢迎评论区交流,比如想看阶跃响应对比、或者把图换成中文标注,都可以提~ 😊