您好,欢迎来到九壹网。
搜索
您的当前位置:首页现代控制理论实验报告中南大学

现代控制理论实验报告中南大学

来源:九壹网
中南大学

现代控制实验报告

指导老师 设计者 学 号 专业班级 设计日期

实验一 用MATLAB分析状态空间模型

1、实验设备

PC计算机1台,MATLAB软件1套。

2、实验目的

① 学习系统状态空间表达式的建立方法、了解系统状态空间表达式与传递函数相互转换的方法;

② 通过编程、上机调试,掌握系统状态空间表达式与传递函数相互转换方法。

3、实验原理说明

线性系统数学模型的常见的形式有,输入输出模式数学模型(传递函数和微分方程)和状态空间模式数学模型(状态空间表达式或动态方程)。传递函数模型一般可表示为:

mm1b(t)sb(t)sbm1(t)sbm(t)01 g(s)sna1(t)sn1an1(t)san(t)

若上式中分子分母各项系数为常数,则系统称为线性定常系统(linear time invariant,LTI) 利用下列命令可轻易地将传递函数模型输入MATLAB环境中。

>>num=[b0,b1,…,bn]; >>den=[1,a1,a2,…,an];

而调用tf()函数可构造出对应传递函数对象。调用格式为: >>G=tf(num,den);

其中(num,den)分别为系统的分子和分母多项式系数的向量,返回变量G为系统传递函数对象。

线性定常系统的状态空间模型可表示为

xAxBu

yCxDu

表示状态空间模型的基本要素是状态向量和常数矩阵A,B,C,D。用类似的方法可将其输入MATLAB环境,对单输入单输出系统,

>>A=[a11,a12,…a1n;a21,a22,…a2n;…;an1,an2,…ann]; >>B=[b1;b2;…;bn]; >>C=[c1,c2,…cn]; >>D=d;

调用ss()状态方程对象可构造状态方程模型,调用格式如下: >>ss(A,B,C,D)

对于两种模型之间的转换,则可分别调用tf()和ss()完成,即: >>G1=tf(G) >>G2=ss(G’)

4、实验步骤

① 根据所给系统的传递函数或A、B、C矩阵,依据系统的传递函数阵和状态空间表达

式之间的关系式,采用MATLAB编程。

② 在MATLAB界面下调试程序,并检查是否运行正确。 题1.1 已知SISO系统的传递函数为

g(s)s25s8s42s36s23s9

(1)将其输入到MATLAB工作空间; (2)获得系统的状态空间模型。

题1.2 已知SISO系统的状态空间表达式为

x1010x11x2001x23u,y1x3432x36(1)将其输入到MATLAB工作空间; (2)求系统的传递函数。

题1.1代码及结果

num=[1,5,8]; den=[1,2,6,3,9]; G=tf(num,den); G1=ss(G) a =

x1 x2 x3 x4 x1 -2 -1.5 -0.375 -1.125 x2 4 0 0 0 x3 0 2 0 0 x4 0 0 1 0 b =

u1 x1 1 x2 0 x3 0 x4 0 c =

x1 x2 x3 x4 y1 0 0.25 0.625 1 d =

u1 y1 0

Continuous-time model.

x100x2x3

题1.2代码及结果

A=[0,1,0;0,0,1;-4,-3,-2]; B=[1;3;-6]; C=[1,0,0]; D=0;

G=ss(A,B,C,D); G1=tf(G)

Transfer function: s^2 + 5 s + 3 ------------------------- s^3 + 2 s^2 + 3 s + 4

实验二 利用MATLAB求解系统的状态方程

1、实验设备

PC计算机1台,MATLAB软件1套。

2、实验目的

① 学习系统齐次、非齐次状态方程求解的方法,计算矩阵指数,求状态响应; ② 通过编程、上机调试,掌握求解系统状态方程的方法,学会绘制状态响应曲线; ③ 掌握利用MATLAB导出连续状态空间模型的离散化模型的方法。

3、实验原理说明

在MATLAB中,调用expm(A)可求得矩阵指数 e A ;调用step()可求取阶跃输入时系统的状态响应;调用lsim()可求取零状态响应;调用initial()可求取零输入响应。它们的调用格式分别如下:

>>expm(A)

