离散代数黎卡提方程求解
1. 黎卡提方程
在LQR最优控制中,有连续时间最优控制,即LQR,也有离散时间最优控制DLQR,则在求解中一定会遇到解连续时间黎卡提方程和离散时间黎卡提方程的问题,本文主要针对离散时间黎卡提方程进行求解。
给定一个系统,如下所示:
x
(
k
+
1
)
=
A
x
(
k
)
+
B
u
(
k
)
x(k+1) = Ax(k)+Bu(k)
x(k+1)=Ax(k)+Bu(k)
性能指标:
J
(
u
)
=
∑
n
=
1
∞
(
x
T
(
n
)
Q
x
(
n
)
+
u
T
(
n
)
R
u
(
n
)
+
2
x
T
(
n
)
L
u
(
n
)
)
.
J(u) = \sum_{n=1}^ \infty(x^{T}(n)Qx(n)+u^{T}(n)Ru(n)+2x^{T}(n)Lu(n)).
J(u)=n=1∑∞(xT(n)Qx(n)+uT(n)Ru(n)+2xT(n)Lu(n)).
离散时间黎卡提方程:
P
=
A
T
P
A
−
A
T
P
B
(
R
+
B
T
P
B
)
−
1
B
T
P
A
+
Q
P = A^{T}PA-A^{T}PB(R+B^{T}PB)^{-1}B^{T}PA+Q
P=ATPA−ATPB(R+BTPB)−1BTPA+Q
K = ( R + B T P B ) − 1 B T P A K = (R+B^{T}PB)^{-1}B^{T}PA K=(R+BTPB)−1BTPA
u ( n ) = − K x ( n ) u(n) = -Kx(n) u(n)=−Kx(n)
即求解上述黎卡提方程有两种方法,一种是不变子空间法,另外一种是迭代法求解。
2. 迭代法求解
-
步骤一:选取P的初始值,令 P ( 1 ) = Q − L R − 1 L T P(1)=Q -LR^{-1}L^{T} P(1)=Q−LR−1LT
-
步骤二:迭代计算P,如下所示:
P ( k ) = ( A − B R − 1 L T ) T ( P − 1 ( k − 1 ) + B R − 1 B T ) − 1 ( A − B R − 1 L T ) + Q − L R − 1 L T P(k)=(A-BR^{-1}L^{T})^{T}(P^{-1}(k-1)+BR^{-1}B^{T})^{-1}(A-BR^{-1}L^{T})+Q-LR^{-1}L^{T} P(k)=(A−BR−1LT)T(P−1(k−1)+BR−1BT)−1(A−BR−1LT)+Q−LR−1LT -
步骤三:计算矩阵 ∥ P ( k ) − P ( k − 1 ) ∥ m ∞ ≤ e \left\|P(k)-P(k-1)\right\|_{m\infty}\leq e ∥P(k)−P(k−1)∥m∞≤e,其中 e = 1 0 − 10 e=10^{-10} e=10−10,如果条件满足,结束
循环,否则继续步骤二。
3. matlab仿真代码
%======求解黎卡提方程==========%
clear all;clc;close all;
A = [0.8 0.3;-0.6 0];
B = [1 0.3;0 1.4];
L = [2 0.5;1 0.3];
Q = [7 1;1 3];
R = [3 1;1 2];
[Kr,Pr]=dlqr(A,B,Q,R,L); % 标准库求解
err = 10^(-15);
error = 10;
Pe = Q - L*inv(R)*L';
X = Q - L*inv(R)*L';
% X = (A - B*inv(R)*L')'*inv(B*inv(R)*B')*(A-B*inv(R)*L') +Q - L*inv(R)*L';
Last_Pe = Pe;
i = 1;
while (error>=err)
Pe = (A-B*inv(R)*L')'*inv(Last_Pe + B*inv(R)*B')*(A-B*inv(R)*L') +Q - L*inv(R)*L';
error = norm((Pe-Last_Pe),'Inf');
Last_Pe = Pe;
i = i +1;
end
Ke = inv(R+B'*Pe*B)*B'*Pe*A;
参考文献:https://www.docin.com/p-809609626.html
http://www.doc88.com/p-4042295878668.html