三种方法求解:

方法一:迭代求解代码——保存文件名“mylqr”。

%% 利用MATLAB求解黎卡提代数方程
% 方法一:简单代数迭代法
% 令fai_0=0,则可以写出如下的迭代公式。
% fai_(i+1)=E'*fai_i*E-(E'*fai_i*G+W)*(G'*fai_i*G+H)^(-1)*(E'*fai_i*G+W+Q);
% E=(I-A)^(-1)*(I+A);
% G=2*(I-A)^(-1)*B;
% H=R+B'*(I-A')^(-1)*Q*(I-A)^(-1)*B;
% W=Q*(I-A)^(-1)*B;
% 如果fai_(i+1)收敛于一个常数矩阵,即||fai_(i+1)-fai_i||<kesai,则可得黎卡提代数方程解为:
% P=2*(I-A')^(-1)*fai_(i+1)*(I-A)^(-1);
%% MATLAB代码实现
%%%%%%%%%%%%%matlab程序%%%%%%%%%%%%%%
I=eye(size(A));
iA=inv(I-A);%iA=(I-A)^(-1);
E=iA*(I+A);
G=2*iA^2*B;
H=R+B'*iA'*Q*iA*B;
W=Q*iA*B;
P0=zeros(size(A));
i=0;
while(1)i=i+1;P=E'*P0*E-(E'*P0*G+W)*inv(G'*P0*G+H)*(E'*P0*G+W)'+Q;if (norm(P-P0)<eps)break;elseP0=P;end
end
P=2*iA'*P*iA;
%%%%%%*************************

方法二:matlab工具箱

[K,P,E]=lqr(A,B,Q,R)

方法三:

[P,E,K,RR]=care(A,B,Q,R,zeros(size(B)),eye(size(A)))
% % 如果设置了P的终值条件,则只能使用方法三care(),
% % 假设终值【0.2;0.2】,则:
% [P,E,K,RR]=care(A,B,Q,R,[0.2;0.2],eye(size(A)))

测试验证:——新建.m文件。

clear,clc;
A=[0 1;-5 -3];
B=[0;1];
Q=[500 200;200 100];
R=1.6667;
% %% 方法一:
mylqr
K=inv(R)*B'*P
P
E
% %% 方法二
% [K,P,E]=lqr(A,B,Q,R)
% %% 方法三
% [P,E,K,RR]=care(A,B,Q,R,zeros(size(B)),eye(size(A)))
% % 如果设置了P的终值条件,则只能使用方法三care(),
% % 假设终值【0.2;0.2】,则:
% [P,E,K,RR]=care(A,B,Q,R,[0.2;0.2],eye(size(A)))

改进后(XXXX):