>>[y,t,x]=step(G) >>[y,t,x]=lsim(G,u,t) >>[y,t,x]=initial(G,x0)

4、实验步骤

(1)根据所给系统的状态方程,依据系统状态方程的解的表达式,采用MATLAB编程。 (2)在MATLAB界面下调试程序,并检查是否运行正确。 题2.1 已知SISO系统的状态方程为

013xxu230 y11x(1)u0,x01,求当t=0.5时系统的矩阵系数及状态响应; 100(2)u1(t),x0,绘制系统的状态响应及输出响应曲线;

(3)u1ecos3t,x0,绘制系统的状态响应及输出响应曲线;

t00(4)u0,x0,绘制系统的状态响应及输出响应曲线;

12(5)在余弦输入信号和初始状态x0下的状态响应曲线。 题2.2 已知一个连续系统的状态方程是

11100xxu 2541若取采样周期T0.05秒

(1)试求相应的离散化状态空间模型;

(2)分析不同采样周期下,离散化状态空间模型的结果。

题2.1代码及结果 (1).

>> A=[0,1;-2,-3]; >> expm(A*0.5)

ans =

0.8452 0.2387 -0.4773 0.1292

>> x0=[1;-1];

>> x=expm(A*0.5)*x0 x =

0.6065

-0.6065 (2).

>>A=[0,1;-2,-3];B=[3;0];C=[1,1];D=0; >>G=ss(A,B,C,D);[y,t,x]=step(G);plot(t,x) 状态响应:

plot(t,y) 输出响应:

(3).

A=[0,1;-2,-3];B=[3;0];C=[1,1];D=0; t=[0:.04:4];u=1+exp(-t).*cos(3*t);

G=ss(A,B,C,D);[y,t,x]=lsim(G,u,t);plot(t,x) 状态响应:

plot(t,y) 输出响应:

(4).

A=[0,1;-2,-3];B=[3;0];C=[1,1];D=0;

t=[0:.04:7];u=0;x0=[1;2];G=ss(A,B,C,D); [y,t,x]=initial(G,x0,t);plot(t,x) 状态响应:

plot(t,y) 输出响应:

(5).

A=[0,1;-2,-3];B=[3;0];C=[1,1];D=zeros(1,1); x0=[1;1];t=[0:.04:15]; u=cos(t); G=ss(A,B,C,D); G1=tf(G);

[y1,t,x1]=initial(G,x0,t); [y2,t,x2]=lsim(G,u,t); y=y1+y2;

x=x1+x2; plot(t,x); 状态响应:

题2.2代码及结果

>>A=[0,1;-25,-4];B=[0;1]; >> [Gz,Hz]=c2d(A,B,0.05) Gz =

0.9709 0.0448 -1.1212 0.7915 Hz =

0.0012 0.0448

实验三 系统的能控性、能观测性分析

1、实验设备

PC计算机1台,MATLAB软件1套。

2、实验目的

① 学习系统状态能控性、能观测性的定义及判别方法;

② 通过用MATLAB编程、上机调试,掌握系统能控性、能观测性的判别方法,掌握将一般形式的状态空间描述变换成能控标准形、能观标准形。

3、实验原理说明

由系统状态方程求能控性矩阵Uc,调用函数rank()可求得Uc的秩,从而判断系统的能控性,同理求得能观性矩阵Uo,用rank()求其秩,再判断系统的能观性。

4、实验步骤

① 根据系统的系数阵A和输入阵B,依据能控性判别式,对所给系统采用MATLAB编

程;在MATLAB界面下调试程序,并检查是否运行正确。

② 根据系统的系数阵A和输出阵C,依据能观性判别式,对所给系统采用MATLAB编

程;在MATLAB界面下调试程序,并检查是否运行正确。

③ 构造变换阵,将一般形式的状态空间描述变换成能控标准形、能观标准形。 题3.1 已知系数阵A和输入阵B分别如下,判断系统的状态能控性

6.66610.66670.33330, B1

A1011201题3.2 已知系数阵A和输出阵C分别如下,判断系统的状态能观性。

6.66610.66670.3333, C102

A101120题3.3 已知系统状态空间描述如下

05x2y112110u12x 0010x(1)判断系统的状态能控性; (2)判断系统的状态能观测性;

