简单二阶系统
先研究最简单的二阶积分器串联型系统
  
      
       
        
         
          
           
            
           
          
          
           
            
             
             
              
              
                x 
               
              
                ˙ 
               
              
             
               1 
              
             
            
              = 
             
             
             
               x 
              
             
               2 
              
             
            
           
          
         
         
          
           
            
           
          
          
           
            
             
             
              
              
                x 
               
              
                ˙ 
               
              
             
               2 
              
             
            
              = 
             
            
              u 
             
            
           
          
         
        
       
         \begin{aligned} & \dot x_1 = x_2 \\ & \dot x_2 = u \\ \end{aligned} 
        
       
     x˙1=x2x˙2=u
 使用零阶保持法离散化(见附录),
  
      
       
        
        
          A 
         
        
          = 
         
         
         
           [ 
          
          
           
            
             
             
               0 
              
             
            
            
             
             
               1 
              
             
            
           
           
            
             
             
               0 
              
             
            
            
             
             
               0 
              
             
            
           
          
         
           ] 
          
         
        
          , 
         
         
        
          B 
         
        
          = 
         
         
         
           [ 
          
          
           
            
             
             
               0 
              
             
            
           
           
            
             
             
               1 
              
             
            
           
          
         
           ] 
          
         
        
       
         A=\begin{bmatrix} 0 & 1 \\ 0 & 0 \end{bmatrix},\quad B=\begin{bmatrix} 0 \\ 1 \end{bmatrix} 
        
       
     A=[0010],B=[01]
 设控制器周期(即离散化周期)为  
     
      
       
       
         T 
        
       
      
        T 
       
      
    T 已知,则矩阵指数
  
      
       
        
         
          
           
            
           
          
          
           
            
             
            
              ( 
             
            
              s 
             
            
              I 
             
            
              − 
             
            
              A 
             
             
             
               ) 
              
              
              
                − 
               
              
                1 
               
              
             
            
              = 
             
             
              
              
                [ 
               
               
                
                 
                  
                  
                    s 
                   
                  
                 
                 
                  
                   
                   
                     − 
                    
                   
                     1 
                    
                   
                  
                 
                
                
                 
                  
                  
                    0 
                   
                  
                 
                 
                  
                  
                    s 
                   
                  
                 
                
               
              
                ] 
               
              
              
              
                − 
               
              
                1 
               
              
             
            
              = 
             
             
             
               1 
              
              
              
                s 
               
              
                2 
               
              
             
             
             
               [ 
              
              
               
                
                 
                 
                   s 
                  
                 
                
                
                 
                 
                   1 
                  
                 
                
               
               
                
                 
                 
                   0 
                  
                 
                
                
                 
                 
                   s 
                  
                 
                
               
              
             
               ] 
              
             
            
           
          
         
         
          
           
            
           
          
          
           
            
             
             
             
               e 
              
              
              
                A 
               
              
                t 
               
              
             
            
              = 
             
             
             
               L 
              
              
              
                − 
               
              
                1 
               
              
             
            
              ( 
             
            
              s 
             
            
              I 
             
            
              − 
             
            
              A 
             
             
             
               ) 
              
              
              
                − 
               
              
                1 
               
              
             
            
              = 
             
             
             
               L 
              
              
              
                − 
               
              
                1 
               
              
             
             
             
               [ 
              
              
               
                
                 
                  
                  
                    1 
                   
                  
                    s 
                   
                  
                 
                
                
                 
                  
                  
                    1 
                   
                   
                   
                     s 
                    
                   
                     2 
                    
                   
                  
                 
                
               
               
                
                 
                 
                   0 
                  
                 
                
                
                 
                  
                  
                    1 
                   
                  
                    s 
                   
                  
                 
                
               
              
             
               ] 
              
             
            
              = 
             
             
             
               [ 
              
              
               
                
                 
                 
                   1 
                  
                 
                
                
                 
                 
                   t 
                  
                 
                
               
               
                
                 
                 
                   0 
                  
                 
                
                
                 
                 
                   1 
                  
                 
                
               
              
             
               ] 
              
             
            
           
          
         
         
          
           
            
           
          
          
           
            
             
            
              F 
             
            
              = 
             
             
             
               e 
              
              
              
                A 
               
              
                T 
               
              
             
            
              = 
             
             
             
               [ 
              
              
               
                
                 
                 
                   1 
                  
                 
                
                
                 
                 
                   T 
                  
                 
                
               
               
                
                 
                 
                   0 
                  
                 
                
                
                 
                 
                   1 
                  
                 
                
               
              
             
               ] 
              
             
            
           
          
         
         
          
           
            
           
          
          
           
            
             
            
              G 
             
            
              = 
             
             
             
               ∫ 
              
             
               0 
              
             
               T 
              
             
             
             
               e 
              
              
              
                A 
               
              
                t 
               
              
             
            
              d 
             
            
              t 
             
            
              B 
             
            
              = 
             
             
             
               [ 
              
              
               
                
                 
                 
                   T 
                  
                 
                
                
                 
                  
                   
                   
                     T 
                    
                   
                     2 
                    
                   
                  
                    2 
                   
                  
                 
                
               
               
                
                 
                 
                   0 
                  
                 
                
                
                 
                 
                   T 
                  
                 
                
               
              
             
               ] 
              
             
             
             
               [ 
              
              
               
                
                 
                 
                   0 
                  
                 
                
               
               
                
                 
                 
                   1 
                  
                 
                
               
              
             
               ] 
              
             
            
              = 
             
             
             
               [ 
              
              
               
                
                 
                  
                   
                   
                     T 
                    
                   
                     2 
                    
                   
                  
                    2 
                   
                  
                 
                
               
               
                
                 
                 
                   T 
                  
                 
                
               
              
             
               ] 
              
             
            
           
          
         
        
       
         \begin{aligned} & (sI-A)^{-1}=\begin{bmatrix} s & -1 \\ 0 & s \end{bmatrix}^{-1} =\frac 1{s^2}\begin{bmatrix} s & 1 \\ 0 & s \end{bmatrix} \\ & \text{e}^{At}=\mathcal L^{-1}(sI-A)^{-1}=\mathcal L^{-1} \begin{bmatrix} \frac 1s & \frac 1{s^2} \\ 0 & \frac 1s \end{bmatrix} =\begin{bmatrix} 1 & t \\ 0 & 1 \end{bmatrix} \\ & F=\text{e}^{AT}=\begin{bmatrix} 1 & T \\ 0 & 1 \end{bmatrix} \\ & G=\int_0^T\text{e}^{At}\text{d}tB =\begin{bmatrix} T & \frac{T^2}2 \\ 0 & T \end{bmatrix} \begin{bmatrix} 0 \\ 1 \end{bmatrix} =\begin{bmatrix} \frac{T^2}2 \\ T \end{bmatrix} \end{aligned} 
        
       
     (sI−A)−1=[s0−1s]−1=s21[s01s]eAt=L−1(sI−A)−1=L−1[s10s21s1]=[10t1]F=eAT=[10T1]G=∫0TeAtdtB=[T02T2T][01]=[2T2T]
 于是
  
      
       
        
         
          
           
            
             
             
               x 
              
             
               ⃗ 
              
             
            
              ( 
             
            
              n 
             
            
              + 
             
            
              1 
             
            
              ) 
             
            
              = 
             
            
           
          
          
           
            
             
            
              F 
             
             
             
               x 
              
             
               ⃗ 
              
             
            
              ( 
             
            
              n 
             
            
              ) 
             
            
              + 
             
            
              G 
             
            
              u 
             
            
              ( 
             
            
              n 
             
            
              ) 
             
            
           
          
         
         
          
           
           
             = 
            
           
          
          
           
            
             
             
             
               [ 
              
              
               
                
                 
                 
                   1 
                  
                 
                
                
                 
                 
                   T 
                  
                 
                
               
               
                
                 
                 
                   0 
                  
                 
                
                
                 
                 
                   1 
                  
                 
                
               
              
             
               ] 
              
             
             
             
               x 
              
             
               ⃗ 
              
             
            
              ( 
             
            
              n 
             
            
              ) 
             
            
              + 
             
             
             
               [ 
              
              
               
                
                 
                  
                   
                   
                     T 
                    
                   
                     2 
                    
                   
                  
                    2 
                   
                  
                 
                
               
               
                
                 
                 
                   T 
                  
                 
                
               
              
             
               ] 
              
             
            
              u 
             
            
              ( 
             
            
              n 
             
            
              ) 
             
            
           
          
         
        
       
         \begin{aligned} \vec x(n+1) =& F\vec x(n) + Gu(n) \\ =& \begin{bmatrix} 1 & T \\ 0 & 1 \end{bmatrix}\vec x(n) +\begin{bmatrix} \frac{T^2}2 \\ T \end{bmatrix}u(n) \\ \end{aligned} 
        
       
     x(n+1)==Fx(n)+Gu(n)[10T1]x(n)+[2T2T]u(n)
 将
  
      
       
        
        
          u 
         
        
          ( 
         
        
          n 
         
        
          ) 
         
        
          = 
         
        
          − 
         
        
          K 
         
         
         
           x 
          
         
           ⃗ 
          
         
        
          ( 
         
        
          n 
         
        
          ) 
         
        
          = 
         
        
          − 
         
         
         
           [ 
          
          
           
            
             
              
              
                k 
               
              
                1 
               
              
             
            
            
             
              
              
                k 
               
              
                2 
               
              
             
            
           
          
         
           ] 
          
         
         
         
           [ 
          
          
           
            
             
              
              
                x 
               
              
                1 
               
              
             
            
           
           
            
             
              
              
                x 
               
              
                2 
               
              
             
            
           
          
         
           ] 
          
         
        
       
         u(n) = -K\vec x(n) = -\begin{bmatrix} k_1 & k_2 \end{bmatrix} \begin{bmatrix} x_1 \\ x_2 \end{bmatrix} 
        
       
     u(n)=−Kx(n)=−[k1k2][x1x2]
 代入得
  
      
       
        
         
          
           
            
             
             
               x 
              
             
               ⃗ 
              
             
            
              ( 
             
            
              n 
             
            
              + 
             
            
              1 
             
            
              ) 
             
            
              = 
             
            
           
          
          
           
            
             
            
              ( 
             
            
              F 
             
            
              − 
             
            
              G 
             
            
              K 
             
            
              ) 
             
             
             
               x 
              
             
               ⃗ 
              
             
            
              ( 
             
            
              n 
             
            
              ) 
             
            
           
          
         
         
          
           
           
             = 
            
           
          
          
           
            
             
             
             
               ( 
              
              
              
                [ 
               
               
                
                 
                  
                  
                    1 
                   
                  
                 
                 
                  
                  
                    T 
                   
                  
                 
                
                
                 
                  
                  
                    0 
                   
                  
                 
                 
                  
                  
                    1 
                   
                  
                 
                
               
              
                ] 
               
              
             
               + 
              
              
              
                [ 
               
               
                
                 
                  
                   
                    
                     
                     
                       T 
                      
                     
                       2 
                      
                     
                    
                      2 
                     
                    
                    
                    
                      k 
                     
                    
                      1 
                     
                    
                   
                  
                 
                 
                  
                   
                    
                     
                     
                       T 
                      
                     
                       2 
                      
                     
                    
                      2 
                     
                    
                    
                    
                      k 
                     
                    
                      2 
                     
                    
                   
                  
                 
                
                
                 
                  
                   
                   
                     T 
                    
                    
                    
                      k 
                     
                    
                      1 
                     
                    
                   
                  
                 
                 
                  
                   
                   
                     T 
                    
                    
                    
                      k 
                     
                    
                      2 
                     
                    
                   
                  
                 
                
               
              
                ] 
               
              
             
               ) 
              
             
             
             
               x 
              
             
               ⃗ 
              
             
            
              ( 
             
            
              n 
             
            
              ) 
             
            
           
          
         
        
       
         \begin{aligned} \vec x(n+1) =& (F-GK)\vec x(n) \\ =& \left(\begin{bmatrix} 1 & T \\ 0 & 1 \end{bmatrix} +\begin{bmatrix} \frac{T^2}2k_1 & \frac{T^2}2k_2 \\ Tk_1 & Tk_2 \end{bmatrix} \right)\vec x(n) \\ \end{aligned} 
        
       
     x(n+1)==(F−GK)x(n)([10T1]+[2T2k1Tk12T2k2Tk2])x(n)
 给定两个极点就可以使用比较系数法计算出  
     
      
       
        
        
          k 
         
        
          1 
         
        
       
         , 
        
        
        
          k 
         
        
          2 
         
        
       
      
        k_1,k_2 
       
      
    k1,k2。除此以外还有一种便于使用计算机求解的方法
  
      
       
        
        
          K 
         
        
          = 
         
         
         
           [ 
          
          
           
            
             
             
               0 
              
             
            
            
             
             
               ⋯ 
              
             
            
            
             
             
               0 
              
             
            
            
             
             
               1 
              
             
            
           
          
         
           ] 
          
         
         
         
           [ 
          
          
           
            
             
             
               G 
              
             
            
            
             
              
              
                F 
               
              
                G 
               
              
             
            
            
             
              
               
               
                 F 
                
                
                
                  n 
                 
                
                  − 
                 
                
                  1 
                 
                
               
              
                G 
               
              
             
            
           
          
         
           ] 
          
         
        
          α 
         
        
          ( 
         
        
          F 
         
        
          ) 
         
        
       
         K= \begin{bmatrix} 0 & \cdots & 0 & 1 \end{bmatrix} \begin{bmatrix} G & FG & F^{n-1}G \end{bmatrix}\alpha(F) 
        
       
     K=[0⋯01][GFGFn−1G]α(F)
 其中  
     
      
       
       
         α 
        
       
         ( 
        
       
         x 
        
       
         ) 
        
       
      
        \alpha(x) 
       
      
    α(x) 为给定极点的特征多项式,例如给定两个极点为  
     
      
       
        
        
          λ 
         
        
          1 
         
        
       
         , 
        
        
        
          λ 
         
        
          2 
         
        
       
      
        \lambda_1,\lambda_2 
       
      
    λ1,λ2,则  
     
      
       
       
         α 
        
       
         ( 
        
       
         x 
        
       
         ) 
        
       
         = 
        
       
         ( 
        
       
         x 
        
       
         − 
        
        
        
          λ 
         
        
          1 
         
        
       
         ) 
        
       
         ( 
        
       
         x 
        
       
         − 
        
        
        
          λ 
         
        
          2 
         
        
       
         ) 
        
       
      
        \alpha(x)=(x-\lambda_1)(x-\lambda_2) 
       
      
    α(x)=(x−λ1)(x−λ2)。设给定重极点  
     
      
       
        
        
          λ 
         
        
          1 
         
        
       
         = 
        
        
        
          λ 
         
        
          2 
         
        
       
         = 
        
       
         − 
        
       
         5 
        
       
      
        \lambda_1=\lambda_2=-5 
       
      
    λ1=λ2=−5,变换到离散域  
     
      
       
       
         z 
        
       
         = 
        
        
        
          e 
         
         
         
           s 
          
         
           T 
          
         
        
       
         = 
        
        
        
          e 
         
         
         
           − 
          
         
           0.5 
          
         
        
       
      
        z=\text e^{sT}=\text e^{-0.5} 
       
      
    z=esT=e−0.5。仿真结果如图所示,图中  
     
      
       
       
         u 
        
       
      
        u 
       
      
    u 为控制量, 
     
      
       
       
         y 
        
       
         = 
        
        
        
          x 
         
        
          1 
         
        
       
      
        y=x_1 
       
      
    y=x1 为状态量。
 
