伯德图(Bode plot,也译波特图)和奈奎斯特图(Nyquist plot)描述同一个复频率响应的不同方面。先选对要画的传递函数,再决定图形:看滤波、增益和相位随频率如何变化,用伯德图;分析反馈闭环稳定性时,要把环路传递函数的奈奎斯特曲线与开环不稳定极点数一起考虑。
两种图分别显示什么
跳转到“两种图分别显示什么”对实系数连续时间系统 ,在 存在的频率处定义
幅值使用 ,适用于这里的幅值比;相位可以用度或弧度,但必须标注。若输入、输出物理量不同,分贝幅值还隐含了所采用的单位/参考尺度,不能不加说明地解释成无量纲功率增益。零响应处的相位没有定义。
| 图形 | 横轴 | 纵轴 | 常见用途 |
|---|---|---|---|
| 伯德幅频图 | 对数频率 | 幅值,常为 dB | 滚降、共振峰、截止频率、增益交越 |
| 伯德相频图 | 对数频率 | 相位,常为度 | 相位滞后、相位交越及补偿设计 |
| 奈奎斯特图 | 在复平面检查轨迹及对临界点的绕行 |
奈奎斯特图常用实部—虚部直角坐标轴。复数当然也能用模和辐角描述,但不能因此把这种常见绘图坐标称为“极坐标轴”。频率是沿曲线变化的参数,需要箭头、标签或交互读数辅助识别。
频率换算为 。SciPy 连续系统的 bode、freqresp 接收 rad/s,不是 Hz。对数横轴不能包含零频率,直流响应应单独求值。
用同一个二阶系统对照
跳转到“用同一个二阶系统对照”原笔记使用
因此
| 角频率 | 复响应 | 幅值 | 相位 |
|---|---|---|---|
| 0 dB | |||
| rad/s | 约 dB | ||
| 趋于无穷 | 趋于原点 | 趋于 dB | 趋于 |
两个重合极点使高频幅频斜率趋于 dB/decade。该系统半功率频率约为 rad/s,不能把极点尺度 rad/s 直接当作 dB 截止频率。

上图保留原图,用于观察幅值下降和相位趋近 。它显示的最低频率是 0.01 rad/s,不含精确的直流点。

上图保留原轨迹示例,但没有频率方向箭头,也没有完整展示临界点 。只凭这幅有限频段截图不能完成奈奎斯特稳定性论证。
奈奎斯特稳定判据:先声明绕行方向
跳转到“奈奎斯特稳定判据:先声明绕行方向”对负反馈环路,令 为环路传递函数,闭环特征条件为 。以下约定适用于无虚轴开环极点、闭环也不落在虚轴上的常见有理情形,并要求不存在被忽略的不稳定内部相消:
- : 在右半平面的极点数,按重数计。
- : 在右半平面的零点数,即该特征方程对应的不稳定闭环极点数。
- :完整奈奎斯特曲线对 点的净逆时针绕行次数,逆时针记正。
采用包围右半平面的顺时针 平面轮廓,则
闭环稳定需要 ,即 。若教材把顺时针绕行记正,公式会变为 ;符号约定必须成套使用。尤其当 时,“不包围 ”反而不满足闭环稳定条件。
对本页例子 ,,完整轨迹不绕行 。单位负反馈后
闭环极点为 ,与判据一致。另一个简单校验是 :开环有一个不稳定极点,但完整曲线逆时针绕 一次,闭环 稳定。这说明开环极点数是必要信息。
曲线穿过 时对应边界情况,不能继续按“严格稳定”计数。开环有积分器等虚轴极点时,必须采用绕避极点的修正轮廓。严格真有理系统的无穷远弧映到原点;其他系统应单独分析闭合部分,不能机械补一条直线。
对实系数系统,,所以负频率支路可由共轭得到。完整轮廓沿虚轴的频率方向是 ;镜像支路的遍历方向需要反转。实系数条件不成立时,应直接计算负频率响应。

