Python绘制零极点图

零极点图可描述线性时不变系统的系统特性的一种图形工具,对于系统传递函数 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。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

微小冷

请我喝杯咖啡

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值