140 likes | 348 Views
实验 26 连续系统状态方程的数值解. 实验目的. 学习使用 Matlab 的各种系统模型转换函数,加深对系统模型几种形式的理解。 学习用 Matlab 计算连续系统状态方程的数值方法。加深对连续系统状态方程的的理解,对系统零输入响应、零状态响应的理解。. 实验原理与说明. (一) 系统模型的相互转换 线性非时变系统的系统模型有 : 状态空间型 系统函数的多项式型 系统函数的零极点型 极点留数型. 它们都能描述系统的特性,但各有不同的应用场合。 对于线性非时变系统,这几种模型是可以互相转换 的。用 Matlab 就可以实现这一转换。. 实验原理与说明.
E N D
实验目的 • 学习使用Matlab的各种系统模型转换函数,加深对系统模型几种形式的理解。 • 学习用Matlab计算连续系统状态方程的数值方法。加深对连续系统状态方程的的理解,对系统零输入响应、零状态响应的理解。
实验原理与说明 (一)系统模型的相互转换 线性非时变系统的系统模型有: 状态空间型 系统函数的多项式型 系统函数的零极点型 极点留数型 它们都能描述系统的特性,但各有不同的应用场合。 对于线性非时变系统,这几种模型是可以互相转换 的。用Matlab就可以实现这一转换。
实验原理与说明 1.状态空间型与系统函数的多项式型互相转换 Matlab提供的函数: [b,a]=ss2tf(A,B,C,D) 将状态空间型转换成 的多项式型,其中,b,a为的分 子、分母多项式系统,A,B,C,D为状态空间型的系数矩阵。 [A,B,C,D]=tf2ss(b,a) 表示将 的多项式型转换成状态空间型。 2.状态空间型与系统函数的零极点型互相转换 Matlab提供的函数: [z,p,k]=ss2zp(A,B,C,D) 将状态空间型转换成 的零极点型,其中,z,p,k为 的零点、 极点、增益,A,B,C,D为状态空间型的系数矩阵。 [A,B,C,D]=zp2ss(z,p,k) 表示将的零极点型转换成状态空间型。
实验原理与说明 3.系统函数的零极点型与多项式型互相转换 将 多项式型转换成零极点型: [z,p,k]=tf2zp(b,a) 将 的零极点型转换成多项式型:[b,a]=zp2tf(z,p,k) 4.系统函数的极点留数型与多项式型互相转换 将 多项式型转换成极点留数型:[r,p,k]=residue(b,a) 将 的零极点型转换成多项式型:[b,a]=residue(r,p,k) (二)用lsim求系统响应的数值解 在前面曾用到过这个函数,它的功能特别强,能对系统函数模型和状态空间模型对线性非时变系统仿真,对状态空间模型可以求系统全响应、零输入响应、零状态响应的数值解。
运行程序后,结果显示如下。 系统函数分子系数数组 b=[2 -5 3] 系统函数分母系数数组 a=[2 3 5 9] num/den = 2 s^2 - 5 s + 3 ----------------------- 2 s^3 + 3 s^2 + 5 s + 9 零极点型模型 z = 1.5000 1.0000 p = -1.6441 0.0721 + 1.6528i 0.0721 - 1.6528i k = 1 极点留数型模型 r = -0.2322 + 0.4716i -0.2322 - 0.4716i 1.4644 p = 0.0721 + 1.6528i 0.0721 - 1.6528i -1.6441 k = [ ] 状态空间型模型 A = -1.5000 -2.5000 -4.5000 1.0000 0 0 0 1.0000 0 B = 1 0 0 C = 1.0000 -2.5000 1.5000 D = 0 计算示例 1 • 1、已知描述系统的微分方程为 求出它的四种模型。 解 用Matlab计算的程序如下: • % 系统模型相互转换的程序 exp26_1.m • format compact • b=input('系统函数分子系数数组 b='); • a=input('系统函数分母系数数组 a='); • printsys(b,a,'s') • disp('零极点型模型') • [z,p,k]=tf2zp(b,a) • disp('极点留数型模型') • [r,p,k]=residue(b,a) • disp('状态空间型模型') • [A,B,C,D]=tf2ss(b,a)
计算示例2 • 设某系统的状态方程和输出方程为 系统的初始状态为 ,输入信号 ,试求状态变量 和输出 的零输入响应、零状态响应和全响应。 解:用Matlab计算的程序如下:
计算示例2 • % 计算状态方程和输出方程的数值解 exp26_2.m • t=0:0.01:3; • A=[1 0;1 -3];B=[1 0]';C=[-0.25 1];D=[0]; • zi=[1 2]; % 初始条件 • f=15*sin(2*pi*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=15*sin(2*pi*t); • zi=[0 0]; % 令初始条件为零 • yzs=lsim(sys,f,t,zi); % 计算零状态响应
计算示例2 • figure(1) • plot(t,x(:,1),'-',t,x(:,2),'-.','linewidth',2) • legend('x(1)','x(2)') % 显示图例 • title('状态变量波形') • xlabel('t (sec)') • figure(2) • plot(t,y,'-',t,yzi,'-.',t,yzs,':','linewidth',2) • legend('y','yzi','yzs') % 显示图例 • title('系统响应,零输入响应,零状态响应') • xlabel('t (sec)') 运行程序后,系统全响应、零输入响应、零状态响应显示如图。 通过理论分析可知,状态变量由于系统特征根为正值而发散, 而系统响应由于系统极点为正值的根被抵消而稳定。 以上分析证明了这一点。
实验内容 1 • 1、已知下列系统模型,试用MATLAB将其转换成其它三种形式的模型。 (a) (b) , , , (c)
实验内容 2 2、设系统的微分方程为 (a) 写出系统的状态方程和输出方程。 (b) 若输入信号 ,初始状态 ,试求状态变量 和输出 的零输入响应、零状态响应和全响应。
实验内容3 3、设系统函数为 (a) 写出系统的状态方程和输出方程。 (b) 若输入信号 ,初始状态 试求状态变量 和输出 的零输入响应、零状态响应和全响应。
实验步骤与方法 • 1、仿照例1的方法用MATLAB的模型转换函数求实验内容1。 • 2、仿照例2的方法,完成实验内容2、3的编程。上机调试程序。
实验报告要求 • 根据实验内容编写出的程序。 • 上机调试程序的方法。 • 心得体会及其他。