零极点图可描述线性时不变系统的系统特性的一种图形工具,对于系统传递函数 H ( s ) H(s) H(s)(连续时间系统)或 H ( z ) H(z) H(z)(离散时间系统中)而言,其零点和极点定义如下
- 零点:使传递函数值为零的复变量 s s s 或 z z z 的值。即如果 H ( s ) = N ( s ) D ( s ) H(s) = \frac{N(s)}{D(s)} H(s)=D(s)N(s),那么零点是使分子多项式 N ( s ) = 0 N(s) = 0 N(s)=0 的 s s s 值。
- 极点:极点是使传递函数值趋于无穷大的复变量 s s s 或 z z z 的值。对于 H ( s ) = N ( s ) D ( s ) H(s) = \frac{N(s)}{D(s)} H(s)=D(s)N(s),极点是使分母多项式 D ( s ) = 0 D(s) = 0 D(s)=0 的 s s s 值。
零极点图就是绘制零点和极点的图形,在在复平面上,用“○”表示零点,用“×”表示极点。
通过零极点图可以分析系统的稳定性,对于连续时间系统,若所有极点的实部都小于零,即位于复平面的左半平面,则该系统稳定;对于离散时间系统,若所有极点的模小于1,即位于复平面的单位圆内,则系统是稳定。
绘制
对于系统传递函数为 s 2 + 1 s 4 + 4 s 3 + 6 s 2 + 5 s + 2 \frac{s^{2} + 1}{s^{4} + 4 s^{3} + 6 s^{2} + 5 s + 2} s4+4s3+6s2+5s+2s2+1的系统而言,其零极点图为
绘制函数如下
from sympy.abc import s
from sympy.physics.control.lti import TransferFunction
from sympy.physics.control.control_plots import pole_zero_plot
tf1 = TransferFunction(s**2 + 1, s**4 + 4*s**3 + 6*s**2 + 5*s + 2, s)
pole_zero_plot(tf1)
【pole_zero_plot】即为sympy中封装了零极点图绘制函数。其完整参数包括
control_plots.pole_zero_plot(
pole_color='blue',
pole_markersize=10,
zero_color='orange',
zero_markersize=7,
grid=True,
show_axes=True,
show=True,
**kwargs)
各参数含义为
- system:要计算零极点图的系统,唯一必须输入的参数
- pole_color:极点颜色,默认为蓝色。颜色可以是 matplotlib 颜色字符串,或者是一个 3 元组,其中每个浮点数的范围为 0-1。
- pole_markersize:极点的标记大小,默认为10。
- zero_color:零点颜色,默认橙色,其设置方法与【pole_color】相同。
- zero_markersize:零点标记大小,默认为 7。
- grid:如果为 True,则图中会显示网格。默认值为 True。
- show_axes:如果为 True,则会显示坐标轴。默认值为 False。
- show:果为 True,则会显示图,否则会返回等效的 matplotlib 图对象。默认值为 True。