【问题标题】: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
如需更多信息,您可以查看这本书。它很棒而且内容丰富。