Skip to content

频域:用正弦扫植物

WARNING

🧪 Beta公测版本提示:教程主体已完成,正在优化细节,欢迎大家提Issue反馈问题或建议。

时域看阶跃超调;频域把 s 换成 jω,看植物对每个频率的正弦放大多少、落后多少相。相位裕度回答「增益再大一点会不会晃到不稳定」。根轨迹用 K 搬极点,Bode 用 ω 读裕度,说的是同一条回路。二阶 G(s)传递函数


一、G(jω) 是复数增益

稳态时,输入 sin(ωt),输出仍是同频正弦,只是幅度变成 |G(jω)|,相位加上 argG(jω)。幅频习惯画

L(ω)=20log10|G(jω)|(dB),

相频画角度。对数横轴让十年频程等宽。

频域 Bode 直觉

图解说明:上半正弦进、放大并落后相的正弦出;下半幅频过 0 dB 的频率叫穿越频率 ωc,该处相位距离 180 还剩多少就是相位裕度。

动画说明ω 从低扫到高。左边输入/输出正弦,输出越来越小、越来越落后;右边游标走幅频,橙线是 0 dB 穿越 ωc

相位裕度(直觉):

PM=argG(jωc)+180,|G(jωc)|=1.

PM 太小,阶跃会晃;PM 为负,已经不稳定。精确定义还要约定开环还是闭环传递函数;demo 画开环 KG(jω),并标出 |KG|=1 附近的相位。

Bode:正弦进去,同频正弦出来

图解说明:左:同频正弦,只改振幅 A 与相位 ϕ。右:幅频游标在穿越频率 ωc

逐步推导:为什么稳态输出仍是同频正弦(点击展开)

线性时不变系统的本征函数是 est。令 s=jω,输入 Re(ejωt)(即余弦/正弦),输出就是 Re(G(jω)ejωt)。把复数 G(jω)=|G|ejϕ 乘进去,得到幅度 |G|、相位 ϕ 的同频正弦。不会出现新频率(线性);瞬态由极点决定,衰减完只剩这一项。

Bode 的分贝:20log10|G| 来自功率比的对数(幅度平方是功率,再乘 10,等于幅度乘 20)。穿越频率 |KG(jωc)|=10dB。若该处相位已经到 180,负反馈变成正反馈,正好在稳定边界上。相位裕度就是「离这个灾难还差多少度」。

demo:K=8,ωn=4,ζ=0.3,与动画一致。


二、代码在做什么

植物是 KG(s)G(s)=ωn2/(s2+2ζωns+ωn2)K=8ωn=4ζ=0.3。直流增益大于 1,幅频才会穿过 0 dB。对 logspace 上的 ω 直接代入 s=jω(Python 里 1j),算模和辐角。左图 dB,右图相位(度),虚线标穿越频率。

二阶系统 Bode

低频增益约 18dBK=8);过了 ωn 以约 40dB/dec 往下掉。相位从 0 掉到 180。穿越频率附近的相位裕度会打在图上。


三、小结

概念一句话
G(jω)正弦稳态的复数增益
幅频 dB20log10|G|
ωc|G|=1 的穿越频率
PM距离 180 还剩多少相
下游现代控制改用 A,B 矩阵;频域仍常用来验裕度

经典控制到此收束。下一分组 状态空间,或回去调 PID

📥 Code

FileViewDownload
demo.pyOpenDownload
exercise.pyOpenDownload

参考

  1. Bode, Network Analysis and Feedback Amplifier Design
  2. Ogata, Modern Control Engineering