目录
- 前沿
 - 一、案例1
 - 1. 系统模型
 
- 二、案例2
 - 1. 系统模型
 - 2. 稳定性分析
 - 3. 仿真(包含代码)
 - 1. 仿真效果
 - 2. 仿真结果
 - 3. 仿真剖析
 - 4. 仿真图与代码
 
前沿
定义一个系统  
     
      
       
        
        
          x 
         
        
          ˙ 
         
        
       
         = 
        
       
         f 
        
       
         ( 
        
       
         x 
        
       
         , 
        
       
         u 
        
       
         ) 
        
       
      
        \dot{x} = f(x,u) 
       
      
    x˙=f(x,u), 其中  
     
      
       
       
         x 
        
       
      
        x 
       
      
    x 为状态变量, 
     
      
       
       
         u 
        
       
      
        u 
       
      
    u 为系统输入,其系统框图如下。
 
 此时若假设  
     
      
       
       
         u 
        
       
      
        u 
       
      
    u 是  
     
      
       
       
         x 
        
       
      
        x 
       
      
    x 的函数,即  
     
      
       
       
         u 
        
       
         = 
        
       
         ϕ 
        
       
         ( 
        
       
         x 
        
       
         ) 
        
       
      
        u = \phi (x) 
       
      
    u=ϕ(x) ,则  
     
      
       
        
        
          x 
         
        
          ˙ 
         
        
       
         = 
        
       
         f 
        
       
         ( 
        
       
         x 
        
       
         , 
        
       
         ϕ 
        
       
         ( 
        
       
         x 
        
       
         ) 
        
       
         ) 
        
       
      
        \dot{x} = f(x,\phi(x)) 
       
      
    x˙=f(x,ϕ(x))为新的研究对象, 系统框图为
 
