离散代数 Riccati 方程 (DARE) 求解
一、DARE 方程的推导
1.1 最优值函数假设
假设最优值函数(值函数)具有二次形式:
其中 是待定的对称正定矩阵。
1.2 Bellman 方程
根据动态规划原理,最优值函数满足 Bellman 方程:
代入 和 :
1.3 最优性条件
对 求导并令导数为零:
解得最优控制:
1.4 反馈增益矩阵
二、DARE 方程
2.1 标准形式
将最优控制代入 Bellman 方程,整理后得到离散代数 Riccati 方程 (Discrete Algebraic Riccati Equation, DARE):
2.2 等价形式
使用矩阵逆引理,DARE 可写为:
2.3 闭环 Lyapunov 方程
将 DARE 重写为闭环 Lyapunov 方程形式:
其中 。
物理意义
这表明最优值函数 是闭环系统的 Lyapunov 函数。
三、DARE 的求解方法
3.1 不动点迭代法
最直接的方法是不动点迭代:
算法:
- 初始化 (或任意正定矩阵)
- 迭代更新:
- 当 时收敛
收敛条件
若 能稳且 可检测,则迭代收敛到唯一半正定解。
3.2 特征值方法
DARE 的解与辛矩阵 (Symplectic Matrix) 的特征值相关:
通过计算 的稳定不变子空间可得 。
3.3 Schur 方法
更数值稳定的方法:
- 构造增广矩阵
- 计算 Schur 分解
- 从稳定子空间提取
四、DARE 解的性质
4.1 存在唯一性
定理:若 能稳且 可检测,则 DARE 存在唯一半正定对称解 。
4.2 正定性
若 可观测(强于可检测),则 (正定)。
4.3 单调性
迭代序列 单调非减:
五、示例:一阶系统 DARE 求解
5.1 系统参数
5.2 DARE 方程
标量 DARE:
5.3 解析解
化简得二次方程:
解得:
5.4 反馈增益
六、数值计算注意事项
6.1 条件数
DARE 的条件数与以下因素相关:
- 的特征值接近单位圆 → 条件数大
- 过小 → 数值病态
- 过小 → 解接近奇异
6.2 推荐算法
| 场景 | 推荐方法 |
|---|---|
| 小型系统 () | 不动点迭代 |
| 中型系统 () | Schur 方法 |
| 大型系统 () | 迭代 + 低秩近似 |
6.3 软件工具
| 工具 | 函数 |
|---|---|
| MATLAB | dare(A, B, Q, R) |
| Python (SciPy) | scipy.linalg.solve_discrete_are(A, B, Q, R) |
| Python (Control) | control.dare(A, B, Q, R) |
七、总结
| 概念 | 公式 |
|---|---|
| DARE 方程 | |
| 反馈增益 | |
| 最优控制律 | |
| 最优值函数 | |
| 存在条件 | 能稳, 可检测 |
相关内容
- DARE 与稳定性见 03-闭环稳定性与 Lyapunov 方程关联
- 有限时域 Riccati 差分方程见 02-动态规划与逆向递推求解
更新记录
| 日期 | 内容 |
|---|---|
| 2026-04-10 | 初始版本 |