资源描述:
《matlab-微分方程-SS模型-TF模型-模型对比.docx》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、一、matlab微分方程、SS模型、TF模型、ZPK模型的关系以最简单的单自由度振动模型为例:y(t)+4y(t)=3u(t)微分方程左边为输出微分函数以系统特征参数为系数的线性组合,右边为输入微分函数的线性组合。对微分方程进行拉普拉斯变换,得到传递函数G(s)=Y(s)/U(s)=3-------s^2+4用模型转换函数可以将TF模型转成SS模型:[A,B,C,D]=tf2ss([3],[104])Sys=ss(A,B,C,D);A=0-410B=10C=03D=0SS模型的表达式为:X=AX+Buy=CX+Du其本质是状态变量
2、X的线性方程组(选择合适的状态变量消去原微分方程中的输入函数的微分项),X为选择的状态变量,这里,X=x1x2=x2x2X=x1x2=x2x2因为TF只能表示线性系统,对线性系统而言,当输入函数线性组合输入到系统(微分方程左式表示的系统)时,输出函数可表示成输入函数单独输入系统产生的响应函数的线性组合。比如y(t)+4y(t)=u(t),响应y(t)设为状态变量x2;y(t)+4y(t)=u(t),响应y(t)设为状态变量x1=x2;所以原微分方程可以表示为:X=x1x2=x2x2=0-410x1x2+10u以上表示u(t)单独输
3、入系统时求系统的响应(即状态变量)y=[03]x1x2+0u以上表示u(t)线性组合输入系统(这里是3u(t))时求系统的响应(即输出函数y(t))SS模型也可转成TF模型:tf(ss(A,B,C,D))TF转零极点增益ZPK模型[zpk]=tf2zp([3],[104])z=Emptymatrix:0-by-1p=0+2.0000i0-2.0000ik=3即33-0.75i0.75i-------=-------------------------------=0+--------------------+-----------
4、-------s^2+4(s-2i)(s+2i)(s-2i)(s+2i)还可以用residue函数将传递函数变成部分分式展开式[zpk]=residue([3],[104])z=0-0.7500i0+0.7500ip=0+2.0000i0-2.0000ik=[]二、对系统输出进行积分和微分计算对原系统:y(t)+4y(t)=3u(t);G(s)=3------------s^2+41、设原系统输出为y1(t),怎么求其微分y1(t)?对微分方程右边进行微分,新的系统为:y(t)+4y(t)=3u(t);G(s)=3s-------
5、-----s^2+4ABD同,就C不同,因为输入由u(t)变成了u(t)。A=0-410B=10C=30D=0所以,对原系统y(t)+4y(t)=3u(t),输出函数y1(t)=CX+0D,只需改C=[03]为[30],或者取dy=3*X(:,1)就可得到y(t)+4y(t)=3u(t)的输出函数y1(t)。实际上,对原系统y(t)+4y(t)=3u(t),A(1,:)*X+u还可得到u(t)输入的响应,再乘以3,就可得到y(t)+4y(t)=3u(t)的输出y1(t),但是u(t)更进一步的微分输入无法计算响应,所以对传递函数G
6、(s),理论上分子num的次数应不大于分母den的次数。Matlab编程验证:[A,B,C,D]=tf2ss([30],[104])Sys=ss(A,B,C,D);G=tf(ss(A,B,C,D))X0=[0,0];%X0=zeros(2*n,1);%X0=[x1_0,...,dx1_0,...]t=0:0.05:pi;U=sin(4*t);[Y,t,X]=lsim(Sys,U,t,X0);subplot(4,1,1)plot(t,U)[A,B,C,D]=tf2ss([3],[104])Sys=ss(A,B,C,D);[Y2,t,
7、X]=lsim(Sys,U,t,X0);dy=3*X(:,1);subplot(4,1,2)%plot(t,X(:,1:2))plot(t,Y2,t,Y,t,dy,'*',t,3*(A(1,2)*X(:,2)+U'))2、设原系统输出为y1(t),怎么求其积分y1_(t)?对原系统:y(t)+4y(t)=3u(t);G(s)=3------------s^2+4方程左边微分,右边输入不变,微分方程变为:y(t)+4y(t)=3u(t);G(s)=3------------s^3+4sA2=0-40100010B2=100C2=00
8、3D2=0所以状态参数增加了一个x3,x1x2x3X1,x2与原系统一样,x1=x2,x2=x3。所以对原系统而言,相当于多了个积分状态参数。其输出函数为y1_(t)=3*x3Matlab编程验证:subplot(4,1,3)[A2,B2,C2,D