一、案例1
1. 系统模型
{ x ˙ = f ( x , u ) = a x 2 + u u = ϕ ( x ) \begin{cases} \dot{x} = f(x,u) = ax^2+u \\ u= \phi(x) \end{cases} {x˙=f(x,u)=ax2+uu=ϕ(x)
可知, f ( 0 , 0 ) = 0 f(0,0) = 0 f(0,0)=0, 说明 平衡点为原点 ( 0 , 0 ) (0,0) (0,0)。若希望该点为系统渐进稳定的平衡点,则该问题就转化成了原点附近的平衡问题 (stability of origin ) \text{(stability of origin}) (stability of origin),由此易得,只要令 u = − a x 2 − x u = -ax^2-x u=−ax2−x,把其代回系统中,不难发现 x ˙ = − x \dot{x} = -x x˙=−x是一个简单的微分方程,解得 x ( t ) = C e − t x(t) = Ce^{-t} x(t)=Ce−t,当 t → ∞ t \rightarrow \infty t→∞ 时, x → 0 x \rightarrow 0 x→0。
- u u u 包含两部分,“ − a x 2 -ax^2 −ax2” 消除了原系统中的非线性部分,而 “ − x -x −x” 为系统提供稳定。
 
从该系统可以观察得出,把一个非线性系统,通过我们的输入将其线性话,这种方法叫反馈系统线性化,简单粗暴,只是单纯地消除原系统非线性部分,再添加一个稳定项,看似简单,但这种方法不一定是最佳的。
二、案例2
1. 系统模型
x ˙ = x 2 − x 3 + u \dot{x} = x^2-x^3+u x˙=x2−x3+u
2. 稳定性分析
同理,使用上述反馈线性化的方法,可以令 u = − x 2 + x 3 − x u = -x^2+x^3-x u=−x2+x3−x,一样可得 x ˙ = − x \dot{x} = -x x˙=−x使系统稳定。除了这种粗暴的方法,还有没有更好的呢?当然,对于系统稳定性问题,一定不要忘了李雅普诺夫(Lyapunov)稳定性方法。先来回顾一下李雅普诺夫稳定性:
- 如果对于一个系统  
      
       
        
         
         
           x 
          
         
           ˙ 
          
         
        
          = 
         
        
          f 
         
        
          ( 
         
        
          x 
         
        
          ) 
         
        
       
         \dot{x} = f(x) 
        
       
     x˙=f(x), 
      
       
        
         
         
           x 
          
         
           ˙ 
          
         
        
          = 
         
        
          0 
         
        
       
         \dot{x} = 0 
        
       
     x˙=0时, 
      
       
        
        
          x 
         
        
          = 
         
        
          0 
         
        
       
         x = 0 
        
       
     x=0,即  
      
       
        
        
          x 
         
        
          = 
         
        
          0 
         
        
       
         x = 0 
        
       
     x=0 为该系统平衡点,如果我们能找到一个Lypunov函数  
      
       
        
        
          V 
         
        
       
         V 
        
       
     V, 使得
{ V ( 0 ) = 0 V ( x ) 正定 V ˙ ( x ) 负定 ⇒ 可推出 x = 0 是渐进稳定的平衡点 \begin{cases} \begin{aligned} V(0) = 0\\ V(x) 正定\\ \dot{V}(x) 负定 \end{aligned} \quad \begin{aligned} \Rightarrow \text{可推出 }x = 0\,\text{是渐进稳定的平衡点} \end{aligned} \end{cases} ⎩ ⎨ ⎧V(0)=0V(x)正定V˙(x)负定⇒可推出 x=0是渐进稳定的平衡点 
对于 x ˙ = x 2 − x 3 + u \dot{x} = x^2-x^3+u x˙=x2−x3+u,我们可以取 V = 1 2 x 2 V = \frac{1}{2}x^2 V=21x2, 显然 V V V 正定且 V ( 0 ) = 0 V(0) = 0 V(0)=0。求得
V ˙ = x x ˙ = x ( x 2 − x 3 + u ) = x 3 − x 4 + x u \dot{V} = x\dot{x} = x(x^2-x^3+u) = x^3-x^4+xu V˙=xx˙=x(x2−x3+u)=x3−x4+xu,若要使系统稳定,则需满足负定条件,
即要令 V ˙ < 0 \dot{V} < 0 V˙<0, 显然,第二项 − x 4 -x^4 −x4 本身是负定项,第一项 x 3 x^3 x3 不是负定项, 因此设计 u u u 时,
要考虑将第一项消除,固不难得出
- 设 u = − x 2 − x u = -x^2-x u=−x2−x。 此时 V ˙ = − x 4 − x 2 \dot{V} = -x^4-x^2 V˙=−x4−x2 负定。
 - 设 u = − x 2 u = -x^2 u=−x2。 此时, V ˙ = − x 4 \dot{V} = -x^4 V˙=−x4 同样满足负定条件。
 
所以,综合以上两种方法,针对系统  
     
      
       
        
        
          x 
         
        
          ˙ 
         
        
       
         = 
        
        
        
          x 
         
        
          2 
         
        
       
         − 
        
        
        
          x 
         
        
          3 
         
        
       
         + 
        
       
         u 
        
       
      
        \dot{x} = x^2-x^3+u 
       
      
    x˙=x2−x3+u, 要使系统稳定  
     
      
       
       
         u 
        
       
      
        u 
       
      
    u 可以被设计为
  
      
       
        
        
          { 
         
         
          
           
            
             
              
              
                u 
               
              
                1 
               
              
             
               = 
              
             
               − 
              
              
              
                x 
               
              
                2 
               
              
             
               + 
              
              
              
                x 
               
              
                3 
               
              
             
               − 
              
             
               x 
              
             
            
           
          
          
           
            
             
              
              
                u 
               
              
                2 
               
              
             
               = 
              
             
               − 
              
              
              
                x 
               
              
                2 
               
              
             
               − 
              
             
               x 
              
             
            
           
          
          
           
            
             
              
              
                u 
               
              
                3 
               
              
             
               = 
              
             
               − 
              
              
              
                x 
               
              
                2 
               
              
             
            
           
          
         
        
       
         \begin{cases} u_1 = -x^2+x^3-x \\ u_2 = -x^2-x \\ u_3 = -x^2 \end{cases} 
        
       
     ⎩ 
              ⎨ 
              ⎧u1=−x2+x3−xu2=−x2−xu3=−x2
均可使系统稳定。
接下来,针对例二,我们通过对该系统进行仿真,研究所设计的 u u u的三种形式 u 1 , u 2 , u 3 u_1, u_2, u_3 u1,u2,u3对系统稳定性的影响。
系统模型如下:
  
      
       
        
         
         
           x 
          
         
           ˙ 
          
         
        
          = 
         
         
         
           x 
          
         
           2 
          
         
        
          − 
         
         
         
           x 
          
         
           3 
          
         
        
          + 
         
        
          u 
         
        
          , 
         
         
         
         
           { 
          
          
           
            
             
              
               
               
                 u 
                
               
                 1 
                
               
              
                = 
               
              
                − 
               
               
               
                 x 
                
               
                 2 
                
               
              
                + 
               
               
               
                 x 
                
               
                 3 
                
               
              
                − 
               
              
                x 
               
              
             
            
           
           
            
             
              
               
               
                 u 
                
               
                 2 
                
               
              
                = 
               
              
                − 
               
               
               
                 x 
                
               
                 2 
                
               
              
                − 
               
              
                x 
               
              
             
            
           
           
            
             
              
               
               
                 u 
                
               
                 3 
                
               
              
                = 
               
              
                − 
               
               
               
                 x 
                
               
                 2 
                
               
              
             
            
           
          
         
        
       
         \dot{x} = x^2-x^3+u ,\qquad \begin{cases} u_1 = -x^2+x^3-x \\ u_2 = -x^2-x \\ u_3 = -x^2 \end{cases} 
        
       
     x˙=x2−x3+u,⎩ 
              ⎨ 
              ⎧u1=−x2+x3−xu2=−x2−xu3=−x2
3. 仿真(包含代码)
1. 仿真效果
如图所示, x u 1 , x u 2 , x u 3 x_{u1}, x_{u2}, x_{u3} xu1,xu2,xu3 分别独立对应系统选择不同的输入 u 1 , u 2 , u 3 u_1, u_2, u_3 u1,u2,u3所呈现的效果。

局部放大后 ⇒ \Rightarrow ⇒

2. 仿真结果
显然
- u 1 u_1 u1(黄色) 虽能在 t → 6 s t \rightarrow 6s t→6s 左右稳定到 0 0 0,但前期响应速度过慢,显然不如 u 2 u_2 u2。
 - u 2 u_2 u2(蓝色) 可以实现在最短的时间内(如图3s左右),使 x → 0 x \rightarrow 0 x→0,响应速度最快。
 - u 3 u_3 u3(红色) 响应速度略逊 u 2 u_2 u2,且使系统稳定所需时间最长,当 t → 10 s t \rightarrow 10s t→10s时,与 0 0 0 仍有一定误差。
 
综上,三种输入 u u u 中都可以使系统稳定,但选择 u 2 u_2 u2(蓝色) 作为输入最佳。
3. 仿真剖析
现在来分析一下,为什么会出现不同的效果。
将所设计的 u 1 , u 2 , u 3 u_1, u_2, u_3 u1,u2,u3分被代入原方程 x ˙ = x 2 − x 3 + u \dot{x} = x^2-x^3+u x˙=x2−x3+u,可得三个不同的方程
 
      
       
        
        
          { 
         
         
          
           
            
             
              
               
                
                
                 
                  
                   
                   
                     x 
                    
                   
                     ˙ 
                    
                   
                  
                    = 
                   
                  
                 
                
                
                 
                  
                   
                  
                    − 
                   
                  
                    x 
                   
                  
                    , 
                   
                   
                  
                 
                
                
                 
                  
                  
                    ⇒ 
                   
                   
                   
                     x 
                    
                    
                    
                      u 
                     
                    
                      1 
                     
                    
                   
                  
                    = 
                   
                  
                 
                
                
                 
                  
                   
                   
                   
                     c 
                    
                   
                     1 
                    
                   
                   
                   
                     e 
                    
                    
                    
                      − 
                     
                    
                      t 
                     
                    
                   
                  
                 
                
                
                
               
               
                
                
                 
                  
                   
                   
                     x 
                    
                   
                     ˙ 
                    
                   
                  
                    = 
                   
                  
                 
                
                
                 
                  
                   
                  
                    − 
                   
                   
                   
                     x 
                    
                   
                     3 
                    
                   
                  
                    − 
                   
                  
                    x 
                   
                  
                    , 
                   
                   
                  
                 
                
                
                 
                  
                  
                    ⇒ 
                   
                   
                   
                     x 
                    
                    
                    
                      u 
                     
                    
                      2 
                     
                    
                   
                  
                    = 
                   
                  
                 
                
                
                 
                  
                   
                   
                   
                     1 
                    
                    
                     
                      
                      
                        e 
                       
                       
                        
                        
                          c 
                         
                        
                          1 
                         
                        
                       
                         + 
                        
                       
                         2 
                        
                       
                         t 
                        
                       
                      
                     
                       − 
                      
                     
                       1 
                      
                     
                    
                   
                  
                 
                
                
                
               
               
                
                
                 
                  
                   
                   
                     x 
                    
                   
                     ˙ 
                    
                   
                  
                    = 
                   
                  
                 
                
                
                 
                  
                   
                  
                    − 
                   
                   
                   
                     x 
                    
                   
                     3 
                    
                   
                  
                    , 
                   
                   
                  
                 
                
                
                 
                  
                  
                    ⇒ 
                   
                   
                   
                     x 
                    
                    
                    
                      u 
                     
                    
                      3 
                     
                    
                   
                  
                    = 
                   
                  
                 
                
                
                 
                  
                   
                   
                   
                     1 
                    
                    
                     
                      
                      
                        c 
                       
                      
                        1 
                       
                      
                     
                       + 
                      
                     
                       2 
                      
                     
                       t 
                      
                     
                    
                   
                  
                 
                
                
                
               
              
              
             
            
           
          
         
        
       
         \begin{cases} \begin{align} \dot{x} =& -x, \qquad &\Rightarrow x_{u1} =& c_1e^{-t}\\ \dot{x} = &-x^3-x, \qquad &\Rightarrow x_{u2} =& \frac{1}{\sqrt{e^{c_1+2t}-1}} \\ \dot{x} =& -x^3, \qquad &\Rightarrow x_{u3} =& \frac{1}{\sqrt{c_1+2t}} \end{align} \quad \end{cases} 
        
       
     ⎩ 
              ⎨ 
              ⎧x˙=x˙=x˙=−x,−x3−x,−x3,⇒xu1=⇒xu2=⇒xu3=c1e−tec1+2t−11c1+2t1
 从收敛速度来看,由于存在指数项  
     
      
       
       
         ( 
        
       
         1 
        
       
         ) 
        
       
      
        (1) 
       
      
    (1) 式和  
     
      
       
       
         ( 
        
       
         2 
        
       
         ) 
        
       
      
        (2) 
       
      
    (2) 式要比  
     
      
       
       
         ( 
        
       
         3 
        
       
         ) 
        
       
      
        (3) 
       
      
    (3) 式快得多。这也验证了当我们在设计系统  
     
      
       
        
        
          u 
         
        
          2 
         
        
       
      
        u_2 
       
      
    u2 时,引入的" 
     
      
       
       
         − 
        
       
         x 
        
       
      
        -x 
       
      
    −x"项,可以对系统的收敛速度有一个很积极的作用。同时,使用反馈线性化这种简单粗暴的方法设计所设计的  
     
      
       
        
        
          u 
         
        
          1 
         
        
       
      
        u_1 
       
      
    u1(黄色),虽能使系统稳定,但其效果明显不如李雅普诺夫法设计的  
     
      
       
        
        
          u 
         
        
          2 
         
        
       
         ( 
        
       
         蓝色 
        
       
         ) 
        
       
         , 
        
        
        
          u 
         
        
          3 
         
        
       
         ( 
        
       
         红色 
        
       
         ) 
        
       
      
        u_2(蓝色), u_3(红色) 
       
      
    u2(蓝色),u3(红色)。
4. 仿真图与代码

 Mode_system.m
注释:其中 x 1 , x 2 , x 3 x_1,x_2,x_3 x1,x2,x3 为3个独立的状态变量,分被对应代入 u 1 , u 2 , u 3 u_1, u_2, u_3 u1,u2,u3所得的方程 ( 1 ) , ( 2 ) , ( 3 ) (1),(2),(3) (1),(2),(3)的 x x x 解,为避免与代码模板中的 u 冲突,代码中使用 "uc1、uc2、uc3"表示输入不同的输入 u u u。
function [sys,x0,str,ts,simStateCompliance]=mdlInitializeSizes
sizes = simsizes;
sizes.NumContStates  = 3;
sizes.NumDiscStates  = 0;
sizes.NumOutputs     = 6;   %x_u1,x_u2,x_u3,uc1,uc2,uc3
sizes.NumInputs      = 0;
sizes.DirFeedthrough = 1;
sizes.NumSampleTimes = 1;   % at least one sample time is needed
sys = simsizes(sizes);
x0  = [10;10;10];
str = [];
ts  = [0 0];
 
function sys=mdlDerivatives(t,x,u)
x1 = x(1);
x2 = x(2);
x3 = x(3);
uc1 = - x1^2 + x1^3 - x1;
uc2 = - x2^2 - x2;
uc3 = - x3^2;
dx1 = x1^2 - x1^3 + uc1;
dx2 = x2^2 - x2^3 + uc2;
dx3 = x3^2 - x3^3 + uc3;
sys = [dx1;dx2;dx3];
 
function sys=mdlOutputs(t,x,u)
x1 = x(1);
x2 = x(2);
x3 = x(3);
uc1 = - x1^2 + x1^3 - x1;
uc2 = - x2^2 - x2;
uc3 = - x3^2;
sys = [x1;x2;x3;uc1;uc2;uc3];
 
相信看完后,你会对非线性系统的基础反馈稳定控制器设计有一个更为清晰的了解,所谓实践出真知,建议初学者跟着这篇文章自己仿真跑一遍,我使用的是s-function函数,你也可以使用Matlab function模块代替。
总算写完了,今天周六,花了一下午的时间尽可能详细地捋清了这篇博客,照顾一下刚入门的初学者,也为记录自己的学历过程,以便日后重温复习,如果本文对你有帮助的话,点个赞再走呗 🫶~
水平有限,若有不足支持,还望广大网友们指正~
参考内容:B站 DR_CAN


















