GitHub

@@ -0,0 +1,175 @@

1+

---

2+

jupytext:

3+

text_representation:

4+

extension: .md

5+

format_name: myst

6+

format_version: 0.13

7+

jupytext_version: 1.11.1

8+

kernelspec:

9+

display_name: Python 3

10+

language: python

11+

name: python3

12+

---

13+14+

# Eliminating Cross Products

15+16+

## Overview

17+18+

This lecture describes formulas for eliminating

19+20+

* cross products between states and control in linear-quadratic dynamic programming problems

21+22+

* covariances between state and measurement noises in Kalman filtering problems

23+24+25+

For a linear-quadratic dynamic programming problem, the idea involves these steps

26+27+

* transform states and controls in a way that leads to an equivalent problem with no cross-products between transformed states and controls

28+

* solve the transformed problem using standard formulas for problems with no cross-products between states and controls presented in this lecture {doc}`Linear Control: Foundations <lqcontrol>`

29+

* transform the optimal decision rule for the altered problem into the optimal decision rule for the original problem with cross-products between states and controls

30+31+

+++

32+33+

## Undiscounted dynamic programming problem

34+35+

Here is a nonstochastic undiscounted LQ dynamic programming with cross products between

36+

states and controls in the objective function.

37+38+39+40+

The problem is defined by the 5-tuple of matrices $(A, B, R, Q, H)$

41+

where $R$ and $Q$ are positive definite symmetric matrices and

42+

$A \sim m \times m, B \sim m \times k, Q \sim k \times k, R \sim m \times m$ and $H \sim k \times m$.

43+44+45+

The problem is to choose $\{x_{t+1}, u_t\}_{t=0}^\infty$ to maximize

46+47+

$$

48+

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

49+

$$

50+51+

subject to the linear constraints

52+53+

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

54+55+

where $x_0$ is a given initial condition.

56+57+

The solution to this undiscounted infinite-horizon problem is a time-invariant feedback rule

58+59+

$$ u_t = -F x_t $$

60+61+

where

62+63+

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

64+65+

and $P \sim m \times m $ is a positive definite solution of the algebraic matrix Riccati equation

66+67+

$$

68+

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

69+

$$

70+71+72+

+++

73+74+

It can be verified that an **equivalent** problem without cross-products between states and controls

75+

is defined by a 4-tuple of matrices : $(A^*, B, R^*, Q) $.

76+77+

That the omitted matrix $H=0$ indicates that there are no cross products between states and controls

78+

in the equivalent problem.

79+80+

The matrices $(A^*, B, R^*, Q) $ defining the equivalent problem and the value function, policy function matrices $P, F^*$ that solve it are related to the matrices $(A, B, R, Q, H)$ defining the original problem and the value function, policy function matrices $P, F$ that solve the original problem by

81+82+

\begin{align*}

83+

A^* & = A - B Q^{-1} H, \\

84+

R^* & = R - H'Q^{-1} H, \\

85+

P & = R^* + {A^*}' P A - ({A^*}' P B) (Q + B' P B)^{-1} B' P A^*, \\

86+

F^* & = (Q + B' P B)^{-1} B' P A^*, \\

87+

F & = F^* + Q^{-1} H.

88+

\end{align*}

89+90+

+++

91+92+

## Kalman filter

93+94+

The **duality** that prevails between a linear-quadratic optimal control and a Kalman filtering problem means that there is an analogous transformation that allows us to transform a Kalman filtering problem

95+

with non-zero covariance matrix between between shocks to states and shocks to measurements to an equivalent Kalman filtering problem with zero covariance between shocks to states and measurments.

96+97+

Let's look at the appropriate transformations.

98+99+100+

First, let's recall the Kalman filter with covariance between noises to states and measurements.

101+102+

The hidden Markov model is

103+104+

\begin{align*}

105+

x_{t+1} & = A x_t + B w_{t+1}, \\

106+

z_{t+1} & = D x_t + F w_{t+1},

107+

\end{align*}

108+109+

where $A \sim m \times m, B \sim m \times p $ and $D \sim k \times m, F \sim k \times p $,

110+

and $w_{t+1}$ is the time $t+1$ component of a sequence of i.i.d. $p \times 1$ normally distibuted

111+

random vectors with mean vector zero and covariance matrix equal to a $p \times p$ identity matrix.

112+113+

Thus, $x_t$ is $m \times 1$ and $z_t$ is $k \times 1$.

114+115+

The Kalman filtering formulas are

116+117+118+

\begin{align*}

119+

K(\Sigma_t) & = (A \Sigma_t D' + BF')(D \Sigma_t D' + FF')^{-1}, \\

120+

\Sigma_{t+1}& = A \Sigma_t A' + BB' - (A \Sigma_t D' + BF')(D \Sigma_t D' + FF')^{-1} (D \Sigma_t A' + FB').

121+

\end{align*} (eq:Kalman102)

122+123+124+

Define tranformed matrices

125+126+

\begin{align*}

127+

A^* & = A - BF' (FF')^{-1} D, \\

128+

B^* {B^*}' & = BB' - BF' (FF')^{-1} FB'.

129+

\end{align*}

130+131+

### Algorithm

132+133+

A consequence of formulas {eq}`eq:Kalman102} is that we can use the following algorithm to solve Kalman filtering problems that involve non zero covariances between state and signal noises.

134+135+

First, compute $\Sigma, K^*$ using the ordinary Kalman filtering formula with $BF' = 0$, i.e.,

136+

with zero covariance matrix between random shocks to states and random shocks to measurements.

137+138+

That is, compute $K^*$ and $\Sigma$ that satisfy

139+140+

\begin{align*}

141+

K^* & = (A^* \Sigma D')(D \Sigma D' + FF')^{-1} \\

142+

\Sigma & = A^* \Sigma {A^*}' + B^* {B^*}' - (A^* \Sigma D')(D \Sigma D' + FF')^{-1} (D \Sigma {A^*}').

143+

\end{align*}

144+145+

The Kalman gain for the original problem **with non-zero covariance** between shocks to states and measurements is then

146+147+

$$

148+

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

149+

$$

150+151+

The state reconstruction covariance matrix $\Sigma$ for the original problem equals the state reconstrution covariance matrix for the transformed problem.

152+153+

+++

154+155+

## Duality table

156+157+

Here is a handy table to remember how the Kalman filter and dynamic program are related.

158+159+160+

| Dynamic Program | Kalman Filter |

161+

| :-------------: | :-----------: |

162+

| $A$ | $A'$ |

163+

| $B$ | $D'$ |

164+

| $H$ | $FB'$ |

165+

| $Q$ | $FF'$ |

166+

| $R$ | $BB'$ |

167+

| $F$ | $K'$ |

168+

| $P$ | $\Sigma$ |

169+170+

+++

171+172+173+

```{code-cell} ipython3

174+175+

```

Read the original on github.com ↗