码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • Riccati 方程求解


    黎卡提(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

    离散代数黎卡提方程求解

    1. 黎卡提方程

    在LQR最优控制中,有连续时间最优控制,即LQR,也有离散时间最优控制DLQR,则在求解中一定会遇到解连续时间黎卡提方程和离散时间黎卡提方程的问题,本文主要针对离散时间黎卡提方程进行求解。
    给定一个系统,如下所示:

    求解上述黎卡提方程有两种方法,一种是不变子空间法,另外一种是迭代法求解。 

    1. %======求解黎卡提方程==========%
    2. clear all;clc;close all;
    3. A = [0.8 0.3;-0.6 0];
    4. B = [1 0.3;0 1.4];
    5. L = [2 0.5;1 0.3];
    6. Q = [7 1;1 3];
    7. R = [3 1;1 2];
    8. [Kr,Pr]=dlqr(A,B,Q,R,L); % 标准库求解
    9. err = 10^(-15);
    10. error = 10;
    11. Pe = Q - L*inv(R)*L';
    12. X = Q - L*inv(R)*L';
    13. % X = (A - B*inv(R)*L')'*inv(B*inv(R)*B')*(A-B*inv(R)*L') +Q - L*inv(R)*L';
    14. Last_Pe = Pe;
    15. i = 1;
    16. while (error>=err)
    17. Pe = (A-B*inv(R)*L')'*inv(Last_Pe + B*inv(R)*B')*(A-B*inv(R)*L') +Q - L*inv(R)*L';
    18. error = norm((Pe-Last_Pe),'Inf');
    19. Last_Pe = Pe;
    20. i = i +1;
    21. end
    22. Ke = inv(R+B'*Pe*B)*B'*Pe*A;
    1. [X,L,G] = care(A,B,Q)
    2. [X,L,G] = care(A,B,Q,R,S,E)
    3. [X,L,G,report] = care(A,B,Q,...)
    4. [X1,X2,D,L] = care(A,B,Q,...,'factor')

     

    1. a = [-3 2;1 1]
    2. b = [0 ; 1]
    3. c = [1 -1]
    4. r = 3
    5. [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代码如下:

    1. A = [0.8 0.3;-0.6 0];
    2. B = [1 0.3;0 1.4];
    3. Q = [7 1;1 3];
    4. R = [3 1;1 2];
    5. %连续黎卡提方程
    6. P=care(A,B,Q,R)
    7. Re = A'*P + P*A - P*B*inv(R)*B'*P + Q
    8. %离散黎卡提方程
    9. P=dare(A,B,Q,R)
    10. Re = A'*P*A - (A'*P*B)*inv(R+B'*P*B)*(B'*P*A) + Q - P
    11. %迭代解离散黎卡提方程
    12. P = Q;
    13. e=1;
    14. while (e >= 1e-10)
    15. Pe = Q + A'*P*A - A'*P*B*inv(R+B'*P*B)*(B'*P*A);
    16. e = norm(Pe-P);
    17. P = Pe;
    18. end
    19. P
    20. Re = A'*P*A - (A'*P*B)*inv(R+B'*P*B)*(B'*P*A) + Q - P

    1. 离散时间最优控制问题:
    2. [X,L,G]=dare(A,B,Q,R), 其中A,B为系统的状态方程,Q,R为性能指标函数对应的非负定对称矩阵。
    3. X:Riccati方程的解,即J = x’Px
    4. L: 特征值
    5. G:状态反馈矩阵
    6. 连续时间最优控制问题:
    7. [X,L,G]=care(A,B,Q,R),同上;
    8. 二次型最优控制问题(取状态变量和控制变量的二次型函数的积分作为性能指标函数):
    9. [K,P,r] = lqr(A,B,Q,R),其中K为状态反馈矩阵;P为Riccati方程的解;r为特征值
    10. 在某种Q,R的条件下lqr与care等价。

    riccati-equation · GitHub Topics · GitHubGitHub is where people build software. More than 83 million people use GitHub to discover, fork, and contribute to over 200 million projects.https://github.com/topics/riccati-equation

    <
  • 相关阅读:
    李跳跳使用、逆向、脱壳和原理介绍
    SpringBoot中如何集成Servlet呢?
    测试人生 | 半年涨薪20W入职名企大厂,这个90后妹纸凭什么这么猛?
    Java中的反射机制
    Java小树的参天成长(构造方法重载)
    Gateway的服务网关
    Redis底层数据结构
    2022-11-11 myql Block Nested-Loop and Batched Key Access Joins
    thinkphp 生成邀请推广二维码,保存到服务器并接口返回给前端
    Empire(四)会话管理
  • 原文地址:https://blog.csdn.net/weixin_51367832/article/details/126952955
  • 最新文章
  • 沪漂五周年了:我越来越迷茫了
    Agentic Skill Routing 实战:别再把所有 Skill 塞进 AI Agent 上下文
    MySQL-Seconds_behind_master的精度误差
    [MAF预定义ChatClient中间件-03]CachingChatClient——利用缓存省钱省时间
    AI的至暗历史:从万众期待到被政府撤资,AI的两次死亡徘徊
    Agent OS :五种驯服不确定性的范式
    PortSwigger SQL注入LAB11
    数据库即时编译JIT
    [Begin]AI Learn Data Day 0
    深度学习进阶(二十七)现代 LLM 的核心架构设计其二:SwiGLU
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号