第二章:零极点图的绘制

零极点图这东西,说白了就是系统特性的「身份证」。我当年刚学的时候,总觉得画几个叉叉圈圈有啥用?直到有一次调试一个音频滤波器,死活调不出想要的频响曲线——后来一看零极点图,好家伙,一个极点跑到了右半平面,系统都快不稳定了。从那以后,我再也不敢小看这张图了。

2.1 手动绘制零极点图

手动绘制,听起来有点老土对吧?但我告诉你,这是理解零极点最扎实的方法。你想想看,如果连手绘都搞不明白,用软件画出来也是一脸懵。

手绘的核心就三步:

  1. 写出传递函数,化成标准的零极点形式
  2. 找零点:让分子等于0,解出s的值
  3. 找极点:让分母等于0,解出s的值

举个例子,假设有个传递函数:

H(s) = (s + 2) / (s² + 3s + 2)

零点:s + 2 = 0 → s = -2
极点:s² + 3s + 2 = 0 → (s+1)(s+2) = 0 → s = -1, s = -2

嗯,这里要注意:零点和极点有重合!s = -2既是零点又是极点,这叫「零极点对消」。我在项目中遇到过这种情况,当时仿真结果一直不对,查了半天才发现是零极点对消导致系统阶数降低了。

手绘时,我们通常用「○」表示零点,用「×」表示极点。画在复平面上,横轴是实部σ,纵轴是虚部jω。

手绘小技巧:

  • 实轴上的点:直接标在横轴上
  • 共轭复极点:关于实轴对称出现
  • 重极点/重零点:在旁边标个数字表示重数

2.2 使用Python/Matlab绘制零极点图

实际工程中,谁还手绘啊?我都是用Python或者Matlab一把梭。下面给出两种工具的代码,你直接拿去用。

Python实现(使用control库)

import control as ct
import matplotlib.pyplot as plt

# 定义传递函数
num = [1, 2]      # 分子:s + 2
den = [1, 3, 2]   # 分母:s² + 3s + 2

sys = ct.TransferFunction(num, den)

# 绘制零极点图
ct.pzmap(sys, plot=True)
plt.title('零极点图 - Python实现')
plt.grid(True)
plt.show()

Matlab实现

% 定义传递函数
num = [1 2];      % 分子:s + 2
den = [1 3 2];    % 分母:s² + 3s + 2

sys = tf(num, den);

% 绘制零极点图
pzmap(sys)
grid on
title('零极点图 - Matlab实现')

避坑指南:我曾经用Python画图时,发现零极点位置不对。后来检查发现是control库版本问题,0.8.x和0.9.x的pzmap函数参数有变化。建议用pip install control==0.9.2固定版本。

2.3 零极点图的解读

图画出来了,怎么看?这才是核心。我总结了一个「三步读图法」:

观察点 判断依据 工程含义
极点位置 左半平面 → 稳定
右半平面 → 不稳定
虚轴上 → 临界稳定
系统会不会炸?
零点位置 靠近极点 → 抵消作用
远离极点 → 影响明显
频率响应怎么变?
极点到原点的距离 距离越远 → 频率越高
距离越近 → 频率越低
响应快慢如何?

说白了,零极点图就是系统的「体检报告」。极点决定稳定性,零点决定细节形状。

重要提醒:千万别以为零极点都在左半平面就万事大吉。我遇到过一种情况:所有极点都在左半平面,但有一个极点非常靠近虚轴(比如实部只有-0.01)。系统虽然稳定,但调节时间长得离谱,实际根本没法用。所以不仅要看「在哪」,还要看「多远」。

知识体系总览

下面这张图,是我自己整理的零极点图知识框架。你把它存下来,学完这章再回头看,思路会特别清晰。

零极点图知识体系 手动绘制 ① 写出传递函数 ② 分子=0 → 零点 ③ 分母=0 → 极点 ④ 标在复平面上 ○ 表示零点 × 表示极点 注意零极点对消 软件绘制 Python: control.pzmap Matlab: pzmap 参数设置: · 坐标范围 · 网格显示 · 标题标注 注意库版本兼容性 图解读 ① 稳定性判断 左半平面→稳定 右半平面→不稳定 ② 动态特性 距原点远→高频 距原点近→低频 ③ 零极点抵消 手动绘制打基础 → 软件绘制提效率 → 图解读抓本质

这张图把零极点图的三个层面串起来了。手动绘制是基本功,软件绘制是生产力,图解读是最终目的。三者缺一不可。

我的个人习惯:每次拿到一个新系统,我都会先手算一下零极点的大致位置,再用Python验证。这样心里有数,不会出现「软件画出来啥就是啥」的被动局面。你想想看,如果软件有bug或者参数设错了,你连对错都判断不了,那多危险?

好了,零极点图的绘制就讲到这里。记住:画图不是目的,看懂图才是。下一节我们会深入探讨零极点对系统性能的具体影响,到时候你会更深刻地理解「为什么一个极点的位置能决定系统的生死」。


公众号:蓝海资料掘金营,微信deep3321