(3)构造变换阵,将其变换成能控标准形; (4)构造变换阵,将其变换成能观测标准形;

题3.1代码及结果

A=[6.666,-10.6667,-0.3333;1,0,1;0,1,2];B=[0;1;1]; Uc=[B,A*B,A^2*B]; rank(Uc)

ans =

3

题3.2代码及结果

A=[6.666,-10.6667,-0.3333;1,0,1;0,1,2];C=[1,0,2]; Uo=[C;C*A;C*A^2]; rank(Uo)

ans =

3

题3.3代码及结果

A=[0,2,-1;5,1,2;-2,0,0];B=[1;0;-1];C=[1,1,0]; Uc=[B,A*B,A^2*B]; Uo=[C;C*A;C*A^2]; (1).判断能控性: rank(Uc)

ans =

3

(2).判断能观性: >> rank(Uo)

ans =

3

(3).构造变换阵,转化成能控标准型: A=[0,2,-1;5,1,2;-2,0,0];B=[1;0;-1];C=[1,1,0]; Uc=[B,A*B,A^2*B]; rank(Uc);

p1=[0,0,1]*inv(Uc); P=[p1;p1*A;p1*A^2] P =

0.13 0.0455 0.13 -0.0455 0.3182 -0.0455 1.6818 0.2273 0.6818

>> Ac=P*A*inv(P) Ac =

0 1.0000 0

0 0.0000 1.0000 -10.0000 12.0000 1.0000

>> Bc=P*B Bc =

0 0 1.0000

(4).构造变换阵,转化成能观标准型: A=[0,2,-1;5,1,2;-2,0,0];B=[1;0;-1];C=[1,1,0]; Uo=[C;C*A;C*A^2]; rank(Uo);

T1=inv(Uo)*[0;0;1]; T=[T1,A*T1,A^2*T1] T =

-0.5000 0 -1.0000 0.5000 0 2.0000 1.0000 1.0000 0

>> Ao=inv(T)*A*T

Ao =

0 0 -10 1 0 12 0 1 1

>> Co=C*T Co =

0 0 1

实验四 系统稳定性分析

1、实验设备

PC计算机1台,MATLAB软件1套。 2、实验目的

① 学习系统稳定性的定义及李雅普诺夫稳定性定理;

② 通过用MATLAB编程、上机调试,掌握系统稳定性的判别方法。 3、实验原理说明

根据李雅普诺夫第一第二方法判断系统的稳定性。 4、实验步骤

(1)掌握利用李雅普诺夫第一方法判断系统稳定性; (2)掌握利用李雅普诺夫第二方法判断系统稳定性。 题4.1 某系统状态空间描述如下

05x2y112110u12x 0010x(1)利用李雅普诺夫第一方法判断其稳定性; (2)利用李雅普诺夫第二方法判断其稳定性。

题4.1代码及结果

(1)李雅普诺夫第一方法: %存为stability.m %输入系统状态方程

A=[0,2,-1;5,1,2;-2,0,0];B=[1;0;-1];C=[1,1,0];D=0; %设立标志变量,判断是否稳定 flag=0;

%求解零极点及增益 [z,p,k]=ss2zp(A,B,C,D,1); %显示结果

disp('System zero-points,pole-points and gain are:'); z p k

%判断是否稳定 n=length(A); for i=1:n

if real(p(i))>0 flag=1; end end

if flag==1

disp('System is unstable'); else

disp('System is stable'); end

%运行 >> stability

System zero-points,pole-points and gain are: z =

1.0000 -4.0000 p =

-3.3978 3.5745 0.8234 k =

1

System is unstable

(2)李雅普诺夫第二方法: %存为stability2.m %系统状态方程模型 A=[0,2,-1;5,1,2;-2,0,0]; %选 Q=I Q=eye(3,3); %求解矩阵 P P=lyap(A,Q);

%显示矩阵P的各阶主子式的值并判断是否稳定 flag=0;

n=length(A); for i=1:n

det(P(1:i,1:i))

if(det(P(1:i,1:i))<=0) flag=1; end end

%显示结果 if flag==1

disp('System is unstable'); else

disp('System is stable'); end

%运行

>> stability2

ans =

-2.1250

ans =

-8.7813

ans =

6.1719

System is unstable