这张补充图由下文代码实际生成,标出了原图缺少的方向和临界点;它仍是有限频段的解析模型图。
完整 Python 示例
跳转到“完整 Python 示例”下面保留原来的 NumPy、SciPy、Matplotlib 工作流,同时补上直流点、两个支路的方向、 标记及数值自检。分子、分母系数按 的降幂排列。程序生成 bode-example.png 和 nyquist-example.png。
import numpy as npimport matplotlib.pyplot as pltfrom scipy import signal
system = signal.TransferFunction([1.0], [1.0, 2.0, 1.0])w = np.logspace(-3, 3, 1200) # rad/s;对数轴不放零_, magnitude_db, phase_deg = signal.bode(system, w=w)
fig, axes = plt.subplots(2, 1, figsize=(8, 6), sharex=True)axes[0].semilogx(w, magnitude_db)axes[0].set_ylabel("Magnitude (dB)")axes[1].semilogx(w, phase_deg)axes[1].set_ylabel("Phase (deg)")axes[1].set_xlabel("Angular frequency (rad/s)")for ax in axes: ax.grid(True, which="both", alpha=0.3)fig.suptitle("G(s) = 1 / (s + 1)^2")fig.tight_layout()fig.savefig("bode-example.png", dpi=160)plt.close(fig)
wp = np.r_[0.0, w]_, hp = signal.freqresp(system, w=wp) # 正频率 0 -> w_maxhn = np.conj(hp[::-1]) # 实系数系统:负频率 -w_max -> 0
fig, ax = plt.subplots(figsize=(8, 5))ax.plot(hn.real, hn.imag, "--", label="Negative frequency -> 0")ax.plot(hp.real, hp.imag, label="Positive frequency -> +infinity")ax.plot(-1.0, 0.0, "rx", markersize=9, label="Critical point -1")ax.plot([1.0, 0.0], [0.0, 0.0], "ko", markersize=3)
# 两支路均按数组顺序放箭头;它们在直流点相接。kp = int(np.argmin(np.abs(wp - 0.5)))kn = len(hp) - 1 - kpfor curve, k in ((hp, kp), (hn, kn)): ax.annotate("", xy=(curve[k + 18].real, curve[k + 18].imag), xytext=(curve[k].real, curve[k].imag), arrowprops={"arrowstyle": "->", "color": "black"})ax.axhline(0, color="gray", linewidth=0.6)ax.axvline(0, color="gray", linewidth=0.6)ax.set(xlabel="Real", ylabel="Imaginary", xlim=(-1.25, 1.2))ax.set_aspect("equal", adjustable="box")ax.grid(True, alpha=0.3)ax.legend(fontsize=8)fig.tight_layout()fig.savefig("nyquist-example.png", dpi=160)plt.close(fig)
_, check = signal.freqresp(system, w=[0.0, 1.0])assert np.allclose(check, [1.0 + 0j, -0.5j])assert np.isclose(20 * np.log10(abs(check[1])), -6.0205999133)closed_loop_poles = np.roots([1.0, 2.0, 2.0])assert np.all(closed_loop_poles.real < 0)print("G(j*1) =", check[1], "; closed-loop poles =", closed_loop_poles)这段代码画的是有限频率网格,曲线末端接近原点但不是数学上的无穷远;没有虚轴极点绕避处理,也不是通用奈奎斯特判稳程序。网格可能漏掉窄峰、快速相位变化或临界点附近的细节,应结合解析极点、频率加密和适用的控制分析工具检查。
伯德图怎样用于设计
跳转到“伯德图怎样用于设计”若画的是稳定滤波器或某个测量通道,可以检查通带、带宽、共振与噪声放大。若要读反馈裕度,应画对应环路 ,并标明负反馈约定:
- 增益交越频率满足 ,在常见的单交越情形,相位裕度为 ,相位需按一致分支展开。
- 相位交越处满足相位为 模 ,增益裕度因子为 ,对应 dB 为 。
- 多个交越、开环不稳定、时延或特殊环路结构,需要检查全部相关交越及奈奎斯特条件。仅看到一个正相位裕度不能据此宣布任意系统稳定。
本页例子的幅值在任何正频率都小于 1,且相位只在无穷频率趋近 ,没有常见的有限正频率交越点。不要为了套公式,硬把 rad/s 当作增益交越频率。
资料与修订说明
跳转到“资料与修订说明”本页完整保留了原始笔记的两类图、两个绘图流程及两幅原图;合并重复代码后补充了单位、方向、临界点和稳定判据的条件。两幅原图的字节未修改,示例运行只验证模型和绘图,不代表实测系统。
- SciPy:signal.bode:连续系统幅频、相频输出和 rad/s 单位。
- SciPy:signal.freqresp:复频率响应及参数约定。
- 华盛顿大学:Nyquist Stability Criterion 讲义:完整轮廓、绕行方向与右半平面计数。
- MathWorks:稳定裕度:环路增益、交越和稳定裕度的使用边界。
基础模型见传递函数。