matlab练习程序(解代数黎卡提方程)

2022/2/2 17:43:03

本文主要是介绍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


这篇关于matlab练习程序(解代数黎卡提方程)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程