参考
教材[1]里有更完整的推导过程,链接[2]里有另一个混合系统控制的例子。
- 孙增圻. 计算机控制理论与应用. 清华大学出版社.
- simucpp系列教程(3)例程解析(第二部分)
附录:零阶保持器离散化
对使用状态空间描述的线性系统
  
      
       
        
         
          
           
            
             
              
              
                x 
               
              
                ⃗ 
               
              
             
               ′ 
              
             
            
              = 
             
            
              A 
             
             
             
               x 
              
             
               ⃗ 
              
             
            
              + 
             
            
              B 
             
            
              u 
             
            
           
          
         
         
          
           
            
            
              y 
             
            
              = 
             
            
              C 
             
             
             
               x 
              
             
               ⃗ 
              
             
            
              + 
             
            
              D 
             
            
              u 
             
            
           
          
         
        
       
         \begin{array}{l} \vec x'=A\vec x+Bu \\ y=C\vec x+Du \end{array} 
        
       
     x′=Ax+Buy=Cx+Du
 使用零阶保持法可以离散化成
  
      
       
        
         
          
           
            
             
             
               x 
              
             
               ⃗ 
              
             
            
              ( 
             
            
              k 
             
            
              + 
             
            
              1 
             
            
              ) 
             
            
              = 
             
            
              F 
             
             
             
               x 
              
             
               ⃗ 
              
             
            
              ( 
             
            
              k 
             
            
              ) 
             
            
              + 
             
            
              G 
             
            
              u 
             
            
              ( 
             
            
              k 
             
            
              ) 
             
            
           
          
         
         
          
           
            
            
              y 
             
            
              ( 
             
            
              k 
             
            
              ) 
             
            
              = 
             
            
              C 
             
             
             
               x 
              
             
               ⃗ 
              
             
            
              ( 
             
            
              k 
             
            
              ) 
             
            
              + 
             
            
              D 
             
            
              u 
             
            
              ( 
             
            
              k 
             
            
              ) 
             
            
           
          
         
        
       
         \begin{array}{l} \vec x(k+1)=F\vec x(k)+Gu(k) \\ y(k)=C\vec x(k)+Du(k) \end{array} 
        
       
     x(k+1)=Fx(k)+Gu(k)y(k)=Cx(k)+Du(k)
 其中
  
      
       
        
        
          F 
         
        
          = 
         
         
         
           e 
          
          
          
            A 
           
          
            T 
           
          
         
        
          , 
         
        
          G 
         
        
          = 
         
         
         
           ∫ 
          
         
           0 
          
         
           T 
          
         
         
         
           e 
          
          
          
            A 
           
          
            t 
           
          
         
        
          d 
         
        
          t 
         
        
          B 
         
        
       
         F=\text{e}^{AT},G=\int_0^T\text{e}^{At}\text{d}tB 
        
       
     F=eAT,G=∫0TeAtdtB
  
     
      
       
        
        
          e 
         
         
         
           A 
          
         
           T 
          
         
        
       
      
        \text{e}^{AT} 
       
      
    eAT 是矩阵指数。
 推导
  
      
       
        
         
          
           
            
           
          
          
           
            
             
             
             
               x 
              
             
               ′ 
              
             
            
              ( 
             
            
              t 
             
            
              ) 
             
            
              = 
             
            
              A 
             
            
              x 
             
            
              ( 
             
            
              t 
             
            
              ) 
             
            
              + 
             
            
              B 
             
            
              u 
             
            
              ( 
             
            
              t 
             
            
              ) 
             
            
           
          
         
         
          
           
            
           
          
          
           
            
             
            
              x 
             
            
              ( 
             
            
              t 
             
            
              ) 
             
            
              = 
             
             
             
               e 
              
              
              
                A 
               
              
                ( 
               
              
                t 
               
              
                − 
               
               
               
                 t 
                
               
                 0 
                
               
              
                ) 
               
              
             
            
              x 
             
            
              ( 
             
             
             
               t 
              
             
               0 
              
             
            
              ) 
             
            
              + 
             
             
             
               ∫ 
              
              
              
                t 
               
              
                0 
               
              
             
               t 
              
             
             
             
               e 
              
              
              
                A 
               
              
                ( 
               
              
                t 
               
              
                − 
               
              
                τ 
               
              
                ) 
               
              
             
            
              B 
             
            
              u 
             
            
              ( 
             
            
              τ 
             
            
              ) 
             
            
              d 
             
            
              τ 
             
            
           
          
         
        
       
         \begin{aligned} & x'(t)=Ax(t)+Bu(t) \\ & x(t)=\text{e}^{A(t-t_0)}x(t_0)+\int_{t_0}^t\text{e}^{A(t-\tau)}Bu(\tau)\text{d}\tau \\ \end{aligned} 
        
       
     x′(t)=Ax(t)+Bu(t)x(t)=eA(t−t0)x(t0)+∫t0teA(t−τ)Bu(τ)dτ
 令 
     
      
       
        
        
          t 
         
        
          0 
         
        
       
         = 
        
       
         k 
        
       
         T 
        
       
      
        t_0=kT 
       
      
    t0=kT, 
     
      
       
       
         t 
        
       
         = 
        
       
         ( 
        
       
         k 
        
       
         + 
        
       
         1 
        
       
         ) 
        
       
         T 
        
       
      
        t=(k+1)T 
       
      
    t=(k+1)T,则
  
      
       
        
         
          
           
            
           
          
          
           
            
             
            
              x 
             
            
              ( 
             
            
              ( 
             
            
              k 
             
            
              + 
             
            
              1 
             
            
              ) 
             
            
              T 
             
            
              ) 
             
            
              = 
             
             
             
               e 
              
              
              
                A 
               
              
                T 
               
              
             
            
              x 
             
            
              ( 
             
            
              k 
             
            
              T 
             
            
              ) 
             
            
              + 
             
             
             
               ∫ 
              
              
              
                k 
               
              
                T 
               
              
              
              
                ( 
               
              
                k 
               
              
                + 
               
              
                1 
               
              
                ) 
               
              
                T 
               
              
             
             
             
               e 
              
              
              
                A 
               
              
                ( 
               
              
                k 
               
              
                T 
               
              
                + 
               
              
                T 
               
              
                − 
               
              
                τ 
               
              
                ) 
               
              
             
            
              B 
             
            
              u 
             
            
              ( 
             
            
              τ 
             
            
              ) 
             
            
              d 
             
            
              τ 
             
            
           
          
         
         
          
           
            
           
          
          
           
            
             
             
             
               ∫ 
              
              
              
                k 
               
              
                T 
               
              
              
              
                ( 
               
              
                k 
               
              
                + 
               
              
                1 
               
              
                ) 
               
              
                T 
               
              
             
             
             
               e 
              
              
              
                A 
               
              
                ( 
               
              
                k 
               
              
                T 
               
              
                + 
               
              
                T 
               
              
                − 
               
              
                τ 
               
              
                ) 
               
              
             
            
              B 
             
            
              u 
             
            
              ( 
             
            
              τ 
             
            
              ) 
             
            
              d 
             
            
              τ 
             
             
             
               = 
              
              
               
               
                 t 
                
               
                 = 
                
               
                 k 
                
               
                 T 
                
               
                 + 
                
               
                 T 
                
               
                 − 
                
               
                 τ 
                
               
              
             
             
             
               ∫ 
              
             
               0 
              
             
               T 
              
             
             
             
               e 
              
              
              
                A 
               
              
                t 
               
              
             
            
              B 
             
            
              u 
             
            
              ( 
             
            
              k 
             
            
              T 
             
            
              + 
             
            
              T 
             
            
              − 
             
            
              t 
             
            
              ) 
             
            
              d 
             
            
              t 
             
            
           
          
         
         
          
           
            
           
          
          
           
            
             
            
              x 
             
            
              ( 
             
            
              k 
             
            
              + 
             
            
              1 
             
            
              ) 
             
            
              = 
             
             
             
               e 
              
              
              
                A 
               
              
                T 
               
              
             
            
              x 
             
            
              ( 
             
            
              k 
             
            
              ) 
             
            
              + 
             
             
             
               ∫ 
              
             
               0 
              
             
               T 
              
             
             
             
               e 
              
              
              
                A 
               
              
                t 
               
              
             
            
              B 
             
            
              d 
             
            
              t 
             
            
              u 
             
            
              ( 
             
            
              k 
             
            
              ) 
             
            
           
          
         
        
       
         \begin{aligned} & x((k+1)T)=\text{e}^{AT}x(kT)+\int_{kT}^{(k+1)T}\text{e}^{A(kT+T-\tau)}Bu(\tau)\text{d}\tau \\ & \int_{kT}^{(k+1)T}\text{e}^{A(kT+T-\tau)}Bu(\tau)\text{d}\tau \xlongequal{t=kT+T-\tau}\int_0^T\text{e}^{At}Bu(kT+T-t)\text{d}t \\ & x(k+1)=\text{e}^{AT}x(k)+\int_0^T\text{e}^{At}B\text{d}tu(k) \\ \end{aligned} 
        
       
     x((k+1)T)=eATx(kT)+∫kT(k+1)TeA(kT+T−τ)Bu(τ)dτ∫kT(k+1)TeA(kT+T−τ)Bu(τ)dτt=kT+T−τ∫0TeAtBu(kT+T−t)dtx(k+1)=eATx(k)+∫0TeAtBdtu(k)
