【matlab】李雅普诺夫稳定性分析

目录

引言

一、基本概念

二、李雅普诺夫稳定性分析方法

[1. 第一方法(间接法)](#1. 第一方法(间接法))

[2. 第二方法(直接法)](#2. 第二方法(直接法))

三、应用与发展

matalb代码

对称矩阵的定号性(正定性)的判定

线性定常连续系统的李雅普诺夫稳定性

线性定常离散系统的李雅普诺夫稳定性


引言

李雅普诺夫稳定性分析是俄国数学家和力学家A.M.李雅普诺夫在1892年创立的用于分析系统稳定性的理论。该理论能同时适用于分析线性系统和非线性系统、定常系统和时变系统的稳定性,是更为一般的稳定性分析方法。以下是对李雅普诺夫稳定性分析的基本介绍:

一、基本概念

  1. 标量函数的定号性
    • 正定(半正定):若V(0)=0,且对任意非零x,V(x)>0(≥0),则称标量函数V(x)正定(半正定)。
    • 负定(半负定):类似地,若V(x)<0(≤0),则称标量函数V(x)负定(半负定)。
    • 非负定(非正定):正定和半正定(负定和半负定)统称为非负定(非正定)。
    • 不定:无任何定号性的称为不定。
  2. 实对称矩阵的正定性
    • 定理:实对称矩阵A是正定(半正定)的,当且仅当所有特征值均大于(大于等于)零;或者所有主子式均大于(大于等于)零。
  3. 李雅普诺夫稳定性
    • 平衡状态:对于系统,满足f(x)=0的状态x称作系统的平衡状态或平衡点。
    • 稳定性:若对于任意给定正实数ε,都存在δ,使得从满足不等式|x0|≤δ的任意初始状态出发的系统运动,满足|x(t)|≤ε(t≥0),则称系统的平衡状态是(在李雅普诺夫意义下)稳定的。
    • 渐近稳定:若平衡状态不仅是李雅普诺夫稳定的,还存在一个邻域(吸引域),从该邻域内出发的运动都会渐进地收敛到平衡点,则称平衡状态是渐近稳定的。
    • 全局渐近稳定:若渐近稳定且吸引域充满整个状态空间,则称平衡状态是全局渐近稳定的。

二、李雅普诺夫稳定性分析方法

1. 第一方法(间接法)
  • 原理:将系统的描述在平衡点附近进行线性化,针对线性化模型进行稳定性判断,判断雅克比矩阵A的特征值的实部。
  • 稳定性判别定理
    • 若A的特征值均具有负实部,则系统是渐近稳定的;
    • 若存在特征值具有正实部,则系统是不稳定的;
    • 其他情况,则不能判定。
2. 第二方法(直接法)
  • 原理:直接构造一个正定的标量函数V(x)(能量函数),通过判断该函数沿系统状态轨线对时间的导数V'(x)的定号性来判别系统平衡状态的稳定性。
  • 稳定性判别定理
    • 若V(x)正定,V'(x)负定,则原点是渐近稳定的;
    • 若V(x)正定,V'(x)半负定,且V'(x)在原点外不恒为零,则原点是渐近稳定的;
    • 若V(x)正定,V'(x)半负定,但V'(x)在原点外恒为零,则原点是稳定的;
    • 若V(x)正定,V'(x)不定,则不能判定稳定性。

三、应用与发展

李雅普诺夫稳定性理论自提出以来,一直是指导系统稳定性研究的重要工具。特别在非线性系统稳定性分析方面,该理论显示了其独特的优越性。随着研究的深入,李雅普诺夫第二方法被推广到研究一般系统的稳定性,如度量空间中不变集合的稳定性、大系统或多级系统的稳定性等。

总之,李雅普诺夫稳定性分析是一种重要的系统稳定性分析方法,它提供了从能量角度判断系统稳定性的新思路,并在实际应用中得到了广泛的验证和应用。

matalb代码

对称矩阵的定号性(正定性)的判定

判别对称矩阵的定号性(正定性)的方法主要有塞尔维斯特定理的判别法、矩阵特征值判别法和合同变换法。
判定矩阵正定性的函数posit_def()的主要调用格式为:
sym_P=posit_def(P)
其中,输入矩阵P须为对称矩阵,ü输出sym_P为'positive', 'nonnegat','negative','nonposit'和'undifini'分别表示输入矩阵P为正定、非负定(半正定)、负定、非正定(半负定)与不定。
eg:

复制代码
=[1 -1 -1; -1 3 2; -1 2 -5];
result_state=posit_def(P);    % 采用合同变换法判定矩阵定号性
switch  result_state(1:5)       % 运用开关语句,分类陈述矩阵正定否的判定结果 
    case 'posit'
        disp('The matrix is a positive definite matrix.')
    otherwise
        disp('The matrix is not a positive definite matrix.')
end 

基于合同变换法的矩阵定号性(正定性)的判定函数posit_def()

复制代码
function sym_P=posit_def(P)
[m,n]=size(P);
if n>1
   for i=1:n-1
      for j=i:n       dia_v(j)=abs(P(j,j));      end
      [mindv,imin]=max(dia_v(i:n));
      imin=imin+i-1;
      if mindv>0
         if imin > i
            a=P(imin,:);  P(imin,:)=P(i,:);  P(i,:)=a;
            b=P(:,imin);  P(:,imin)=P(:,i);  P(:,i)=b;    
         end
         for j=i+1:n
            x=P(i,j)/P(i,i);
            P(:,j)=P(:,j)-P(:,i)*x; P(j,:)=P(j,:)-P(i,:)*x;
         end
      end
   end
end
for i=1:n
    dia_vect(i)=P(i,i);
end
mindv=min(dia_v);  maxdv=max(dia_v);
if mindv>0
    sym_P='positive';
elseif mindv>=0
    sym_P='nonnegat';        
elseif maxdv<0
    sym_P='negative';        
elseif maxdv<=0
    sym_P='nonposit';        
else
    sym_P='undifini';       
end 

线性定常连续系统的李雅普诺夫稳定性

基于此函数求解李雅普诺夫方程所得对称矩阵解后,通过判定该解矩阵的正定性来判定线性定常连续系统的李雅普诺夫稳定性。函数lyap()的主要调用格式为:
P=lyap(A,Q)
其中,矩阵A和Q分别为连续时间李雅普诺夫矩阵代数方程 PA +A tP =-Q的已知矩阵,即输入条件; 而P为该矩阵代数方程的对称矩阵解。
eg:

下面分别基于矩阵特征值和合同变换两种方法判定李雅普诺夫方程的解的正定性,再来判定线性系统的渐近稳定性。

复制代码
A=[0 1; -1 -1];
Q=eye(size(A,1));                % 取Q矩阵为与A矩阵同维的单位矩阵
P=lyap(A,Q);                       % 解李雅普诺夫代数方程,得对称矩阵解P
P_eig=eig(P);                       % 求P的所有特征值
if min(P_eig)>0                   % 若对称矩阵P的所有特征值大于0,则矩阵P正定,
                                                    % 即系统为李雅普诺夫稳定的
    disp('The system is Lypunov stable.')
else                                      % 否则为不稳定
    disp('The system is not Lypunov stable.')
end 

result_state=posit_def(P);             % 用合同变换法判别矩阵P的正定性
switch  result_state(1:8)
    case 'positiv'                              % 若矩阵P正定,则系统为李雅普诺夫稳定的
        disp('The system is Lypunov stable. ')
    otherwise                                  % 否则为不稳定
        disp('The system is not Lypunov stable. )
end

线性定常离散系统的李雅普诺夫稳定性

与连续李雅普诺夫矩阵代数方程函数lyap()的调用格式类似,函数dlyap()的主要调用格式为:

P=dlyap(G,Q)

其中矩阵G和Q分别为需求解的离散时间李雅普诺夫矩阵代数方程的已知矩阵,即输入条件;而P为该矩阵代数方程的对称矩阵

G tPG -P =-Q

eg:

复制代码
G=[0 1; -0.5 -1];
Q=eye(size(G,1));
P=dlyap(G,Q);
result_state=posit_def(P);
switch  result_state(1:5)
    case 'posit'
        disp('The system is Lypunov stable. ')
    otherwise
        disp('The system is not Lypunov stable.' )
end
相关推荐
yugi9878388 小时前
基于MATLAB强化学习的单智能体与多智能体路径规划算法
算法·matlab
IT猿手17 小时前
基于强化学习的多算子差分进化路径规划算法QSMODE的机器人路径规划问题研究,提供MATLAB代码
算法·matlab·机器人
fie888921 小时前
基于MATLAB的转子动力学建模与仿真实现(含碰摩、不平衡激励)
开发语言·算法·matlab
机器学习之心21 小时前
基于GRU门控循环单元的轴承剩余寿命预测MATLAB实现
深度学习·matlab·gru·轴承剩余寿命预测
简简单单做算法1 天前
基于FFT粗估计和LS最小二乘法精估计的正弦信号参数估计和检测matlab仿真
matlab·最小二乘法·参数估计·fft粗估计·ls最小二乘法
kaikaile19951 天前
基于MATLAB的滑动轴承弹流润滑仿真程序实现
开发语言·matlab
Not Dr.Wang4221 天前
FIR数字滤波器设计的两种实现
matlab
3GPP仿真实验室1 天前
【MATLAB源码】CORDIC-QR :基于Cordic硬件级矩阵QR分解
开发语言·matlab·矩阵
民乐团扒谱机2 天前
【微实验】机器学习之集成学习 GBDT和XGBoost 附 matlab仿真代码 复制即可运行
人工智能·机器学习·matlab·集成学习·xgboost·gbdt·梯度提升树
Evand J2 天前
TDOA(到达时间差)的GDOP和CRLB计算的MATLAB例程,论文复现,附参考文献。GDOP:几何精度因子&CRLB:克拉美罗下界
开发语言·matlab·tdoa·crlb·gdop