【问题标题】:Solving matrix Riccati differential equation in Matlab with terminal boundary condition用终端边界条件在Matlab中求解矩阵Riccati微分方程
【发布时间】:2013-10-05 12:44:51
【问题描述】:

在最优控制跟踪问题中,增益矩阵K(t)有一个Riccati方程为:

\dot{K}(t) = -K(t) A - A^{ T} K(t) - Q + K(t) B R ^{-1} B^{T} K(t)

在Tf的最后时刻,给定终端边界条件K(Tf)。

编辑:经过考虑,我认为问题是如何将增益矩阵与给定的终端边界条件进行数值反向积分并将结果保存在查找表中以获得区间 [t0,Tf] 上的解以供进一步计算在 Simulink 中?

【问题讨论】:

    标签: matlab matrix simulink differential-equations


    【解决方案1】:

    这个方程的数值解可以在Optimal Control Systems一书中找到

    例如,以下是该技术的摘录:

    E=B*inv(R)*B';  % the  matrix  E  =  BR^{-1}B' 
    % 
    % solve  matrix  difference  Riccati  equation  backwards 
    % starting from  kf  to  kO 
    % use  the  form  P(k)  =  A'P(k+1)[I  +  EP(k+1)]^{-1}A  +  Q 
    % first  fix  the  final  condition  P(k_f)  =  F 
    
    Pkplus1=F; 
    p11(N)=F(1); 
    p12(N)=F(2); 
    p21(N)=F(3); 
    p22(N)=F(4); 
    
    for  k=N-1:-1:1, 
        Pk  =  A' *Pkplus1*inv(I+E*Pkplus1)*A+Q; 
        p11 (k)  =  Pk(1); 
        p12(k)  =  Pk(2); 
        p21(k)  =  Pk(3); 
        p22(k)  =  Pk(4); 
        Pkplus1  =  Pk; 
    end 
    

    如需更多信息,您可以查看这本书。它很棒而且内容丰富。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-06-14
      • 2022-10-25
      • 2018-02-08
      • 1970-01-01
      • 1970-01-01
      • 2018-10-28
      • 2021-04-22
      相关资源
      最近更新 更多