一、 已知下列系统模型,试用MATLAB 将其转换成其它三种形式的模型:1、题中给出的是系统函数的多项式型函数,需将它转换成状态空间型、零极点型和极点留数型。
(1) 多项式型转换到状态空间。
matlab 中提供的多项式到状态空间转换函数及其调用格式如下:[A,B,C,D]=tf2ss(b,a)所以转换程序为:b=[1,0,2,-2];a=[1,2,-1,-2]; [A,B,C,D]=tf2ss(b,a);g_ss=ss(A,B,C,D) 程序运行之后结果如图1所示:图1所以其状态空间模型为:A=⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡-010001212 B=⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡001 C=[]032-D=[](2) 多项式型转换成零极点型matlab 中提供的多项式到零极点转换函数及其调用格式如下:[z,p,k]=tf2zp(b,a)所以转换程序为:b=[1,0,2,-2];a=[1,2,-1,-2];[z,p,k]=tf2zp(b,a);sys=zpk([z],[p],[k]) 程序运行之后结果如图2所示:2222)(233--+-+=s s s s s s H图2所以其零极点模型为:)2)(1s )(1-()594.27709.0()7709.0s (2++++-s s s s(3)多项式转换成极点留数型matlab 中提供的多项式到极点留数转换函数及其调用格式如下:[r,p,k]=residue(b,a)所以转换程序为:b=[1,0,2,-2];a=[1,2,-1,-2];[r,p,k]=residue(b,a)程序运行之后结果如下所示:所以其极点留数型模型为:115.211667.02s 6667.4-r +-+++++-s r s r2、⎥⎦⎤⎢⎣⎡--=6221A ,⎥⎦⎤⎢⎣⎡-=23B ,[]21=C ,]0[=D题中给出的是系统函数的状态空间模型,需将它转换成多项式型、零极点型和极点留数型。
(1)状态空间转换成多项式型matlab 中提供的状态空间到多下多项式转换函数及其调用格式如下:[b,a]=ss2tf(A,B,C,D)所以转换程序为:A=[1 2; -2 -6];B=[-3;2];C=[1 2];D=[0];[b,a]=ss2tf(A,B,C,D);sys=tf(b,a) 程序运行之后结果如下所示:所以其多项式模型为256s 2-+-s s :(2)状态空间转换成零极点型:matlab 中提供的状态空间到零极点型转换函数及其调用格式如下:[z,p,k]=ss2zp(A,B,C,D)所以转换程序为:A=[1 2; -2 -6];B=[-3;2];C=[1 2];D=[0];[z,p,k]=ss2zp(A,B,C,D); sys=zpk([z],[p],[k]) 程序运行之后结果如下所示:(3)状态空间转换成极点留数型:先将状态空间转换成多项式型,再将多项式型转换成极点留数型。
第一步已经得出该系统的多项式型模型为:256s 2-+-s s,将它转换成极点留数型程序为:A=[1 2; -2 -6];B=[-3;2];C=[1 2];D=[0];[b,a]=ss2tf(A,B,C,D); [r,p,k]=residue(b,a)程序运行之后结果如下所示:所以系统极点留数模型为:3723.09797.03723.5s 9797.1r +-+-+s r3、题中给出的是系统函数的零极点模型,需将它转换成多项式型、状态空间和极点留数型。
(1) 零极点型转换成多项式型matlab 中提供的零极点到多项式型转换函数及其调用格式如下:[b,a]=zp2tf(z,p,k)所以转换程序为:z=[2];p=[0,-1,-1,-1];k=[1];[b,a]=zp2tf(z,p,k);sys=tf(b,a)程序运行之后得出多项式型模型如下所示:(2) 零极点转换成状态空间matlab 中提供的零极点到状态空间型转换函数及其调用格式如下:[A,B,C,D]=zp2ss(z,p,k)3)1(2)(+-=s s s s H所以转换程序为:z=[2];p=[0,-1,-1,-1];k=[1];[A,B,C,D]=zp2ss(z,p,k);g_ss=ss(A,B,C,D) 程序运行之后结果如下所示:所以其状态空间模型为:A=⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡01001-2-2-100010001- B=⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡0001 C=[]1000D=[](3) 零极点转换成极点留数型需先将零极点转换成多项式型,再将多项式型转换成极点留数型,转换程序如下:z=[2];p=[0,-1,-1,-1];k=[1];[b,a]=zp2tf(z,p,k);[r,p,k]=residue(b,a) 程序运行之后结果如下所示:r = 2.0000 2.0000 3.0000 -2.0000p = -1.0000 -1.0000 -1.0000 0k = []所以系统极点留数型模型为:ss r s r s r H 2r 1-31212)s (-+++-++-+=二、状态方程的解1、 设系统的微分方程为: (a) 写出系统的状态方程和输出方程。
(b) 若输入信号)(5)(f t t e t ε-=,初始状态1)0()0()0(321===x x x ,试求状态变量)(),(),(321t x t x t x 和输出y(t)的零输入响应、零状态响应和全响应。
(a)首先将微分方程装换多项式型传递函数,再将其转换成成状态空间模型,转换程序如下:num=[4 10];den=[1 8 19 12];sys1=tf(num,den)sys=ss(sys1)程序运行后结果如下: a = x1 x2 x3 x1 -8 -4.75 -1.5 x2 4 0 0 x3 0 2 0b = u1 x1 2 x2 0 x3 0c = x1 x2 x3 y1 0 0.5 0.625d = u1 y1 0所以其状态方程为:f x x x ⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡+⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡---=⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡0020200045.175.48x 321 输出方程为:x y ]625.05.00[= (b)在MATLAB 环境下编写以下程序:t=0:0.01:15;A=[-8 -4.75 -1.5;4 0 0;0 2 0]; B=[2;0;0];C=[0 0.5 0.525];D=[0]; zi=[1 1 1]; %初始条件 f=5*exp(-t); sys=ss(A,B,C,D)[y,t,x]=lsim(sys,f,t,zi) %计算全响应 f=zeros(1,length(t)); %零输入为零 yzi=lsim(sys,f,t,zi); %计算零输入响应)(10)(4)(12)(19)(8)(t f t f t y t y t y t y +'=+'+''+'''f=5*exp(-t);zi=[0 0 0]; %令初始条件为零yzs=lsim(sys,f,t,zi); %计算零状态响应figure(1)plot(t,x(:,1),'-',t,x(:,2),'-.',t,x(:,3),'-..','linewidth',2)legend('x(1)','x(2)','x(3)') %显示图例title('状态变量波形')xlabel('t(sec)')figure(2)plot(t,y,'-',t,yzi,'-',t,yzs,':','linewidth',2)legend('y','yzi','yzs')title('系统响应,零输入相应,零状态响应')xlabel('t,(sec)')程序运行后结果如下:状态变量波形t(sec)图1 初始状态下状态变量波形图2 输出y(t)的零输入响应、零状态响应和全响应曲线2、设系统函数为(a) 写出系统的状态方程和输出方程(b) 若输入信号)(e 3)()(f2t t t e t t εε-+-=,初始状态1)0(1=x 0)0(2=x ,1)0(3=x ,2)0(4=x 试求状态变量)(),(),(321t x t x t x ,)(4t x 和输出y(t)的零输入响应、零状态响应和全响应。
(a)首先将零极点型换成状态空间模型,转换程序如下:z=[2];p=[0,-1,-1,-1];k=[1];[A,B,C,D]=zp2ss(z,p,k)程序运行后结果如下:A = -1 0 0 0 1 0 0 0 1 -2 -2 -1 0 0 1 0B = 1 0 0 0C =0 0 0 1 D = 000.511.522.5t,(sec)系统响应,零输入相应,零状态响应3)1(2)(+-=s s s s H所以系统状态方程为:u x x x x ⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡+⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡----=⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎣⎡00010100122100010001x 4321 输出方程为:[]x y 1000= (b)在MATLAB 环境下编写以下程序:t=0:0.01:15;A=[-1 0 0 0;1 0 0 0;1 -2 -2 -1;0 0 1 0]; B=[1;0;0;0];C=[0 0 0 1];D=[0]; zi=[1 0 1 2]; %初始条件 f=exp(-t)+3*exp(-2*t); sys=ss(A,B,C,D)[y,t,x]=lsim(sys,f,t,zi) %计算全响应 f=zeros(1,length(t)); %零输入为零 yzi=lsim(sys,f,t,zi); %计算零输入响应 f=exp(-t)+3*exp(-2*t);zi=[0 0 0 0]; %令初始条件为零 yzs=lsim(sys,f,t,zi); %计算零状态响应 figure(1)plot(t,x(:,1),'-',t,x(:,2),'-.',t,x(:,3),'--',t,x(:,4),':','linewidth',2) legend('x(1)','x(2)','x(3)','x(4)') %显示图例 title('状态变量波形') xlabel('t(sec)') figure(2)plot(t,y,'-',t,yzi,'-',t,yzs,':','linewidth',2) legend('y','yzi','yzs')title('系统响应,零输入相应,零状态响应') xlabel('t,(sec)')程序运行之后得出以下结果:图3 初始状态下状态变量波形图2 输出y(t)的零输入响应、零状态响应和全响应曲线-8-6-4-2024t(sec)状态变量波形-8-6-4-2024t,(sec)系统响应,零输入相应,零状态响应。