四 稳定性
1. 根据系统的极点和特征值判定稳定性
线性定常连续系统渐近稳定的充分必要条件是:系统传递函数的全部极点均位于S左半平面;或系统矩阵A的特征值均具有负实部。
利用MATLAB提供的下列函数可以确定系统的极点和特征值。 a) 函数eig( )的调用格式为V?eig(A) 返回方阵A的特征值。
b) 函数roots( )的调用格式为roots(den),其中den为多项式的系数行向量。计算多
项式方程的解。
c) 函数pole ( )的调用格式为pole(G),其中G为系统的LTI对象。计算系统传递函
数的极点。
d) 函数zpkdata( )的调用格式为[z,p,k]?zpkdata(G,'v'),其中G为系统LTI对象。
返回系统的零点、极点和增益。
e) 函数pzmap( )的调用格式为pzmap(G),其中G 为LTI对象。绘制系统的零点和极点。
2. 用李氏第二法判定稳定性 1) 线性定常连续系统的稳定性
??Ax,若A是非奇异矩阵,则原点是其唯一的平衡状态。系对于线性定常连续系统x?(x)统在原点处大范围渐近稳定的充分条件是:存在李氏函数v(x)?xTpx,且v(x)正定,v负定。
可用以下几种方法构造李氏函数。 I. 试凑法
???例4-1给定系统x?0??21??x,用李氏第二法判定系统的稳定性。 ?3?22?(x)。 选取李氏函数为v(x)?x1?x2,用程序%ex41求v%ex41 syms x1; syms x2;
syms V; A=[0 1;-2 -3]; V=x1*x1+x2*x2;
V1=A(1,1)*x1+A(1,2)*x2; V2=A(2,1)*x1+A(2,2)*x2; vder=simple(jacobian(V,x1)*V1+jacobian(V,x2)*V2)
26
在命令窗中运行该程序的结果为
vder=-2*x1*x2-6*x2^2
显然v?(x)不负定,故需另选李氏函数。再选取李氏函数为v(x)?2x1?x2,运行上述程序可得 vder=--6*x2^2
显然v?(x)负定,从而系统渐近稳定。 II. 用李氏方程求解
设线性定常系统为?(A,B,C,D)。若对于任意给定的对称正定矩阵Q,存在唯一满足Lyapunov方程ATP?PA??Q正定矩阵P,则系统大范围渐近稳定。
可用MATLAB提供的函数lyap( )求解Lyapunov方程,该函数调用格式为:
P?layp(A,Q)
22矩阵P的符号性质可用函数posdef( )判定。该函数的调用格式为:
s?posde(fP) 该函数的程序如下。
function s=posdef(P) %判定矩阵的正定性 r=length(P); for i=1:r
pp(i)=det(P(1:i,1:i)); end
k=find(pp<0);j=find(pp==0); if isempty(j)&isempty(k)
s='matrix is positive definite matrix'; elseif isempty(k)
s='matrix is half positive definite matrix'; else
s='non-definite matrix'; end
例4-2判定例4-1中系统的稳定性。
在命令窗中运行下列命令 >> A=[0 1;-2 -3];Q=eye(2);P=lyap(A,Q) s=posdef(P) 返回 P =
1.0000 -0.5000 -0.5000 0.5000 s =
matrix is positive definite matrix
27
III. 克拉索夫斯基(Krasovski)法(参下面的讨论) 对x??f(x,t),xe是平衡点,取F(x)???f?xT
若F(x)?FT(x)?F(x)<0,则xe是渐近稳定的,
V(x)?fT(x,t)f(x,t)?0是李氏函数,即
当x??,有V(x)??,则xe大范围是渐近稳定。
??Ax,若A非奇异。 推论: 对线性定常系统x当AT?A?0,则xe=0是大范围渐近稳定。 例
??? x??1?22??x 判断平衡点稳定性。 ?3?解 显然A非奇异,xe=0是唯一平衡点。
AT
??2?A???33???6?
其顺序主子式为A11??2,A22?3?0,故AT?A?0,由推论,有xe是大范围渐进稳定。 2)非线性定常系统的稳定性
??f(x)稳定性的方法有Krasovski法和变量梯度法等。 判断非线性系统x?x?, 在Krasovski法中,选取李氏函数为v(x)?x???f?T??f???(x)?x?????x?TFx? 则v?????x??x?????x???TT式中的导数项可以利用MATLAB提供的函数jacobian( )求出。该函数的调用格式为
jacobia(nf,x)
计算函数f对变量x的导数。
例4-3 对于给定非线性系统
?1??3x1?x2?x ?3
?x?x?x?x122?2?(x)。 可用程序%ex43求出F的各阶主子行列式以及v%ex43
syms x1 x2; x=[x1 x2];
28
f1=-3*x1+x2;
f2=x1-x2-x2^3;
F1=[jacobian(f1,x1) jacobian(f1,x2);jacobian(f2,x1) jacobian(f2,x2)]; F2=[jacobian(f1,x1) jacobian(f2,x1);jacobian(f1,x2) jacobian(f2,x2)] ; F=F1+F2; %计算F n=length(x);
for i=1:n
ff(i)=simple(det(F(1:i,1:i))); %计算F的第i阶主子行列式 end ff
v=f1*f1+f2*f2 %计算v(x)
在命令窗中运行该程序得 ff =
[-6, 8+36*x2^2] v =
(-3*x1+x2)^2+(x1-x2-x2^3)^2
可见F负定, 且当x??时,v(x)??,所以系统大范围渐近稳定。
对于线性定常系统,
F?A?T为常数矩阵,故可以用函数posdef( )直接判定矩阵
F的符号性质,从而判定系统的稳定性。
五 极点配置和状态观测器
1. 状态反馈和输出反馈
设线性定常系统的状态空间表达式为
??Ax?Bu (3-5-1) xy?Cx
如果采用状态反馈控制规律u?r?Kx,其中r是参考输入,则状态反馈闭环系统的状
态空间表达式为
??(A?BK)x?Br xy?Cx (3-5-2)
?1其传递函数为Gk?C[sI?(A?BK)]B
如果采用输出反馈控制律u?r?Hy,其中r是参考输入,则输出反馈闭环系统的状态空间表达式为
??(A?BHC)x?Br x 29
y?Cx (3-5-3)
其传递函数为Gk?C[sI?(A?BHC)]?1B 2. 极点配置
如果SISO线性定常系统完全能控,则可通过适当的状态反馈, 将闭环系统极点配置到任意期望的位置。
假定期望的闭环极点为?1,?2,…,?n,则闭环系统的特征方程为 f(s)?sI?(A?BK)?(s??1)(s??2)?(s??n)
* ?sn?a1sn?1???an?1s?an (3-5-4) 原系统的特征方程为
f(s)?sI?A?s?a1snn?1***???an?1s?an (3-5-5)
状态反馈矩阵K可由下面两种方法得出。 1) K?[a*?a]TL?1Uc*T?1 (3-5-6)
an?1?an?1?An?1其中 [a?a]?an?anUc?B?**?a1?a1*? (3-5-7)
?ABAB2B (3-5-8)
??an?1?a?n?2 L?????a1??1an?2an?3?1???a111???? (3-5-9) ????2) K??0?*01?Ucn?1f(A)(Ackermann公式) (3-5-10)
*n?1*其中 f(A)?A?a1A式为
???an?1A?anI
**MATLAB提供的函数acker( )是用Ackermann公式求解状态反馈阵K。该函数的调用格
K?acker(A,B,P)
其中A和B分别为系统矩阵和输入矩阵。P是期望极点构成的向量。
MATLAB提供的函数place( )也可求出状态反馈阵K。该函数的调用格式为
K?place(A,B,P)
函数place( )还适用于多变量系统极点配置,但不适用含有多重期望极点的问题。函数acker( )不适用于多变量系统极点配置问题,但适用于含有多重期望极点问题。 例5-1 已知系统的状态方程为
30