用终端边界条件求解Matlab矩阵Riccati微分方程

时间:2013-10-05 12:44:52

标签: matlab matrix simulink differential-equations

在最优控制跟踪问题中,存在增益矩阵 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?

1 个答案:

答案 0 :(得分: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 

有关详细信息,请查阅本书。它很棒,内容丰富。