Ch.5李雅普诺夫稳定性分析目录(1/1)目录概述5.1李雅普诺夫稳定性的定义5.2李雅普诺夫稳定性的基本定理5.3线性系统的稳定性分析5.4非线性系统的稳定性分析5.5Matlab问题本章小结Matlab问题(1/2)5.5Matlab问题本章涉及的计算问题为线性定常连续/离散系统的李雅普诺夫稳定性分析,主要为对称矩阵的定号性(正定性)判定、连续/离散李雅普诺夫矩阵代数方程求解等。本节除将讨论上述问题基于Matlab的问题求解外,还将介绍进行线性定常系统结构性质分析的仿真平台软件lti_struct_analysis,以及该软件平台在系统实现、模型变换、Matlab问题(2/2)状态能控性/能观性分析、能控/能观分解、能控/能观规范形以及李雅普诺夫稳定性分析等系统结构性问题中的应用。下面就分别介绍对称矩阵的定号性(正定性)的判定线性定常连续系统的李雅普诺夫稳定性线性定常离散系统的李雅普诺夫稳定性线性定常系统的状态空间模型的结构性分析仿真平台对称矩阵的定号性(正定性)的判定(1/12)5.5.1对称矩阵的定号性(正定性)的判定判别对称矩阵的定号性(正定性)的方法主要有塞尔维斯特定理的判别法、矩阵特征值判别法和合同变换法。塞尔维斯特定理判别法主要用于判别正定和负定,难以判别非正定、非负定和不定;特征值判别法的计算量大且计算复杂,其计算精度和数值特性有局限性;而合同变换法计算简单,稍加改进可成为一个良好的判别矩阵定号性的数值算法。对称矩阵的定号性(正定性)的判定(2/12)编著者采用求解线性方程组的主元消元法的思想,编制了基于合同变换法的矩阵定号性(正定性)的判定函数posit_def()。通过该函数可以方便地判定对称矩阵的定号性。函数posit_def()的源程序为对称矩阵的定号性(正定性)的判定(3/12)functionsym_P=posit_def(P)[m,n]=size(P);ifn1fori=1:n-1forj=i:ndia_v(j)=abs(P(j,j));end[mindv,imin]=max(dia_v(i:n));imin=imin+i-1;ifmindv0ifiminia=P(imin,:);P(imin,:)=P(i,:);P(i,:)=a;b=P(:,imin);P(:,imin)=P(:,i);P(:,i)=b;endforj=i+1:nx=P(i,j)/P(i,i);P(:,j)=P(:,j)-P(:,i)*x;P(j,:)=P(j,:)-P(i,:)*x;endendendend%定义函数posit_def()%取P矩阵的维数大小n%若n1,则对P进行合同变换%对非对角线元素进行消元%取未消元的对角线绝对值%求对角线绝对值的最大者%将对角线绝对值最大值所在的行和列与当前行列交换%对当前行列的非对角线元素进行消元对称矩阵的定号性(正定性)的判定(4/12)fori=1:ndia_vect(i)=P(i,i);endmindv=min(dia_v);maxdv=max(dia_v);ifmindv0sym_P='positive';elseifmindv=0sym_P='nonnegat';elseifmaxdv0sym_P='negative';elseifmaxdv=0sym_P='nonposit';elsesym_P='undifini';end%取所有对角线元素%计算对角线元素的最大与最小值%若最小值0,则矩阵正定%若最小值0,则矩阵非负定%若最大值0,则矩阵负定%若最大值0,则矩阵非正定%否则为不定对称矩阵的定号性(正定性)的判定(5/12)判定矩阵正定性的函数posit_def()的主要调用格式为sym_P=posit_def(P)其中,输入矩阵P须为对称矩阵,输出sym_P为描述矩阵P的符号串。输出sym_P为'positive','nonnegat','negative','nonposit'和'undifini'分别表示输入矩阵P为正定、非负定(半正定)、负定、非正定(半负定)与不定。Matlab问题5-1试在Matlab中判定例5-2的如下实对称矩阵是否正定。1-1-1-132-125P对称矩阵的定号性(正定性)的判定(6/12)Matlab程序m5-1如下。P=[1-1-1;-132;-12-5];result_state=posit_def(P);%采用合同变换法判定矩阵定号性switchresult_state(1:5)%运用开关语句,分类陈述矩阵正定否的判定结果case'posit'disp('Thematrixisapositivedefinitematrix.')otherwisedisp('Thematrixisnotapositivedefinitematrix.')end1-1-1-132-125PMatlab程序m5-1执行结果如下。表明所判定的系统状态不能控。Thematrixisnotapositivedefinitematrix.在函数posit_def()和Matlab程序m5-1的源程序中,使用了基本矩阵函数abs()、max()和min(),以及开关语句switch-case,下面予以分别介绍。A.求实数绝对值和复数模的函数abs()函数abs()可以对实数求其绝对值,对复数则求其模,其调用格式为Y=abs(X)其中,输入X可以为1个数,也可为Matlab的数组;输出Y为输入数组X的各元素的绝对值或模。对称矩阵的定号性(正定性)的判定(7/12)如,在Matlab命令窗口中若输入abs([1+2i-1;-3-4+i])则系统输出ans=2.23611.00003.00004.1231B)求数组的最大值和最小值函数max()和min()函数max()和min()可以对数组求最大或最小值,以及该极值在数组中的位置。若计算的数组各元素为复数,则为求复数模的最大或最小值。对称矩阵的定号性(正定性)的判定(8/12)函数max()的主要调用格式为:[C,I]=max(A)D=max(A,B)对第1种调用格式,若输入A为向量,输出的C为向量A的各元素中最大值,输出I为该最大值在向量中的位置;若A为矩阵,则C为矩阵A的各列的各元素中最大值,输出I为这些最大值在各列的位置,这里输出C和I均为1维数组。如,执行语句[C,I]=max([1-23;-45-6]);后,C和I分别为[153]和[121]。对称矩阵的定号性(正定性)的判定(9/12)对第2种调用格式的输入A和B须为维数大小相同的矩阵或向量,输出D为A和B两矩阵同样位置的元素的最大值组成的矩阵。如,执行语句C=max([1-23;-45-6],[-12-3;4-56]);后,C为如下矩阵函数min()的调用格式与函数max()完全一致,但其求的是矩阵或向量各元素的最小值。对称矩阵的定号性(正定性)的判定(10/12)1234563)开关语句switch-case开关语句switch-case的作用为基于表达式的计算值,作多项分支计算,相当于多个分支语句if-then的作用。开关语句switch-case的使用格式为:switchswitch_exprcasecase_expr语句,...,语句case{case_expr1,case_expr2,case_expr3,...}语句,...,语句...otherwise语句,...,语句end对称矩阵的定号性(正定性)的判定(11/12)其中,switch_expr为用于多分支选择的选择表达式,case_expr,case_expr1,…为各分支的选项表达式。当选择表达式switch_expr的计算值等于各选项表达式case_expr的计算值时,则程序转移到该选项表达式后面的Matlab语句;若switch_expr的计算值不等于各case_expr的计算值,则计算otherwise后面的Matlab语句。使用开关语句switch-case可以使得程序简洁,易读易懂。如Matlab程序m5-1中的switch-case语句计算选择表达式result_state(1:5),即符号串result_state的前5个字符是否为‘posit’。若是,则认为该矩阵是正定的,否则为不是正定的。对称矩阵的定号性(正定性)的判定(12/12)5.5.2线性定常连续系统的李雅普诺夫稳定性Matlab提供了求解连续李雅普诺夫矩阵代数方程的函数lyap()。基于此函数求解李雅普诺夫方程所得对称矩阵解后,通过判定该解矩阵的正定性来判定线性定常连续系统的李雅普诺夫稳定性。函数lyap()的主要调用格式为P=lyap(A,Q)其中,矩阵A和Q分别为连续时间李雅普诺夫矩阵代数方程PA+AP=-Q的已知矩阵,即输入条件;而P为该矩阵代数方程的对称矩阵解。线性定常连续系统的李雅普诺夫稳定性(1/4)在求得对称矩阵P后,通过判定P是否正定,可以判定系统的李雅普诺夫稳定性。Matlab问题5-2试在Matlab中判定例5-8的如下系统的李雅普诺夫稳定性。下面分别基于矩阵特征值和合同变换两种方法判定李雅普诺夫方程的解的正定性,再来判定线性系统的渐近稳定性。线性定常连续系统的李雅普诺夫稳定性(2/4)21211110xxxx线性定常连续系统的李雅普诺夫稳定性(3/4)Matlab程序m5-2如下。A=[01;-1-1];Q=eye(size(A,1));%取Q矩阵为与A矩阵同维的单位矩阵P=lyap(A,Q);%解李雅普诺夫代数方程,得对称矩阵解PP_eig=eig(P);%求P的所有特征值ifmin(P_eig)0%若对称矩阵P的所有特征值大于0,则矩阵P正定,%即系统为李雅普诺夫稳定的disp(‘ThesystemisLypunovstable.’)else%否则为不稳定disp(‘ThesystemisnotLypunovstable.’)end21211110xxxx线性定常连续系统的李雅普诺夫稳定性(4/4)result_state=posit_def(P);%用合同变换法判别矩阵P的正定性switchresult_state(1:8)case'positiv'%若矩阵P正定,则系统为李雅普诺夫稳定的disp(‘ThesystemisLypunovstable.’)otherwise%否则为不稳定disp(‘ThesystemisnotLypunovstable.)endMatlab程序m5-2执行结果如下。两种判别方法均表明所判定的系统为李雅普诺夫稳定的。ThesystemisLypunovstable.ThesystemisLypunovstable.21211110xxxx5.5.3线性定常离散系统的李雅普诺夫稳定性与连续系统一样,Matlab提供了求解离散李雅普诺夫矩阵代数方程的函数dlyap()。基于此函数求解李雅普诺夫方程所得的解矩阵以及5.5.1介绍的判定矩阵正定性函数posit_def(),用户可以方便地判定线性定常离散系统的李雅普诺夫稳定性。与连续李雅普诺夫矩阵代数方程函数lyap()的调用格式类似,函数dlyap()的主要调用格式为:P=dlyap(G,Q)其中矩阵G和Q分别为需求解的离散时间李雅普诺夫矩阵代数方程线性定常离散系统的李雅普诺夫稳定性(1/4)GPG-P=-Q的已知矩阵,即输入条件;而P为该矩阵代数方程的对称矩阵解。Matlab问题5-3试在Matlab中判定例5-12的如下系统的李雅普诺夫稳定性。线性定常离散系统的李雅普诺夫稳定性(2/4)1122(1)()01(1)()0.51x