clear;clc;
A=[0 1;-5 -3];
B=[0;1];
Q=[500 200;200 100];
R=1.6667;
% %% 方法一:
% mylqr
P = diedai(A,B,Q,R);
K=R^(-1)*B'*P
P
% %% 方法二
% [K,P,E]=lqr(A,B,Q,R)
% %% 方法三
% [P,E,K,RR]=care(A,B,Q,R,zeros(size(B)),eye(size(A)))
% % 如果设置了P的终值条件,则只能使用方法三care(),
% % 假设终值【0.2;0.2】,则:
% [P,E,K,RR]=care(A,B,Q,R,[0.2;0.2],eye(size(A)))%% 方法一,迭代求解
function P = diedai(A,B,Q,R)
%% MATLAB代码实现
%%%%%%%%%%%%%matlab程序%%%%%%%%%%%%%%
epslion = 1e-10;%或者epslion = eps;
I=eye(size(A));
%iA=inv(I-A);
iA=(I-A)^(-1);  %inv(X)矩阵的逆矩阵
E=iA*(I+A);
G=2*iA*B;
H=R+B'*iA'*Q*iA*B;
W=Q*iA*B;
P0=zeros(size(A));%预先产生空矩阵
while(1)P=E'*P0*E-(E'*P0*G+W)*(G'*P0*G+H)^(-1)*(E'*P0*G+W)'+Q;if (norm(P-P0) < epslion)break;elseP0=P;end
end
P=2*iA'*P*iA;%%%%%%%%%%*************************
%% 利用MATLAB求解黎卡提代数方程
% 方法一:简单代数迭代法
% 令fai_0=0,则可以写出如下的迭代公式。
% fai_(i+1)=E'*fai_i*E-(E'*fai_i*G+W)*(G'*fai_i*G+H)^(-1)*(E'*fai_i*G+W+Q);
% E=(I-A)^(-1)*(I+A);
% G=2*(I-A)^(-1)*B;
% H=R+B'*(I-A')^(-1)*Q*(I-A)^(-1)*B;
% W=Q*(I-A)^(-1)*B;
% 如果fai_(i+1)收敛于一个常数矩阵,即||fai_(i+1)-fai_i||<kesai,则可得黎卡提代数方程解为:
% P=2*(I-A')^(-1)*fai_(i+1)*(I-A)^(-1);
end

matlab求解黎卡提代数方程_LQR相关推荐

  1. 【Matlab】求解黎卡提 Riccati 方程 李雅普诺夫 Lyapunov 方程

    相关链接:[数理知识]Riccati 黎卡提 system 针对黎卡提方程 PA+ATP−PBR−1BTP+Q=0P A + A^T P - P B R^{-1} B^T P + Q = 0PA+AT ...

  2. 求解离散黎卡提矩阵代数方程

    离散代数黎卡提方程求解 1. 黎卡提方程 在LQR最优控制中,有连续时间最优控制,即LQR,也有离散时间最优控制DLQR,则在求解中一定会遇到解连续时间黎卡提方程和离散时间黎卡提方程的问题,本文主要针 ...

  3. 【数理知识】Riccati 黎卡提 system

    相关链接:[Matlab]求解黎卡提 Riccati 方程 李雅普诺夫 Lyapunov 方程 黎卡提 Riccati 黎卡提方程 (Riccati equation) 代数 Riccati 方程 1 ...

  4. 最优控制:代数黎卡提方程ARE(Algebraic Riccati Equation)

    本文介绍代数黎卡提方程的Matlab解法,包括直接求解和迭代求解 问题描述: 一.数值解法 可以看出,ARE方程是关于P的一个非线性方程,当系统矩阵维度较高时,难以求解,但是MATLAB给出了求解AR ...

  5. matlab求解微分代数方程组,微分代数方程(DAE)的Matlab 解法.PDF

    微分代数方程(DAE)的Matlab 解法 微分代数方程(DAE)的Matlab解法 所谓微分代数方程,是指在微分方程中,某些变量满足某些代数方程的约束.假 设微分方程的更一般形式可以写成 前面所介绍 ...

  6. 2021-01-13 Matlab求解微分代数方程 (DAE)

    Matlab求解微分代数方程 (DAE) 什么是微分代数方程? 微分代数方程是一类微分方程,其中一个或多个因变量导数未出现在方程中.方程中出现的未包含其导数的变量称为代数变量,代数变量的存在意味着不能 ...

  7. 用matlab求解线性代数方程

    用matlab求解线性代数方程 % 功能:线性代数方程求解:AX=B % 解的判定矩阵:C=[A B] % 求解方法分三种情况讨论: % 唯一解:A为非奇异方阵,x=inv(A)*B % 无穷解:ra ...

  8. 高等应用数学问题的matlab求解汇总

    封面前言和目录 第1章 计算机数学语言概述 第2章 MATLAB语言程序设计基础 第3章 微积分问题的计算机求解 第4章 线性代数问题的计算机求解 第5章 积分变换与复变函数问题的计算机求解 第6章 ...

  9. matlab表达式比未知数多,matlab求解未知数

    Matlab 求解超定方程组实例对于超定方程组,特别是非线性方程组,可以用 Matlab 基于最小二乘算法来进行求解,例如,求解下列方程组: 一个三个未知数,九个方程的非...... 而用匿名 函数时 ...

最新文章

  1. oracle 10046详解
  2. 详解华为交换机iStack特性
  3. 「一本通 4.1 练习 2」简单题
  4. html5 渐变色矩形,使用HTML5画布元素的矩形渐变
  5. 量化交易:聚宽,(1)
  6. c语言100道经典编程题,100道经典C语言编程题
  7. 天珣系统查找计算机登陆,天珣内网安全风险管理与审计系统
  8. PyTorch安装及试用 基于Anaconda3
  9. 嵌入式物联网系统软硬件基础知识大全
  10. Win10免费升级 Win11 有时间限制
  11. Red Team之Empire渗透工具介绍和使用
  12. [Swift]LeetCode60. 第k个排列 | Permutation Sequence
  13. 4g网络设置dns地址_如果你的手机WiFi信号差?输入这串DNS地址,网络瞬间变流畅...
  14. vb.net 打印条形码code39、code128A、code128C、code128Auto(picturebox和打印机)封装类
  15. 分析teamTNT团队Linux挖矿木马执行过程与防范
  16. mini2440 安装OpenWrt 过程记录
  17. 【接口时序】QSPI Flash的原理与QSPI时序的Verilog实现
  18. KYC (Know Your Customer) 详述篇(上)
  19. 《爱丽丝梦游仙境》配色分享
  20. 摸鱼一时爽,被抓社死场!盘点上班摸鱼的正确打开方式√

热门文章

  1. mysql 虚读幻读区别,数据库基础知识
  2. 安装ubuntu设置分辨率
  3. 移植Python2.7到ARM-LINUX嵌入式平台
  4. IIS安装与配置发布
  5. 决策树(分类树、回归树)
  6. 网上怎么购买车险便宜
  7. Centos cut 命令
  8. C#连接OPC server失败,报错80040154 没有注册类
  9. C# 没有注册类 (异常来自 HRESULT:0x80040154 (REGDB_E_CLASSNOTREG))
  10. 每日学术速递2.22