控制系统中的MATLAB运用(数值计算)
顾恩伟 上方能源
2012年10月18日
0. 基本数学概念
a) 代数式-algebraic expression
用运算符号把数或表示数字的字母(即“代数”,代表数字的符号)连接而成的式
b) c)
子叫做代数式,单独一个数字或一个字母也是代数式。如:1,a,3b2+a, 单项式-monomial
只包含数字与字母的“积”的代数式。如:3a2 多项式-polynomial
几个单项式的和叫做多项式,其中每个单项式叫做这个多项式的“项”-term,字母有系数-coefficient。多项式中不含字母的项叫做常数项-constant term。多项式中次数最高的项的次数-power,叫做这个多项式的次数。如:4x3+x2+2x+1 因式分解-factored form
把一个多项式化成几个整式的积的形式,叫做把这个多项式做因式分解。如:x2−9=(𝑥−3)(𝑥+3) 整式
单项式和多项式统称为整式(基于整数域的表达式?)。 分式-fraction
A和B表示两个整式,A除以B表示成B的形式,如果B中含有字母,式子B就叫做分式。其中,A叫做分式的分子-numerator,B叫做分式的分母-denominator。 g) 有理式-rational expression
分式和整式统称为有理式。
1. 多项式的创建
a) 多项式
p=[3,1,0,5] %表示多项式3s3+s2+5 b) 多项式的因式分解
p=poly([−2,−5,−6]) %表示根为-2,-5,-6的多项式,即(s+2)(s+5)(s+
6)
c) 多项式复合
p=conv(poly([−2,−5,−6]),[3,1,0,5]) %上面两个多项式相乘,convelvo
2. 多项式求解
a) 多项式求解
p=[1,6,9] %创建多项式s2+6s+9 r=roots(p) %求多项式的解
3. 传递函数创建
a) 多项式-th()
nf=150∗[1,2,7] %多项式的分子为150(s2+2s+7)
A
A
d)
e) f)
df=[1,5,4,0] %多项式的分母为s3+5s2+4s f=tf(nf,df) %th()函数创建传递函数 b) 因式分解-zpk()
z=[−2,−4] %传递函数的零 p=[−7,−8,−9] %传递函数的极 k=20 %传递函数的增益
g=zpk(z,p,k) %zpk()函数创建传递函数 c) 有理式表达,结果为多项式(直接法)
s=tf(′s′) %声明s为一个线性时不变系统的对象,s为多项式
f=150∗[s∗(s2+5s+4)] %直接创建传递函数,结果显示为多项式 d) 有理式表达,结果为因式分解(直接法)
s=zpk(′s′) %声明s为一个线性时不变系统的对象,s为因式分解
f=150∗
s2+2s+7
%直接创建传递函数,结果显示为因式分解 [s∗(s2+5s+4)]s2+2s+7
4. 传递函数转换-方法1
a) 多项式转因式分解
ntf=[10,40,60] %传递函数f的分子为10s2+40s+60 dtf=[1,4,5,7] %传递函数f的分母为s3+4s2+5s+7 [nzp,dzp]=tf2zp(ntf,dtf) %多项式转因式分解 ftf=tf(ntf,dtf) %多项式方式显示f
fzp=zpk(nzp,dzp,1) %因式分解方式显示f b) 因式分解转多项式
nzp=[−2,−4] %传递函数g分子为(s+2)(s+4) k=10 %传递函数g的增益为10
dzp=[0,−3,−5] %传递函数g分母为s(s+3)(s+5) [ntf,dtf]=zp2tf(nzp′,dzp′,k) %因式分解转多项式 gtf=tf(ntf,dtf) %多项式方式显示g
gzp=zpk(nzp,dzp,k) %因式分解方式显示g
5. 传递函数转-方法2(直接法)
a) 因式分解转多项式
fzp=zpk([−2,−4],[0,−3,−5],10) %创建因式分解形式的传递函数 ftf=tf(fzp) %因式分解形式的传递函数转换为多项式形式 b) 多项式转因式分解
ftf=tf([10,40,60],[1,4,5,7]) %创建多项式形式的传递函数 fzp=zpk(ftf) %多项式形式的传递函数转换为因式分解
6. 分式展开-partial fraction
a) 分式展开
n=[7,9,12]
d=conv(poly([0,−7]),[1,10,100])
[r,p,k]=residue(n,d) %r对应展开分式各项的分子,p对应分母,k对应增益
7. 二阶欠阻尼系统暂态特性计算与做图
a) 从因式分解到特性参数
p1=[1,3+j∗7] %因式分解第一项 p2=[1,3−j∗7] %因式分解第二项
d=conv(p1,p2) %用conv()命令创建的结果为多项式
omegan=sqrt(d(1)) %计算自然频率 zeta=
d(2)d(1)d(3)
2∗omegan
%计算阻尼系数
ts=4/(zeta∗omegan) %计算安定时间 tp=omegan∗sqrt(1−zeta2) %计算峰值时间 pos=100∗exp(
(−zeta∗pi)
) %计算过冲百分比
sqrt(1−zeta2)pi
b) 阶跃响应做图
n1=[24.542] d1=[1,4,24.542]
c1=tf(n1,d1) %y用step()命令创建传递函数 step(c1) %用step()命令做图
[y1,t1]=step(c1) %把t1的数据点存到 n2=[245.42] p1=[1,10]
p2=[1,4,24.542] d2=conv(p1,p2) c2=tf(n2,d2) [y2,t2]=step(c2) n3=[73.626] p3=[1,3]
d3=conv(p3,p2) c3=tf(n3,d3) [y3,t3]=step(c3)
plot(t1,y1,t2,y2,t3,y3)
step(c1,c2,c3) %也可以用step()命令直接创建传递函数的图像
tlow=interp1(y1,t1,0.1) %用interp1可以搜索函数y坐标为末值×0.1时的
x坐标位置
thigh=interp1(y1,t1,0.9) %用interp1可以搜索函数y坐标为末值×0.9时
的x坐标位置
tr=thigh−tlow %计算10%~90%的上升时间
8. 多系统简化
a) 串并联法
series(g1,g2) %g1和g2串联 parallel(g1,g2) %g1和g2并联
feedback(g,h,sign) %g和h组成的反馈 ng1=[−1] dg1=[1] ng2=[0,2] dg2=[1,2]
ng3=−0.125∗[1,0.435]
dg3=conv([1,1.23],[1,0.226,0.0169]) nh1=[−1,0] dh1=[0,1]
g1=tf(ng1,dg1) g2=tf(ng2,dg2) g3=tf(ng3,dg3) h1=tf(nh1,dh1)
g4=series(g2,g3) %计算g2与g3的并联 g5=feedback(g4,h1) %计算g4与h1反馈 ge=series(g1,g5) b) 线性计算法
g4=g3∗g2
g5=g4/(1+g4∗h1) %直接套用化简公式 g5=minreal(g5) %消去分子分母中的公共项 ge=g5∗g1 t=ge/(1+ge) t=minreal(t)
9. 从传递函数抽出各项系数
ng=[25]
dg=poly([0,−5]) g=tf(ng,dg) t=feedback(g,1)
[nt,dt]=tfdata(t,′v′) %从传递函数抽出分子与分母多项式 wn=sqrt(dt(3))
z=2∗wn ts=z∗wn 4dt(2)
tp=
pi
wn∗sqrt(1−z2)
pi
pos=exp(−z∗sqrt(1−z2))∗100 step(t)
10. 稳态误差计算
ng=500∗poly([−2,−5,−6]) dg=poly([0,−8,−10,−12]) g=tf(ng,dg) t=feedback(g,1)
poles=pole(t) %稳定性检查
kp=dcgain(g) %计算当s=0时,g的值 ess=1/(1+kp) %阶跃输入误差 nsg=conv([1,0],ng) %定义sG(s) dsg=poly([0,−8,−10,−12]) sg=tf(nsg,dsg)
sg=minreal(sg) %消去分子分母的公共项 kv=dcgain(sg) %计算kv=sg,当s=0 ess=1/kv
ns2g=conv([1,0,0],ng)
ds2g=poly([0,−8,−10,−12]) s2g=tf(ns2g,ds2g) %定义s^2g s2g=minreal(s2g) ka=dcgain(s2g) ess=1/ka
11. 根轨迹
a) 根轨迹电脑做图与阻尼线
ng=[1,−4,20]
dg=poly([−2,−4]) g=tf(ng,dg)
rlocus(g) %做传递函数g的根轨迹
z=0.2:0.05:0.5 %定义需要标注的阻尼值 wn=0:1:10 %定义需要标注的自然频率 sgrid(z,wn) %在图上做出上面定义的参数