附录:代码
计算反馈控制系数 K K K 的代码
#include <iostream>
#include "zhnmat.hpp"
using namespace zhnmat;
using namespace std;
typedef std::vector<double>  vecdble;
Mat polynomial(Mat x, vecdble lambda) {
    double order = x.row();
    if (order != x.col()) return Mat();
    Mat ans = eye(order);
    for (uint32_t i = 0; i < order; i++)
        ans *= x - lambda[i]*eye(order);
    return x;
}
int main(void) {
    double T = 0.1;
    Mat F(2, 2, vecdble{1, T, 0, 1});
    Mat G(2, 1, vecdble{T*T*0.5, T});
    Mat K(1, 2);
    K.set(0, 0, G.at(1,0));
    K.set(0, 1, (F*G).at(1,0));
    K *= polynomial(F, vecdble{-3, -3});
    cout << K << endl;
}
二阶积分器串联型系统仿真代码
#include "simucpp.hpp"
using namespace simucpp;
int main() {
    Simulator sim1;
    FUIntegrator(uint1, &sim1);
    FUIntegrator(uint2, &sim1);
    FUConstant(cnst1, &sim1);
    FUOutput(uout1, &sim1);
    sim1.connectU(cnst1, uint1);
    sim1.connectU(uint1, uint2);
    sim1.connectU(uint2, uout1);
    sim1.Initialize();
    double ctrl;
    for (uint32_t n1 = 0; n1 < 20; n1++) {
        ctrl = (3-uint2->Get_OutValue()) * 15.24;
        ctrl -= uint1->Get_OutValue() * 7.04;
        for (uint32_t i = 0; i < 100; i++) {
            cnst1->Set_OutValue(ctrl);
            sim1.Simulate_OneStep();
        }
    }
    sim1.Plot();
    return 0;
}


















