【LQR】离散代数黎卡提方程的求解,附Matlab/python代码(笔记)

本文详细介绍了LQR算法的核心——设计QRN并解决离散代数黎卡提方程。讨论了连续系统中先连续后离散与先离散后求解LQR方程的区别。通过MATLAB和Python代码演示了离散代数黎卡提方程的求解过程,验证了两种方法得到的结果一致。
摘要由CSDN通过智能技术生成

LQR的核心是设计QRN,并求解对应的黎卡提方程

对于连续状态空间方程系统,先求连续LQR后离散 和 先离散后求离散LQR方程 的结果 是不一样的

1.离散代数黎卡提方程

注:LQR算法中含N项

离散系统:
在这里插入图片描述

在matlab里有现成的函数dlqr(),但为了搞清楚其内核,编写matlab代码展示其求解过程

matlab帮助文件里的dlqr()说明
在这里插入图片描述对于离散代数黎卡提方程的求解,红圈3是关键,将其中的S单独拿出,即可转化为:

S0=A'*S*A-(A'*S*B+N)*inv(B'*S*B+R)*(B'*S*A+N')+Q

其中等号左边的S0认为是S(k+1),右边的S认为是S(k)

此公式迭代即可,采用下文的迭代思想(仅仅参考迭代法的思想):
在这里插入图片描述迭代法求解非线性方程的前提

2.matlab代码

clc
clear
close all
%% 1.参数
mb=240;
mt=30;
ks=16000;
kt=160000;
A0=[0 1 0 -1;
    -ks/mb 0 0 0;
    0 0 0 1;
    ks/mt 0 -kt/mt 0];
B0=[0;-1/mb;0;1/mt];
G0=[0;0;-1;0];
C0=[-ks/mb 0 
  • 1
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值