黎卡提(Riccati)方程一般没有初等解法,但是很多实际问题与理论问题又迫切需要求得这个方程的解,这也使得这一方程成为世界著名难题。
黎卡提方程自从十七世纪黎卡提提出以来,历经三百多年一直未有一般解法,虽然有众多特例解法,但是都未能从根本上解决这个方程。
Riccati方程是形式如:
求解离散黎卡提矩阵代数方程 - 百度文库https://wenku.baidu.com/view/d2ae9c195427a5e9856a561252d380eb63942358.html求解离散黎卡提矩阵代数方程_Micozzc_lyy的博客-CSDN博客_代数黎卡提方程离散代数黎卡提方程求解1. 黎卡提方程在LQR最优控制中,有连续时间最优控制,即LQR,也有离散时间最优控制DLQR,则在求解中一定会遇到解连续时间黎卡提方程和离散时间黎卡提方程的问题,本文主要针对离散时间黎卡提方程进行求解。给定一个系统,如下所示:x(k+1)=Ax(k)+Bu(k)x(k+1) = Ax(k)+Bu(k)x(k+1)=Ax(k)+Bu(k)性能指标:J(u)=∑n=...https://blog.csdn.net/weixin_43822768/article/details/90718745
在LQR最优控制中,有连续时间最优控制,即LQR,也有离散时间最优控制DLQR,则在求解中一定会遇到解连续时间黎卡提方程和离散时间黎卡提方程的问题,本文主要针对离散时间黎卡提方程进行求解。
给定一个系统,如下所示:
求解上述黎卡提方程有两种方法,一种是不变子空间法,另外一种是迭代法求解。
- %======求解黎卡提方程==========%
- 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;
- [X,L,G] = care(A,B,Q)
- [X,L,G] = care(A,B,Q,R,S,E)
- [X,L,G,report] = care(A,B,Q,...)
- [X1,X2,D,L] = care(A,B,Q,...,'factor')
- a = [-3 2;1 1]
- b = [0 ; 1]
- c = [1 -1]
- r = 3
- [x,l,g] = care(a,b,c'*c,r)
P = lyap(A', Q)
[P,l,g] = care(A, B, Q, R)
————————————————————————————
代数黎卡提方程通常会在求解最优控制时有所应用,比如LQR控制。
标准形式有以下两种:
1.连续代数黎卡提方程:
2.离散代数黎卡提方程:
其中P是未知量,A、B、Q、R为已知量。
离散代数黎卡提方程可以迭代求解。
matlab代码如下:
- A = [0.8 0.3;-0.6 0];
- B = [1 0.3;0 1.4];
- Q = [7 1;1 3];
- R = [3 1;1 2];
-
- %连续黎卡提方程
- P=care(A,B,Q,R)
- Re = A'*P + P*A - P*B*inv(R)*B'*P + Q
-
- %离散黎卡提方程
- P=dare(A,B,Q,R)
- Re = A'*P*A - (A'*P*B)*inv(R+B'*P*B)*(B'*P*A) + Q - P
-
- %迭代解离散黎卡提方程
- P = Q;
- e=1;
- while (e >= 1e-10)
- Pe = Q + A'*P*A - A'*P*B*inv(R+B'*P*B)*(B'*P*A);
- e = norm(Pe-P);
- P = Pe;
- end
- P
- Re = A'*P*A - (A'*P*B)*inv(R+B'*P*B)*(B'*P*A) + Q - P
- 离散时间最优控制问题:
- [X,L,G]=dare(A,B,Q,R), 其中A,B为系统的状态方程,Q,R为性能指标函数对应的非负定对称矩阵。
- X:Riccati方程的解,即J = x’Px
- L: 特征值
- G:状态反馈矩阵
-
- 连续时间最优控制问题:
- [X,L,G]=care(A,B,Q,R),同上;
-
- 二次型最优控制问题(取状态变量和控制变量的二次型函数的积分作为性能指标函数):
- [K,P,r] = lqr(A,B,Q,R),其中K为状态反馈矩阵;P为Riccati方程的解;r为特征值
-
- 在某种Q,R的条件下lqr与care等价。
<