实验五 利用MATLAB实现极点配置、设计状态观测器

1、实验设备

PC计算机1台,MATLAB软件1套。

2、实验目的

① 学习闭环系统极点配置定理及算法,学习全维状态观测器设计方法;

② 通过用MATLAB编程、上机调试,掌握极点配置算法,设计全维状态观测器。

3、实验原理说明

采用直接计算反馈矩阵、Ackermann公式计算法、调用place函数法进行闭环系统极点配置。设计全维状态观测器。

4、实验步骤

(1)掌握采用直接计算法、采用Ackermann公式计算法、调用place函数法分别进行闭环系统极点配置;

(2)掌握利用MATLAB设计全维状态观测器。 题5.1 某系统状态方程如下

00x4y101013u01x 3260x理想闭环系统的极点为123,试

(1)采用直接计算法进行闭环系统极点配置;

(2)采用Ackermann公式计算法进行闭环系统极点配置; (3)采用调用place函数法进行闭环系统极点配置。 题5.2 某系统状态空间描述如下

010x001x13u4326 y100x设计全维状态观测器,要求状态观测器的极点为12

题5.1代码及结果

(1)直接计算法: %存为pole.m

%系统状态方程模型

A=[0,1,0;0,0,1;-4,-3,-2];B=[1;3;-6];C=[1,0,0];D=0; %理想闭环极点 P=[-1,-2,-3]; syms k1 k2 k3 s; K=[k1,k2,k3];

eg=simple(det(s*diag(diag(ones(size(A))))-A+B*K)); f=1; for i=1:3

f=simple(f*(s-P(i))); end f=f-eg;

[k1,k2,k3]=solve(subs(f,'s',0),subs((diff(f,'s')),'s',0),diff(f,'s',2))

%运行 >>pole k1 =

194/131 k2 =

3。

98/131 k3 =

-6/131

(2)采用Ackermann公式计算: %存为bijuan.m

%系统状态方程模型

A=[0,1,0;0,0,1;-4,-3,-2];B=[1;3;-6];C=[1;0;0]; %理想闭环极点 P=[-1,-2,-3]; K=acker(A,B,P) A-B*K

%运行 >>bihuan K =

1.4809 0.7481 -0.0458

ans =

-1.4809 0.2519 0.0458 -4.4427 -2.2443 1.1374 4.8855 1.4885 -2.2748

(3)调用place函数法: %存为bihuan.m %系统状态方程模型

A=[0,1,0;0,0,1;-4,-3,-2];B=[1;3;-6];C=[1;0;0]; eig(A)'

%理想闭环极点 P=[-1,-2,-3]; K=place(A,B,P) eig(A-B*K)'

%运行 >> bihuan

ans =

-1.6506 -0.1747 - 1.5469i -0.1747 + 1.5469i K =

1.4809 0.7481 -0.0458

ans =

-3.0000 -2.0000 -1.0000

题5.2代码及结果: %存为quanwei.m %系统状态方程

A=[0,1,0;0,0,1;-4,-3,-2];B=[1;3;-6];C=[1,0,0]; n=3;

%计算能观性矩阵 ob=obsv(A,C);

%计算能观性矩阵的秩 roam=rank(ob); %判断系统能观性 if roam==n

disp('System is observable'); elseif roam~=n

disp('System is not observable'); end

%运行 >>quanwei

System is observable

%设计全维状态观测器 %系统状态方程

A=[0,1,0;0,0,1;-4,-3,-2];B=[1;3;-6];C=[1,0,0]; %理想闭环极点 P=[-1,-2,-3];

A1=A';B1=C';C1=B'; K=acker(A1,B1,P); %求解系统矩阵 E=(K)'

aEc=A-E*C

%运行

>>quanwei E =

4 0 -10

aEc =

-4 1 0 0 0 1 6 -3 -2

实验心得:

通过这次实验,我对于Matlab的使用更加熟悉,深深的感受到了这个软件的魅力所在。它强大的运算功能让我深深的折服了!在自己编程的过程中,我对于相关的知识有了更深的认知,系统的能控性、能观测性,系统的极点配置等等,掌握的更加熟悉!我相信,这对于以后的学习,会有更大的帮助!

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- 91gzw.com 版权所有 湘ICP备2023023988号-2

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务