matlab练习程序(解代数黎卡提方程)
代数黎卡提方程通常会在求解最优控制时有所应用,比如LQR控制。
标准形式有以下两种:
1.连续代数黎卡提方程:
2.离散代数黎卡提方程:
其中P是未知量,A、B、Q、R为已知量。
离散代数黎卡提方程可以迭代求解。
matlab代码如下:
clear all;close all;clc; 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