实验四 线性定常系统的能控性、能观测性及稳定性
一、实验目的
1. 掌握能控性和能观测性的概念,学会用MATLAB判断能控性和能观测性。 2. 掌握系统的结构分解,学会用MATLAB进行结构分解。 3. 掌握最小实现的概念,学会用MATLAB求最小实现。
4. 掌握系统稳定性的概念,学会使用MATLAB确定线性定常系统和非线性定常系统的稳定性。
二、实验内容 1. 已知系统
??3?4??4????xx?u ?????10??1?
y???1?1?x
(1)判断系统状态的能控性和能观测性及系统输出的能控性。说明状态能控性和输出能控性之间有无联系。
(2)令系统的初始状态为零,系统的输入分别为单位阶跃函数和单位脉冲函数。
用MATLAB函数计算系统的状态响应和输出响应,并绘制相应的响应曲线。 观察和记录这些曲线。当输入改变时, 每个状态变量的响应曲线是否随着改变?能否根据这些曲线判断系统状态的能控性?
(3) 将给定的状态空间表达式变换为对角标准型,判断系统的能控性和能观测性,与(1)的结果是否一致?
(4)令(3)中系统的初始状态为零, 输入分别为单位阶跃函数和单位脉冲函数。
用MATLAB函数计算系统的状态响应和输出响应,并绘制响应的曲线。
观察和记录这些曲线。当输入改变时, 每个状态变量曲线是否随着改变?状态变量的响应曲线有何不同?
(5)根据(2)和(4)所得曲线能否判断系统状态以及各状态变量的能观测性? 2. 已知系统
00???10?2?
?1??0?30?0?x???u ???x
?0?0?0?20?
????
00?4??0?0?
y??1010?x
(1)将给定的状态空间模型转换为传递函数模型。令初始状态为零,用MATLAB计算系统的单位阶跃输出响应,绘制和记录相应的曲线。
1
(2)按能控性分解给定的状态空间模型并记录所得的结果,然后再将其转换为传递函数模型。令初始状态为零,用MATLAB计算系统的单位阶跃输出响应,并绘制和记录相应曲线,与(1)中的输出曲线是否一致?
(3)按能观测性分解给定的状态空间模型并记录分解所得的结果,然后再将其转换为传递函数模型。与(1)中的传递函数模型是否一致?令初始状态为零,用MATLAB计算系统的单位阶跃输出响应,并绘制和记录相应曲线。令初始状态为零,用MATLAB计算系统的单位阶跃输出响应,并绘制和记录相应的曲线。与(1)中的输出曲线是否一致? 3. 已知系统
00???10?2?
?0?30??1?0?x???u ??? (a)x
?0?0?0?20?????
00?4??0??0
y??1010?x (b)G(s)?
s?1
(s?1)(s?2)(s?3)
用函数minreal( )求最小实现。判断所得系统的能控性和能观测性,验证其是否最小实现。 4. 已知线性系统
1??0?04?
??(a)x???x (b)x???10?x
?1?1???????(c)x
?11??10?
?x (d)x?x ???
??11??01?
(1)用函数eig( ),pole( )和zpkdata( )求出系统的特征值和极点。用函数pzmap( )绘制系统
的零点和极点。确定系统的稳定性。
(2)任意给定对称正定矩阵Q,用函数lyap( )求解Lyaponov方程,确定系统的稳定性。与(1)的结果进行比较。 (3)令B???,C??0
?0??0?
0? ,D?0,任意给定初始状态。用函数initial( )求出系统的
零输入响应,并绘制相应的状态响应曲线。说明稳定系统的状态响应曲线与不稳定系统的状态响应曲线的区别。 (4)令B??
?1?
,C??11? ,D?0,初始状态为零。 用函数step( )求出系统在单位???1?
阶跃信号作用下的状态响应和输出响应, 并绘制相应的曲线。分析系统的状态稳定和输出稳定是否一致。
三、实验步骤
2
1. 能控性
1)线性定常系统状态能控性的判断
n阶线性定常连续或离散系统?(A,B)状态完全能控的充分必要条件是:能控性矩阵
Uc?B
?ABA2B?An?1B的秩为n。
?能控性矩阵可用MATLAB提供的函数ctrb( )自动产生,其调用格式为:
Uc?ctrb(A,B)
其中A,B分别为系统矩阵和输入矩阵,Uc为能控性矩阵。
能控性矩阵的秩即rank(Uc)称为能控性指数,表示系统能控状态变量的数目,可由MATLAB提供的函数rank( )求出。 例4-1 判断系统的能控性
1??132??2
?u ???020?x??1 x1????
???013????1?1??
y??
?211?
?x
010??
在命令窗中运行下列命令
>> A=[1 3 2;0 2 0;0 1 3]; B=[2 1; 1 1;-1 -1]; Uc=ctrb(A,B); rank(Uc) 返回 ans = 2
因为rank(Uc)=2?n,所以系统的状态不完全能控。
也可编制判断系统状态能控性的函数sctrb( ),其程序如下: function sctrb(A,B) %判断系统状态的能控性 Uc=ctrb(A,B); nc=rank(Uc); n=length(A); if n==nc
disp('system is completely state controllable') else
disp('system is not completely state controllable') end
在命令窗中运行下列命令
3
>> A=[1 3 2;0 2 0;0 1 3];B=[2 1;1 1;-1 -1];sctrb(A,B) 返回
system is not completely state controllable 2)线性定常系统输出能控性的判断
m?(n?1)r矩阵线性定常连续或离散系统?(A,B,C,D)输出能控的充分必要条件是:
Uy?CBCAB
输出个数。
矩阵Uy可以通过能控性矩阵Uc得到,即Uy?C*Uc例4-2 判断系统的输出能控性
?CA2B?CAn?1B
D的秩为m,其中r为系统的输入个数,m为
??D?
??45???5?
???xx?u ????10??1?
y??1?1?x
在命令窗中运行下列命令
>> A=[-4 5;1 0];B=[-5;1];C=[1 -1];D=0;Uc=ctrb(A,B);Uy=[C*Uc D];rank(Uy) 返回 ans= 1
因为rank(Uy)=1=m,故系统是输出能控的。
类似的,也可编制判断输出能控性的函数。 2. 能观测性
n阶线性定常连续或离散系统?(A,C)状态完全能观测的充分必要条件是:能观测性矩
?C??CA???
2
阵Vo??CA?的秩为n。
?????n?1???CA?
能观测性矩阵可以用MATLAB提供的函数obsv( )自动产生,其调用格式为:
Vo?obsv(A,C)
其中A, C分别为系统矩阵和输出矩阵,Vo为能观测性矩阵。
能观测性矩阵的秩即rank(Vo)称为能观测性指数,表示系统能观测状态变量的数目。可由MATLAB提供的函数rank( )求出。
4
例4-3 判断例1中系统的能观测性
在命令窗中运行下列命令
>> A=[1 3 2;0 2 0;0 1 3]; C=[2 1 1;0 1 0]; Vo=obsv(A,C); rank(Vo) 返回 ans= 3
因为rank(Vo)=3=n,故系统状态完全能观测。
类似地,也可编制判断状态能观测性的函数。
3. 线性系统的结构分解 1) 按能控性分解
如果线性系统的状态不完全能控,则可通过非奇异线性变换, 将系统(或状态)分解为 能控和不能控两部分。
MATLAB提供的函数ctrbf( ), 可将系统(或状态)分解为如下形式:
?c??Ac?x??????xc??A21
0??xc??0?
??????u Ac??xc??Bc?y?Cc??x?
Cc?c? (4-1)
?xc?
?该函数的调用格式为:
?Ac
其中?A
BcCcTc
Kc??ctrbf(A,B,C)
Bc
Cc?为分解后系统的状态空间模
BC?为给定系统的状态空间模型,?Ac
型。Tc为相应线性变换矩阵,Kc返回系统中能控状态变量的数目。 例4-4 按能控性分解
?00?1??1?
???10?3?x??1?u x???????01?3???0??y??01?2?x
在命令窗中运行下列命令
>> A=[0 0 -1;1 0 -3;0 1 -3]; B=[1;1;0]; C=[0 1 -2]; [Ac Bc Cc Tc Kc]=ctrbf(A,B,C) 返回 Ac =
-1.0000 0.0000 -0.0000 -2.1213 -2.5000 0.8660 -1.2247 -2.5981 0.5000 Bc =
0 0 -1.4142
5
实验四线性定常系统的能控性 - 图文



