实验四-线性定常系统的能控性

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

1实验四线性定常系统的能控性、能观测性及稳定性一、实验目的1.掌握能控性和能观测性的概念,学会用MATLAB判断能控性和能观测性。2.掌握系统的结构分解,学会用MATLAB进行结构分解。3.掌握最小实现的概念,学会用MATLAB求最小实现。4.掌握系统稳定性的概念,学会使用MATLAB确定线性定常系统和非线性定常系统的稳定性。二、实验内容1.已知系统uxx140143xy11(1)判断系统状态的能控性和能观测性及系统输出的能控性。说明状态能控性和输出能控性之间有无联系。(2)令系统的初始状态为零,系统的输入分别为单位阶跃函数和单位脉冲函数。用MATLAB函数计算系统的状态响应和输出响应,并绘制相应的响应曲线。观察和记录这些曲线。当输入改变时,每个状态变量的响应曲线是否随着改变?能否根据这些曲线判断系统状态的能控性?(3)将给定的状态空间表达式变换为对角标准型,判断系统的能控性和能观测性,与(1)的结果是否一致?(4)令(3)中系统的初始状态为零,输入分别为单位阶跃函数和单位脉冲函数。用MATLAB函数计算系统的状态响应和输出响应,并绘制响应的曲线。观察和记录这些曲线。当输入改变时,每个状态变量曲线是否随着改变?状态变量的响应曲线有何不同?(5)根据(2)和(4)所得曲线能否判断系统状态以及各状态变量的能观测性?2.已知系统uxx00124000020000300001xy0101(1)将给定的状态空间模型转换为传递函数模型。令初始状态为零,用MATLAB计算系统的单位阶跃输出响应,绘制和记录相应的曲线。2(2)按能控性分解给定的状态空间模型并记录所得的结果,然后再将其转换为传递函数模型。令初始状态为零,用MATLAB计算系统的单位阶跃输出响应,并绘制和记录相应曲线,与(1)中的输出曲线是否一致?(3)按能观测性分解给定的状态空间模型并记录分解所得的结果,然后再将其转换为传递函数模型。与(1)中的传递函数模型是否一致?令初始状态为零,用MATLAB计算系统的单位阶跃输出响应,并绘制和记录相应曲线。令初始状态为零,用MATLAB计算系统的单位阶跃输出响应,并绘制和记录相应的曲线。与(1)中的输出曲线是否一致?3.已知系统(a)uxx00124000020000300001xy0101(b))3)(2)(1(1)(sssssG用函数minreal()求最小实现。判断所得系统的能控性和能观测性,验证其是否最小实现。4.已知线性系统(a)xx1110(b)xx0140(c)xx1111(d)xx1001(1)用函数eig(),pole()和zpkdata()求出系统的特征值和极点。用函数pzmap()绘制系统的零点和极点。确定系统的稳定性。(2)任意给定对称正定矩阵Q,用函数lyap()求解Lyaponov方程,确定系统的稳定性。与(1)的结果进行比较。(3)令00B,00C,0D,任意给定初始状态。用函数initial()求出系统的零输入响应,并绘制相应的状态响应曲线。说明稳定系统的状态响应曲线与不稳定系统的状态响应曲线的区别。(4)令11B,11C,0D,初始状态为零。用函数step()求出系统在单位阶跃信号作用下的状态响应和输出响应,并绘制相应的曲线。分析系统的状态稳定和输出稳定是否一致。三、实验步骤31.能控性1)线性定常系统状态能控性的判断n阶线性定常连续或离散系统),(BA状态完全能控的充分必要条件是:能控性矩阵BABAABBUnc12的秩为n。能控性矩阵可用MATLAB提供的函数ctrb()自动产生,其调用格式为:),(BActrbUc其中A,B分别为系统矩阵和输入矩阵,cU为能控性矩阵。能控性矩阵的秩即)(cUrank称为能控性指数,表示系统能控状态变量的数目,可由MATLAB提供的函数rank()求出。例4-1判断系统的能控性uxx111112310020231xy010112在命令窗中运行下列命令A=[132;020;013];B=[21;11;-1-1];Uc=ctrb(A,B);rank(Uc)返回ans=2因为rank(Uc)=2n,所以系统的状态不完全能控。也可编制判断系统状态能控性的函数sctrb(),其程序如下:functionsctrb(A,B)%判断系统状态的能控性Uc=ctrb(A,B);nc=rank(Uc);n=length(A);ifn==ncdisp('systemiscompletelystatecontrollable')elsedisp('systemisnotcompletelystatecontrollable')end在命令窗中运行下列命令4A=[132;020;013];B=[21;11;-1-1];sctrb(A,B)返回systemisnotcompletelystatecontrollable2)线性定常系统输出能控性的判断线性定常连续或离散系统),,,(DCBA输出能控的充分必要条件是:rnm)1(矩阵DBCABCACABCBUny12的秩为m,其中r为系统的输入个数,m为输出个数。矩阵yU可以通过能控性矩阵cU得到,即DUCUcy*例4-2判断系统的输出能控性uxx150154xy11在命令窗中运行下列命令A=[-45;10];B=[-5;1];C=[1-1];D=0;Uc=ctrb(A,B);Uy=[C*UcD];rank(Uy)返回ans=1因为rank(Uy)=1=m,故系统是输出能控的。类似的,也可编制判断输出能控性的函数。2.能观测性n阶线性定常连续或离散系统),(CA状态完全能观测的充分必要条件是:能观测性矩阵1n2CACACACoV的秩为n。能观测性矩阵可以用MATLAB提供的函数obsv()自动产生,其调用格式为:),(CAobsvVo其中A,C分别为系统矩阵和输出矩阵,oV为能观测性矩阵。能观测性矩阵的秩即)(oVrank称为能观测性指数,表示系统能观测状态变量的数目。可由MATLAB提供的函数rank()求出。5例4-3判断例1中系统的能观测性在命令窗中运行下列命令A=[132;020;013];C=[211;010];Vo=obsv(A,C);rank(Vo)返回ans=3因为rank(Vo)=3=n,故系统状态完全能观测。类似地,也可编制判断状态能观测性的函数。3.线性系统的结构分解1)按能控性分解如果线性系统的状态不完全能控,则可通过非奇异线性变换,将系统(或状态)分解为能控和不能控两部分。MATLAB提供的函数ctrbf(),可将系统(或状态)分解为如下形式:uBxxAAAxxccccccc0021ccccxxCCy(4-1)该函数的调用格式为:),,(CBActrbfKTCBAccccc其中CBA为给定系统的状态空间模型,cccCBA为分解后系统的状态空间模型。cT为相应线性变换矩阵,cK返回系统中能控状态变量的数目。例4-4按能控性分解uxx011310301100xy210在命令窗中运行下列命令A=[00-1;10-3;01-3];B=[1;1;0];C=[01-2];[AcBcCcTcKc]=ctrbf(A,B,C)返回Ac=-1.00000.0000-0.0000-2.1213-2.50000.8660-1.2247-2.59810.5000Bc=00-1.41426Cc=1.73211.2247-0.7071Tc=-0.57740.5774-0.57740.4082-0.4082-0.8165-0.7071-0.70710Kc=110另一种按能控性分解的形式为uBxxAAAxxccccccc0012ccccxxCCy(4-2)将由ctrbf()函数得到的各系数矩阵均利用MATLAB提供的函数rot90()旋转180就可得这种形式。函数rot90()的调用格式为),(90karot将矩阵a逆时针旋转90k.我们编制的函数cdescom()能够将系统分解为这种形式。该函数的调用格式为),,(CBAcdescomkTcCcBcAc其中),,(CBA为给定系统的状态空间模型,CcBcAc,,为分解后系统的状态空间模型。Tc为相应的线性变换矩阵。k表示能控状态变量的数目。该函数的程序如下function[Ac,Bc,Cc,Tc,k]=cdescom(A,B,C)%按能控性分解U=ctrb(A,B);m=rank(U);n=size(A,1);ifm~=nt1=U(:,1);fori=2:n*mt2=[t1,U(:,i)];ifrank(t2)==it1=t2;elset1=t1;endifrank(t1)==mbreak;endendp=zeros(n-m,n);fori=0:m7p(1:n-m,m+1-i:n-i)=eye(n-m,n-m);Tc=[t1,p'];ifrank(Tc)==nbreak;endendAc=inv(Tc)*A*Tc;Bc=inv(Tc)*B;Cc=C*Tc;k=m;end在命令窗中运行下列命令A=[00-1;10-3;01-3];B=[1;1;0];C=[01-2];[AcBcCcTc]=cdescom(A,B,C)返回Ac=0-1-11-2-200-1Bc=100Cc=1-1-2Tc=100110011k=22)按能观测性分解如果线性系统状态不完全能观测,则可通过非奇异线性变换将系统(或状态)分解为能观测和不能观测两部分。MATLAB提供的函数obsvf()可将系统(或状态)分解为如下形式:uBBxxAAAxxoooooooo012oooxxCy0(4-3)该函数的调用格式为),,(CBAobsvfKTCBAooooo其中CBA为给定系统的状态空间模型,oooCBA为分解后系统的状态空间模8型。oT为相应的线性变换矩阵,oK返回系统能控状态变量的数目。例4-5按能观测分解例4-4中系统可在命令窗中运行下列命令进行分解A=[00-1;10-3;01-3];B=[1;1;0];C=[01-2];[AoBoCoToKo]=obsvf(A,B,C)另一种按能观测性分解的形式为uBBxxAAAxxoooooooo210oooxxCy0(4-4)将由ctrbf()函数得到的各系数矩阵均利用MATLAB提供的函数rot90()旋转180就可得这种形式。我们编制的函数odescom()能够将系统分解为这种形式。该函数的调用格式为),,(CBAodescomkToCoBoAo其中),,(CBA为给定系统的状态空间模型,(CoBoAo,,)为分解后系统的状态空间模型。To为相应的线性变换矩阵。k表示能观测的状态变量的数目。该函数的程序如下function[Ao,Bo,Co,To,k]=odescom(A,B,C)%按能观测性分解V=obsv(A,C);m=rank(V);n=size(A,1);ifm~=nt1=V(1,:);fori=2:n*mt2=[t1;V(i,:)];ifrank(t2)==

1 / 13
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功