Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
56 changes: 27 additions & 29 deletions lectures/cross_product_trick.md
Original file line number Diff line number Diff line change
Expand Up @@ -33,16 +33,16 @@ kernelspec:

这里是一个目标函数中包含状态和控制交叉项的非随机无折现线性二次动态规划问题。

该问题由矩阵5元组 $(A, B, R, Q, H)$ 定义,其中 $R$ 和 $Q$ 是正定对称矩阵,且
该问题由矩阵五元组 $(A, B, R, Q, H)$ 定义,其中 $R$ 和 $Q$ 是正定对称矩阵,且
$A \sim m \times m, B \sim m \times k, Q \sim k \times k, R \sim m \times m$ 以及 $H \sim k \times m$。

问题是选择 $\{x_{t+1}, u_t\}_{t=0}^\infty$ 以最大化

$$
- \sum_{t=0}^\infty (x_t' R x_t + u_t' Q u_t + 2 u_t H x_t)
-\sum_{t=0}^\infty (x_t' R x_t + u_t' Q u_t + 2 u_t H x_t)
$$

受限于线性约束
满足线性约束条件:

$$ x_{t+1} = A x_t + B u_t, \quad t \geq 0 $$

Expand All @@ -56,86 +56,86 @@ $$ u_t = -F x_t $$

$$ F = -(Q + B'PB)^{-1} B'PA $$

且 $P \sim m \times m $ 是代数矩阵Riccati方程的正定解
且 $P \sim m \times m$ 是代数矩阵黎卡提方程的正定解

$$
P = R + A'PA - (A'PB + H')(Q + B'PB)^{-1}(B'PA + H).
$$

+++

可以验证,一个**等价的**没有状态和控制交叉项的问题可以由矩阵4元组定义:$(A^*, B, R^*, Q)$。
可以验证,一个与之等价但不含状态与控制交叉项的问题可由矩阵四元组 $(A^*, B, R^*, Q)$ 定义

省略的矩阵 $H=0$ 表示在等价问题中没有状态和控制之间的交叉项。

定义等价问题的矩阵 $(A^*, B, R^*, Q)$ 及其值函数、策略函数矩阵 $P, F^*$ 与定义原始问题的矩阵 $(A, B, R, Q, H)$ 及其值函数、策略函数矩阵 $P, F$ 之间的关系如下:

\begin{align*}
$$
\begin{aligned}
A^* & = A - B Q^{-1} H, \\
R^* & = R - H'Q^{-1} H, \\
P & = R^* + {A^*}' P A - ({A^*}' P B) (Q + B' P B)^{-1} B' P A^*, \\
F^* & = (Q + B' P B)^{-1} B' P A^*, \\
F & = F^* + Q^{-1} H.
\end{align*}
\end{aligned}
$$

+++

## 卡尔曼滤波

线性二次最优控制和卡尔曼滤波问题之间存在的**对偶性**意味着存在一个类似的变换,允许我们将状态噪声和测量噪声之间具有非零协方差矩阵的卡尔曼滤波问题转换为一个等价的、状态噪声和测量噪声之间协方差为零的卡尔曼滤波问题。
线性二次最优控制与卡尔曼滤波问题之间存在一种**对偶**关系。这意味着存在一个类似的变换,允许我们将状态噪声和测量噪声之间具有非零协方差矩阵的卡尔曼滤波问题转换为一个等价的、状态噪声和测量噪声之间协方差为零的卡尔曼滤波问题。

让我们看看适当的变换。

首先,让我们回顾一下具有状态噪声和测量噪声之间协方差的卡尔曼滤波。

隐马尔可夫模型为:

\begin{align*}
$$
\begin{aligned}
x_{t+1} & = A x_t + B w_{t+1}, \\
z_{t+1} & = D x_t + F w_{t+1},
\end{align*}
\end{aligned}
$$

其中 $A \sim m \times m, B \sim m \times p $ 且 $D \sim k \times m, F \sim k \times p $,
其中 $A \sim m \times m, B \sim m \times p$ 且 $D \sim k \times m, F \sim k \times p$,
且 $w_{t+1}$ 是一个独立同分布的 $p \times 1$ 正态分布随机向量序列的时间 $t+1$ 分量,其均值向量为零,协方差矩阵等于 $p \times p$ 单位矩阵。

因此,$x_t$ 是 $m \times 1$ $z_t$ 是 $k \times 1$。
因此,$x_t$ 是 $m \times 1$ 的且 $z_t$ 是 $k \times 1$

卡尔曼滤波公式为:

```{math}
:label: eq:Kalman102

\begin{aligned}
K(\Sigma_t) & = (A \Sigma_t D' + BF')(D \Sigma_t D' + FF')^{-1}, \\
\Sigma_{t+1}& = A \Sigma_t A' + BB' - (A \Sigma_t D' + BF')(D \Sigma_t D' + FF')^{-1} (D \Sigma_t A' + FB').
\end{aligned}
```

定义转换后的矩阵:

\begin{align*}
A^* & = A - BF' (FF')^{-1} D, \\
B^* {B^*}' & = BB' - BF' (FF')^{-1} FB'.
\end{align*}

### 算法

公式 {eq}`eq:Kalman102` 的一个结果是,我们可以使用以下算法来求解涉及状态噪声和信号噪声之间非零协方差的卡尔曼滤波问题
根据公式 {eq}`eq:Kalman102`,我们可以使用以下算法来求解那些状态噪声与观测噪声之间协方差非零的卡尔曼滤波问题

首先,使用普通卡尔曼滤波公式计算 $\Sigma, K^*$,其中 $BF' = 0$,即状态随机噪声和测量随机噪声之间的协方差矩阵为零。
首先,使用标准的卡尔曼滤波公式计算 $\Sigma, K^*$,其中 $BF' = 0$,即状态随机噪声和测量随机噪声之间的协方差矩阵为零。

也就是说,计算满足以下条件的 $K^*$ 和 $\Sigma$:

\begin{align*}
$$
\begin{aligned}
K^* & = (A^* \Sigma D')(D \Sigma D' + FF')^{-1} \\
\Sigma & = A^* \Sigma {A^*}' + B^* {B^*}' - (A^* \Sigma D')(D \Sigma D' + FF')^{-1} (D \Sigma {A^*}').
\end{align*}
\end{aligned}
$$

原始问题(具有**非零协方差**的状态和测量噪声)的卡尔曼增益为
接着,对于具有**非零状态–观测协方差**的原始问题,其卡尔曼增益为

$$
K = K^* + BF' (FF')^{-1},
$$

原始问题的状态重构协方差矩阵 $\Sigma$ 等于转换后问题的状态重构协方差矩阵
原始问题的状态重构协方差矩阵 $\Sigma$ 等于变换后问题的状态重构协方差矩阵

+++

Expand All @@ -153,9 +153,7 @@ $$
| $F$ | $K'$ |
| $P$ | $\Sigma$ |

+++


```{code-cell} ipython3

```

Loading