blob: 52d09496b895c37aec13beeeaff4c50351f1e4ec [file] [log] [blame]
\documentclass[a4paper,12pt]{article}
\usepackage{amsmath}
\begin{document}
% From http://www.eecs.tufts.edu/~khan/Courses/Spring2013/EE194/Lecs/Lec9and10.pdf
% and http://www.cs.unc.edu/~wens/WAFR2014-Sun.pdf
% (which references http://maeresearch.ucsd.edu/skelton/publications/weiwei_ilqg_CDC43.pdf)
% and http://arl.cs.utah.edu/pubs/ISRR2013.pdf
\section{Backwards Pass}
Let's start with some definitions for the standard LQR controller.
$c_t(\boldsymbol{x}, \boldsymbol{u})$ is the cost for the iteration $t$ given that we are at $\boldsymbol{x}$ and are going to apply $\boldsymbol{u}$ for one cycle.
$v_t(\boldsymbol{x})$ is the optimal cost-to-go for the starting point $\boldsymbol{x}$ at step $t$.
$v_N(\boldsymbol{x})$ may be defined to be a different final cost from $v_t(\boldsymbol{x})$ if need be, where $N$ is the horizon.
$$\begin{array}{rcl}
c_t(\boldsymbol{x}, \boldsymbol{u}) &=&
\frac{1}{2}
\begin{bmatrix} \boldsymbol{x} \\ \boldsymbol{u} \end{bmatrix}^T
\begin{bmatrix} Q_t & P_t^T \\ P_t & R_t \end{bmatrix}
\begin{bmatrix} \boldsymbol{x} \\ \boldsymbol{u} \end{bmatrix} +
\begin{bmatrix} \boldsymbol{x} \\ \boldsymbol{u} \end{bmatrix}^T
\begin{bmatrix} \boldsymbol{q}_t \\ \boldsymbol{r}_t \end{bmatrix} +
q_t \\
v_{t + 1}(\boldsymbol{x}) &=&
\frac{1}{2} \boldsymbol{x}^T S_{t + 1} \boldsymbol{x} + \boldsymbol{x}^T \boldsymbol{s}_{t + 1} + s_{t + 1} \\
g_t(\boldsymbol{x}_t, \boldsymbol{u}_t) = \boldsymbol{x}_{t + 1}(\boldsymbol{u}_t) &=&
A_{t} \boldsymbol{x}_t + B_t \boldsymbol{u}_t + \boldsymbol{c}_{t} \\
v_{t}(\boldsymbol{x}_t, \boldsymbol{u}_t) &=&
v_{t+1}(\boldsymbol{x}_{t+1}) +
c_t(\boldsymbol{x}_t, \boldsymbol{u}_t) \\\
&=&
v_{t+1}(g_t(\boldsymbol{x}_{t}, \boldsymbol{u}_t)) +
c_t(\boldsymbol{x}_t, \boldsymbol{u}_t)
\\
\end{array}$$
Now, let's calculate $v_t(\boldsymbol{x})$ given $v_{t+1}(\boldsymbol{x})$ and the step cost from $c_t(\boldsymbol{x})$.
This tells us the cost of applying $\boldsymbol{u}$ starting from $\boldsymbol{x}$.
We will then optimize over all $\boldsymbol{u}$ to find the optimal next state and cost for that state.
This lets us then use dynamic programing methods to work out the optimal $\boldsymbol{x}$ and $\boldsymbol{u}$ at each timestep.
We want to get a quadratic solution of the form
$$v_{t}(\boldsymbol{x}) =
\frac{1}{2} \boldsymbol{x}^T S_{t} \boldsymbol{x} + \boldsymbol{x}^T \boldsymbol{s}_{t} + s_{t}$$ for each step.
$$\begin{array}{rcl}
v_{t}(\boldsymbol{x}, \boldsymbol{u}) &=&
\frac{1}{2} \left( A_{t}\boldsymbol{x} + B_{t}\boldsymbol{u} + \boldsymbol{c}_{t}\right)^T
S_{t + 1}
\left( A_{t}\boldsymbol{x} + B_{t}\boldsymbol{u} + \boldsymbol{c}_{t}\right) +
\left( A_{t}\boldsymbol{x} + B_{t}\boldsymbol{u} + \boldsymbol{c}_{t}\right)^T \boldsymbol{s}_{t + 1} +
s_{t + 1} + \\ &&
\frac{1}{2}
\begin{bmatrix} \boldsymbol{x} \\ \boldsymbol{u} \end{bmatrix}^T
\begin{bmatrix} Q_{t} & P_{t}^T \\ P_{t} & R_{t} \end{bmatrix}
\begin{bmatrix} \boldsymbol{x} \\ \boldsymbol{u} \end{bmatrix} +
\begin{bmatrix} \boldsymbol{x} \\ \boldsymbol{u} \end{bmatrix}^T
\begin{bmatrix} \boldsymbol{q}_{t} \\ \boldsymbol{r}_{t} \end{bmatrix} +
q_{t}
\\
&=&
\frac{1}{2} \left(
\boldsymbol{x}^T A_{t}^T S_{t + 1} A_{t} \boldsymbol{x} +
\boldsymbol{u}^T B_{t}^T S_{t + 1} A_{t} \boldsymbol{x} +
\boldsymbol{c}_t^T S_{t + 1} A_{t} \boldsymbol{x} + \right. \\ &&
\left. \boldsymbol{x}^T A_{t}^T S_{t + 1} B_{t} \boldsymbol{u} +
\boldsymbol{u}^T B_{t}^T S_{t + 1} B_{t} \boldsymbol{u} +
\boldsymbol{c}_t^T S_{t + 1} B_{t} \boldsymbol{u} + \right. \\ &&
\left. \boldsymbol{x}^T A_{t}^T S_{t + 1} \boldsymbol{c}_t +
\boldsymbol{u}^T B_{t}^T S_{t + 1} \boldsymbol{c}_t +
\boldsymbol{c}_t^T S_{t + 1} \boldsymbol{c}_t
\right) + \\ &&
\boldsymbol{x}^T A_{t}^T \boldsymbol{s}_{t + 1} +
\boldsymbol{u}^T B_{t}^T \boldsymbol{s}_{t + 1} +
\boldsymbol{c}_t^T \boldsymbol{s}_{t + 1} +
s_{t + 1} + \\ &&
\frac{1}{2} \left(\boldsymbol{x}^T Q_t \boldsymbol{x} + \boldsymbol{u}^T P_t \boldsymbol{x} + \boldsymbol{x}^T P_t^T \boldsymbol{u} + \boldsymbol{u}^T R_t \boldsymbol{u} \right) + \boldsymbol{x}^T \boldsymbol{q}_t + \boldsymbol{u}^T \boldsymbol{r}_t + q_t
\\
&=&
\frac{1}{2} \left(
\boldsymbol{x}^T \left( A_{t}^T S_{t + 1} A_{t} + Q_t \right) \boldsymbol{x} +
\boldsymbol{u}^T \left( B_{t}^T S_{t + 1} A_{t} + P_t \right) \boldsymbol{x} \right. + \\ &&
\left. \boldsymbol{x}^T \left( A_{t}^T S_{t + 1} B_{t} + P_t^T \right) \boldsymbol{u} +
\boldsymbol{u}^T \left( B_{t}^T S_{t + 1} B_{t} + R_t \right) \boldsymbol{u} \right) + \\ &&
\boldsymbol{x}^T \left(A_{t}^T \boldsymbol{s}_{t + 1} +
\boldsymbol{q}_t \right)+
\boldsymbol{u}^T \left( B_{t}^T \boldsymbol{s}_{t + 1} +
\boldsymbol{r}_t \right) +
\boldsymbol{c}_t^T \boldsymbol{s}_{t + 1} + s_{t + 1} +
q_t + \\ &&
\frac{1}{2} \left( \boldsymbol{c}_t^T S_{t + 1} \boldsymbol{c}_t +
\boldsymbol{x}^T A_{t}^T S_{t + 1} \boldsymbol{c}_t +
\boldsymbol{u}^T B_{t}^T S_{t + 1} \boldsymbol{c}_t +
\boldsymbol{c}_t^T S_{t + 1} B_{t} \boldsymbol{u} +
\boldsymbol{c}_t^T S_{t + 1} A_{t} \boldsymbol{x} \right)
\end{array}$$
Now, let's find the optimal $\boldsymbol{u}$. Do this by evaluating $\frac{\partial}{\partial \boldsymbol{u}} v_t(\boldsymbol{x}, \boldsymbol{u}) = 0$.
$$\begin{array}{rcl}
\frac{\partial}{\partial \boldsymbol{u}} v_{t}(\boldsymbol{x}, \boldsymbol{u}) &=& \frac{1}{2} \left( 2 \boldsymbol{u}^T \left( B_{t}^T S_{t + 1} B_{t} + R_t \right) + 2 \boldsymbol{x}^T \left( A_{t}^T S_{t + 1} B_{t} + P_t^T \right) + 2 \boldsymbol{c}_t^T S_{t + 1} B_{t} \right) + \\&&\boldsymbol{s}_{t + 1}^T B_{t} + \boldsymbol{r}_t^T \\
\frac{\partial}{\partial \boldsymbol{u}} v_{t}(\boldsymbol{x}, \boldsymbol{u}) &=& \boldsymbol{u}^T \left( B_{t}^T S_{t + 1} B_{t} + R_t \right) + \boldsymbol{x}^T \left( A_{t}^T S_{t + 1} B_{t} + P_t^T \right) + \boldsymbol{c}_t^T S_{t + 1} B_{t} + \boldsymbol{s}_{t + 1}^T B_{t} + \boldsymbol{r}_t^T \\
0 &=& \boldsymbol{u}^T \left( B_{t}^T S_{t + 1} B_{t} + R_t \right) + \boldsymbol{x}^T \left( A_{t}^T S_{t + 1} B_{t} + P_t^T \right) + \boldsymbol{c}_t^T S_{t + 1} B_{t} + \boldsymbol{s}_{t + 1}^T B_{t} + \boldsymbol{r}_t^T
\end{array}$$
$$\begin{array}{rcl}
\boldsymbol{u}^T \left( B_{t}^T S_{t + 1} B_{t} + R_t \right) &=& - \boldsymbol{x}^T \left( A_{t}^T S_{t + 1} B_{t} + P_t^T \right) - \boldsymbol{c}_t^T S_{t + 1} B_{t} - \boldsymbol{s}_{t + 1}^T B_{t} - \boldsymbol{r}_t^T \\
\left( B_{t}^T S_{t + 1} B_{t} + R_t \right) \boldsymbol{u} &=& - \left( B_{t}^T S_{t + 1} A_{t} + P_t \right) \boldsymbol{x} - B_t^T S_{t + 1} \boldsymbol{c}_t - B_{t}^T \boldsymbol{s}_{t + 1}- \boldsymbol{r}_t \\
\boldsymbol{u} &=& - \left( B_{t}^T S_{t + 1} B_{t} + R_t \right) ^{-1} \left( \left( B_{t}^T S_{t + 1} A_{t} + P_t \right) \boldsymbol{x} + B_t^T S_{t + 1} \boldsymbol{c}_t + B_{t}^T \boldsymbol{s}_{t + 1} + \boldsymbol{r}_t \right)
\end{array}$$
This gives us the optimal $\boldsymbol{u}$. There are some substitutions defined here from the 2013 paper which make it easier to read.
Note: the 2014 paper uses different letters for these same quantities\dots
\\
$$\begin{array}{rcl}
C_t &=& B^T_t S_{t + 1} A_t + P_t \\
E_t &=& B_{t}^T S_{t + 1} B_{t} + R_t \\
L_t &=& - E_t ^{-1} C_t \\
\boldsymbol{e}_t &=& B_t^T S_{t + 1} \boldsymbol{c}_t + B_{t}^T \boldsymbol{s}_{t + 1} + \boldsymbol{r}_t \\
\boldsymbol{l}_t &=& - E^{-1}_t \boldsymbol{e}_t \\
D_t &=& A_t^T S_{t + 1} A_t + Q_t \\
\boldsymbol{d}_t &=& A_t^T S_{t + 1} \boldsymbol{c}_t + A_{t}^T \boldsymbol{s}_{t + 1} + \boldsymbol{q}_t
\\
\boldsymbol{u} &=& L_t \boldsymbol{x} + \boldsymbol{l}_t
\end{array}$$
With these, we can simplify $\boldsymbol{u}$ a bit and make it look like the 2014 paper has it.
$$\begin{array}{rcl}
\boldsymbol{u} &=& -E_t^{-1} \left( C_t \boldsymbol{x} + \boldsymbol{e}_t \right) \\
\boldsymbol{u} &=& -E_t^{-1} C_t \boldsymbol{x} - E_t^{-1} \boldsymbol{e}_t
\end{array}$$
For reference, here are some equivalences between the symbols used in the 2013
paper (the ones we use) and the 2014 paper.
TODO(Brian): Figure out where the ones in the 2014 paper are defined instead of
guessing by pattern-matching.
\\ \begin{tabular}{ | r | l | }
\hline
2013 paper (ours) & 2014 paper \\
\hline
$C_t$ & $E_t$ \\
$D_t$ & $C_t$ \\
$\boldsymbol{d}_t$ & $\boldsymbol{c}_t$ \\
$E_t$ & $D_t$ \\
$\boldsymbol{e}_t$ & $\boldsymbol{d}_t$ \\
\hline
\end{tabular} \\
Now, let's solve for the new cost function.
$$\begin{array}{rcl}
v_{t}(\boldsymbol{x}, \boldsymbol{u}) &=&
\frac{1}{2} \left(
\boldsymbol{x}^T \left( A_{t}^T S_{t + 1} A_{t} + Q_t \right) \boldsymbol{x} +
\boldsymbol{u}^T \left( B_{t}^T S_{t + 1} A_{t} + P_t \right) \boldsymbol{x} \right. + \\ &&
\left. \boldsymbol{x}^T \left( A_{t}^T S_{t + 1} B_{t} + P_t^T \right) \boldsymbol{u} +
\boldsymbol{u}^T \left( B_{t}^T S_{t + 1} B_{t} + R_t \right) \boldsymbol{u} \right) + \\ &&
\boldsymbol{x}^T \left(A_{t}^T \boldsymbol{s}_{t + 1} +
\boldsymbol{q}_t \right)+
\boldsymbol{u}^T \left( B_{t}^T \boldsymbol{s}_{t + 1} +
\boldsymbol{r}_t \right) +
\boldsymbol{c}_t^T \boldsymbol{s}_{t + 1} + s_{t + 1} +
q_t + \\ &&
\frac{1}{2} \left( \boldsymbol{c}_t^T S_{t + 1} \boldsymbol{c}_t +
\boldsymbol{x}^T A_{t}^T S_{t + 1} \boldsymbol{c}_t +
\boldsymbol{u}^T B_{t}^T S_{t + 1} \boldsymbol{c}_t +
\boldsymbol{c}_t^T S_{t + 1} B_{t} \boldsymbol{u} +
\boldsymbol{c}_t^T S_{t + 1} A_{t} \boldsymbol{x} \right)
\\
&=&
\frac{1}{2} \left(
\boldsymbol{x}^T \left( A_{t}^T S_{t + 1} A_{t} + Q_t \right) \boldsymbol{x} +
\boldsymbol{u}^T \left( B_{t}^T S_{t + 1} A_{t} + P_t \right) \boldsymbol{x} \right. + \\ &&
\left. \boldsymbol{x}^T \left( A_{t}^T S_{t + 1} B_{t} + P_t^T \right) \boldsymbol{u} +
\boldsymbol{u}^T \left( B_{t}^T S_{t + 1} B_{t} + R_t \right) \boldsymbol{u} \right) + \\ &&
\boldsymbol{x}^T \left(A_{t}^T \boldsymbol{s}_{t + 1} + \boldsymbol{q}_t +
\frac{1}{2} A_{t}^T S_{t + 1} \boldsymbol{c}_t \right) + \\ &&
\boldsymbol{u}^T \left( B_{t}^T \boldsymbol{s}_{t + 1} + \boldsymbol{r}_t +
\frac{1}{2} B_{t}^T S_{t + 1} \boldsymbol{c}_t \right) + \\ &&
\frac{1}{2} \boldsymbol{c}_t^T S_{t + 1} \left( A_t \boldsymbol{x} +
B_t \boldsymbol{u} + \boldsymbol{c}_t \right) + \\ &&
\boldsymbol{c}_t^T \boldsymbol{s}_{t + 1} + s_{t + 1} + q_t
\\
&=&
\frac{1}{2} \left(
\boldsymbol{x}^T \left( A_{t}^T S_{t + 1} A_{t} + Q_t \right) \boldsymbol{x} +
\boldsymbol{u}^T \left( B_{t}^T S_{t + 1} A_{t} + P_t \right) \boldsymbol{x} \right. + \\ &&
\left. \boldsymbol{x}^T \left( A_{t}^T S_{t + 1} B_{t} + P_t^T \right) \boldsymbol{u} +
\boldsymbol{u}^T \left( B_{t}^T S_{t + 1} B_{t} + R_t \right) \boldsymbol{u} \right) + \\ &&
\boldsymbol{x}^T \left(A_{t}^T \boldsymbol{s}_{t + 1} + \boldsymbol{q}_t +
A_{t}^T S_{t + 1} \boldsymbol{c}_t \right) + \\ &&
\boldsymbol{u}^T \left( B_{t}^T \boldsymbol{s}_{t + 1} + \boldsymbol{r}_t +
B_{t}^T S_{t + 1} \boldsymbol{c}_t \right) + \\ &&
\frac{1}{2} \boldsymbol{c}_t^T S_{t + 1} \boldsymbol{c}_t +
\boldsymbol{c}_t^T \boldsymbol{s}_{t + 1} + s_{t + 1} + q_t
\\
&=&
\frac{1}{2} \left(
\boldsymbol{x}^T D_t \boldsymbol{x} +
\boldsymbol{u}^T C_t \boldsymbol{x} +
\boldsymbol{x}^T C_t^T \boldsymbol{u} +
\boldsymbol{u}^T E_t \boldsymbol{u} \right) + \\ &&
\boldsymbol{x}^T \boldsymbol{d}_t +
\boldsymbol{u}^T \boldsymbol{e}_t + \\ &&
\frac{1}{2} \boldsymbol{c}_t^T S_{t + 1} \boldsymbol{c}_t +
\boldsymbol{c}_t^T \boldsymbol{s}_{t + 1} + s_{t + 1} + q_t
\\
&=&
\frac{1}{2} \left(
\boldsymbol{x}^T D_t \boldsymbol{x} +
\left( L_t \boldsymbol{x} + \boldsymbol{l}_t \right)^T C_t \boldsymbol{x} \right. + \\ &&
\left. \boldsymbol{x}^T C_t^T \left( L_t \boldsymbol{x} + \boldsymbol{l}_t \right) +
\left( L_t \boldsymbol{x} + \boldsymbol{l}_t \right)^T E_t \left( L_t \boldsymbol{x} + \boldsymbol{l}_t \right) \right) + \\ &&
\boldsymbol{x}^T \boldsymbol{d}_t +
\left( L_t \boldsymbol{x} + \boldsymbol{l}_t \right)^T \boldsymbol{e}_t + \\&&
\frac{1}{2} \boldsymbol{c}_t^T S_{t + 1} \boldsymbol{c}_t +
\boldsymbol{c}_t^T \boldsymbol{s}_{t + 1} + s_{t + 1} + q_t
\\
&=&
\frac{1}{2} \left(
\boldsymbol{x}^T D_t \boldsymbol{x} + \right.
\boldsymbol{x}^T L_t^T C_t \boldsymbol{x} + \boldsymbol{l}_t^T C_t \boldsymbol{x} + \\ &&
\left. \boldsymbol{x}^T C_t^T L_t \boldsymbol{x} + \boldsymbol{x}^T C_t^T \boldsymbol{l}_t +
\boldsymbol{x}^T L_t^T E_t L_t \boldsymbol{x} +
\boldsymbol{l}_t^T E_t L_t \boldsymbol{x} +
\boldsymbol{x}^T L_t^T E_t \boldsymbol{l}_t +
\boldsymbol{l}_t^T E_t \boldsymbol{l}_t \right) + \\&&
\boldsymbol{x}^T \boldsymbol{d}_t +
\boldsymbol{x}^T L_t^T \boldsymbol{e}_t + \boldsymbol{l}^T_t \boldsymbol{e}_t + \\&&
\frac{1}{2} \boldsymbol{c}_t^T S_{t + 1} \boldsymbol{c}_t +
\boldsymbol{c}_t^T \boldsymbol{s}_{t + 1} + s_{t + 1} + q_t
\\
&=&
\frac{1}{2}
\boldsymbol{x}^T \left(
D_t +
L_t^T C_t +
C_t^T L_t +
L_t^T E_t L_t
\right) \boldsymbol{x} + \\ &&
\boldsymbol{x}^T \left(
\frac{1}{2} \left( C_t^T \boldsymbol{l}_t +
L_t^T E_t \boldsymbol{l}_t \right) +
\boldsymbol{d}_t +
L_t^T \boldsymbol{e}_t \right) +
\frac{1}{2} \left( \boldsymbol{l}_t^T E_t L_t + \boldsymbol{l}_t^T C_t \right) \boldsymbol{x} + \\ &&
\frac{1}{2} \boldsymbol{l}_t^T E_t \boldsymbol{l}_t +
\boldsymbol{l}^T_t \boldsymbol{e}_t +
\boldsymbol{c}_t^T \boldsymbol{s}_{t + 1} + s_{t + 1} + q_t +
\frac{1}{2} \boldsymbol{c}_t^T S_{t + 1} \boldsymbol{c}_t
\\
&=&
\frac{1}{2}
\boldsymbol{x}^T \left(
D_t +
L_t^T C_t +
C_t^T L_t +
L_t^T E_t L_t
\right) \boldsymbol{x} + \\ &&
\boldsymbol{x}^T \left(
C_t^T \boldsymbol{l}_t +
L_t^T E_t \boldsymbol{l}_t +
\boldsymbol{d}_t +
L_t^T \boldsymbol{e}_t \right) + \\ &&
\frac{1}{2} \boldsymbol{l}_t^T E_t \boldsymbol{l}_t +
\boldsymbol{l}^T_t \boldsymbol{e}_t +
\boldsymbol{c}_t^T \boldsymbol{s}_{t + 1} + s_{t + 1} + q_t +
\frac{1}{2} \boldsymbol{c}_t^T S_{t + 1} \boldsymbol{c}_t
\end{array}$$
Ok, let's now pull out the 3 variables of interest and do further simplification.
$$\begin{array}{rcl}
v_{t}(\boldsymbol{x}) &=&
\frac{1}{2} \boldsymbol{x}^T S_{t} \boldsymbol{x} + \boldsymbol{x}^T \boldsymbol{s}_{t} + s_{t} \\
S_t &=&
D_t +
L_t^T C_t +
C_t^T L_t +
L_t^T E_t L_t \\
&=&
D_t -
C_t^T E_t^{-1} C_t -
C_t^T E_t^{-1} C_t +
C_t^T E_t^{-1} C_t \\
&=& D_t - C_t^T E_t^{-1} C_t
\\
\boldsymbol{s}_t &=&
\left( C_t^T + L_t^T E_t \right) \boldsymbol{l}_t +
\boldsymbol{d}_t +
L_t^T \boldsymbol{e}_t \\
&=&
\left( C_t^T - C_t^T E_t^{-1} E_t \right) \boldsymbol{l}_t +
\boldsymbol{d}_t -
C_t^T E_t^{-1} \boldsymbol{e}_t \\
&=& \boldsymbol{d}_t - C_t^T E_t^{-1} \boldsymbol{e}_t
\\
s_t &=&
\frac{1}{2} \boldsymbol{l}_t^T E_t \boldsymbol{l}_t +
\boldsymbol{l}^T_t \boldsymbol{e}_t +
\boldsymbol{c}_t^T \boldsymbol{s}_{t + 1} + s_{t + 1} + q_t +
\frac{1}{2} \boldsymbol{c}_t^T S_{t + 1} \boldsymbol{c}_t
\\
&=&
\frac{1}{2} \boldsymbol{e}_t^T E_t^{-1} E_t E_t^{-1} \boldsymbol{e}_t -
\boldsymbol{e}_t^T E_t^{-1} \boldsymbol{e}_t +
\boldsymbol{c}_t^T \boldsymbol{s}_{t + 1} + s_{t + 1} + q_t +
\frac{1}{2} \boldsymbol{c}_t^T S_{t + 1} \boldsymbol{c}_t
\\
&=&
q_t - \frac{1}{2} \boldsymbol{e}_t^T E_t^{-1} \boldsymbol{e}_t +
\frac{1}{2} \boldsymbol{c}_t^T S_{t + 1} \boldsymbol{c}_t +
\boldsymbol{c}_t^T \boldsymbol{s}_{t + 1} + s_{t + 1}
\end{array}$$
For better or worse, everything but the constant term matches both the 2013
paper (which has no constant term) and the 2014 paper.
The constant term does not match the 2014 paper, but we're pretty sure it's
correct (extended\_lqr\_derivation.py verifies what we have).
The 2014 paper has this for the constant term instead:
$$\begin{array}{rcl}
s_t &=&
q_t - \frac{1}{2} \boldsymbol{e}_t^T E_t^{-1} \boldsymbol{e}_t
\end{array}$$
\section{Forwards Pass}
Let's define the forwards pass to build the cost-to-come function.
We must use the same cycle cost, $c_t(\boldsymbol{x}, \boldsymbol{u})$, as the backwards pass.
The initial cost $v_0(\boldsymbol{x})$ needs to evaluate to $0$ at $\boldsymbol{x}_0$ since
there is no cost needed to get from $\boldsymbol{x}_0$ to $\boldsymbol{x}_0$.
$$\begin{array}{rcl}
\bar v_{t}(\boldsymbol{x}) &=&
\frac{1}{2} \boldsymbol{x}^T \bar S_{t} \boldsymbol{x} + \boldsymbol{x}^T \boldsymbol{\bar s}_{t} + \bar s_{t} \\
\bar g_t(\boldsymbol{x}_{t + 1}, \boldsymbol{u}) = \boldsymbol{x}_{t}(\boldsymbol{u}) &=&
\bar A_{t} \boldsymbol{x}_{t + 1} + \bar B_t \boldsymbol{u} + \boldsymbol{\bar c}_{t} \\
\bar c_{t + 1}(\boldsymbol{x}_{t+1}, \boldsymbol{u}) &=& c_t(\bar g_{t}(\boldsymbol{x}_{t + 1}, \boldsymbol{u}), \boldsymbol{u}) \\
\bar v_{t + 1}(\boldsymbol{x}_{t+1}, \boldsymbol{u}) &=&
\bar v_{t}(\boldsymbol{x}_{t}) +
\bar c_t(\boldsymbol{x}_{t + 1}, \boldsymbol{u}_t)
\\
&=&
\bar v_{t}(\bar g_t(\boldsymbol{x}_{t + 1}, \boldsymbol{u})) +
c_t(\bar g_{t}(\boldsymbol{x}_{t + 1}, \boldsymbol{u}), \boldsymbol{u}) \\
\\
\end{array}$$
It is important to note that the optimal $\boldsymbol{u}$ used to get from $\boldsymbol{x}_t$ to $\boldsymbol{x}_{t+1}$
when evaluating $g_t(\boldsymbol{x}, \boldsymbol{u})$ is the same optimal $\boldsymbol{u}$
used to get from $\boldsymbol{x}_{t+1}$ to $\boldsymbol{x}_t$ when evaluating $\bar g_{t}(\boldsymbol{x}_{t + 1}, \boldsymbol{u})$.
Conveniently, this means that the $\boldsymbol{u}_t$, $L_t$, and $\boldsymbol{l}_t$ calculated in both the forwards and backwards passes is the same.
Like before, we want to get a quadratic solution of the form
$$\bar v_{t + 1}(\boldsymbol{x}_{t+1}) =
\frac{1}{2} \boldsymbol{x}_{t+1}^T \bar S_{t + 1} \boldsymbol{x}_{t+1} + \boldsymbol{x}_{t+1}^T \boldsymbol{\bar s}_{t + 1} + \bar s_{t + 1}$$ for each step.
$$\begin{array}{rcl}
\bar v_{t + 1}(\boldsymbol{x}_{t+1}, \boldsymbol{u}) &=&
\frac{1}{2} \left(\bar A_{t} \boldsymbol{x}_{t + 1} + \bar B_t \boldsymbol{u} + \boldsymbol{\bar c}_{t}\right)^T
\bar S_{t}
\left( \bar A_{t} \boldsymbol{x}_{t + 1} + \bar B_t \boldsymbol{u} + \boldsymbol{\bar c}_{t}\right) + \\ &&
\left(\bar A_{t} \boldsymbol{x}_{t + 1} + \bar B_t \boldsymbol{u} + \boldsymbol{\bar c}_{t}\right) ^T \boldsymbol{\bar s}_{t} + \bar s_{t} + \\&&
\frac{1}{2}
\begin{bmatrix} \left( \bar A_{t} \boldsymbol{x}_{t + 1} + \bar B_t \boldsymbol{u} + \boldsymbol{\bar c}_{t}\right) \\ \boldsymbol{u} \end{bmatrix}^T
\begin{bmatrix} Q_t & P_t^T \\ P_t & R_t \end{bmatrix}
\begin{bmatrix} \left( \bar A_{t} \boldsymbol{x}_{t + 1} + \bar B_t \boldsymbol{u} + \boldsymbol{\bar c}_{t}\right) \\ \boldsymbol{u} \end{bmatrix} + \\&&
\begin{bmatrix} \left( \bar A_{t} \boldsymbol{x}_{t + 1} + \bar B_t \boldsymbol{u} + \boldsymbol{\bar c}_{t}\right) \\ \boldsymbol{u} \end{bmatrix}^T
\begin{bmatrix} \boldsymbol{q}_t \\ \boldsymbol{r}_t \end{bmatrix} +
q_t \\
&=&
\frac{1}{2} \left(\bar A_{t} \boldsymbol{x}_{t + 1} + \bar B_t \boldsymbol{u} + \boldsymbol{\bar c}_{t}\right)^T
\bar S_{t}
\left( \bar A_{t} \boldsymbol{x}_{t + 1} + \bar B_t \boldsymbol{u} + \boldsymbol{\bar c}_{t}\right) + \\ &&
\left(\bar A_{t} \boldsymbol{x}_{t + 1} + \bar B_t \boldsymbol{u} + \boldsymbol{\bar c}_{t}\right) ^T \boldsymbol{\bar s}_{t} + \bar s_{t} + \\&&
\frac{1}{2} \left(
\left( \bar A_{t} \boldsymbol{x}_{t + 1} + \bar B_t \boldsymbol{u} + \boldsymbol{\bar c}_{t}\right)^T Q_t \left( \bar A_{t} \boldsymbol{x}_{t + 1} + \bar B_t \boldsymbol{u} + \boldsymbol{\bar c}_{t}\right) + \right. \\&&
\boldsymbol{u}^T P_t \left( \bar A_{t} \boldsymbol{x}_{t + 1} + \bar B_t \boldsymbol{u} + \boldsymbol{\bar c}_{t}\right) + \\&&
\left( \bar A_{t} \boldsymbol{x}_{t + 1} + \bar B_t \boldsymbol{u} + \boldsymbol{\bar c}_{t}\right)^T P_t^T \boldsymbol{u} + \\&&
\left. \boldsymbol{u}^T R_t \boldsymbol{u} \right) + \\&&
\left( \bar A_{t} \boldsymbol{x}_{t + 1} + \bar B_t \boldsymbol{u} + \boldsymbol{\bar c}_{t}\right)^T \boldsymbol{q}_t + \boldsymbol{u}^T \boldsymbol{r}_t + q_t \\
&=&
\frac{1}{2} \left(\bar A_{t} \boldsymbol{x}_{t + 1} + \bar B_t \boldsymbol{u} + \boldsymbol{\bar c}_{t}\right)^T
\left( \bar S_{t} + Q_t \right)
\left( \bar A_{t} \boldsymbol{x}_{t + 1} + \bar B_t \boldsymbol{u} + \boldsymbol{\bar c}_{t}\right) + \\ &&
\left(\bar A_{t} \boldsymbol{x}_{t + 1} + \bar B_t \boldsymbol{u} + \boldsymbol{\bar c}_{t}\right) ^T \boldsymbol{\bar s}_{t} + \bar s_{t} + \\&&
\frac{1}{2} \left(
\boldsymbol{u}^T P_t \left( \bar A_{t} \boldsymbol{x}_{t + 1} + \bar B_t \boldsymbol{u} + \boldsymbol{\bar c}_{t}\right) \right. + \\&&
\left( \bar A_{t} \boldsymbol{x}_{t + 1} + \bar B_t \boldsymbol{u} + \boldsymbol{\bar c}_{t}\right)^T P_t^T \boldsymbol{u} + \\&&
\left. \boldsymbol{u}^T R_t \boldsymbol{u} \right) + \\&&
\left( \bar A_{t} \boldsymbol{x}_{t + 1} + \bar B_t \boldsymbol{u} + \boldsymbol{\bar c}_{t}\right)^T \boldsymbol{q}_t + \boldsymbol{u}^T \boldsymbol{r}_t + q_t \\
&=& \frac{1}{2} \left(
\boldsymbol{x}_{t + 1}^T \bar A_t^T \left( \bar S_t + Q_t \right) \bar A_t \boldsymbol{x}_{t + 1} +
\boldsymbol{x}_{t + 1}^T \bar A_t^T \left( \bar S_t + Q_t \right) \bar B_t \boldsymbol{u} +
\boldsymbol{x}_{t + 1}^T \bar A_t^T \left( \bar S_t + Q_t \right) \boldsymbol{\bar c}_t + \right. \\&&
\boldsymbol{u}^T \bar B_t^T \left( \bar S_t + Q_t \right) \bar A_t \boldsymbol{x}_{t + 1} +
\boldsymbol{u}^T \bar B_t^T \left( \bar S_t + Q_t \right) \bar B_t \boldsymbol{u} +
\boldsymbol{u}^T \bar B_t^T \left( \bar S_t + Q_t \right) \boldsymbol{\bar c}_t + \\&&
\left. \boldsymbol{\bar c}_t^T \left( \bar S_t + Q_t \right) \bar A_t \boldsymbol{x}_{t + 1} +
\boldsymbol{\bar c}_t^T \left( \bar S_t + Q_t \right) \bar B_t \boldsymbol{u} +
\boldsymbol{\bar c}_t^T \left( \bar S_t + Q_t \right) \boldsymbol{\bar c}_t \right) + \\&&
\boldsymbol{x}_{t + 1}^T \bar A_t^T \boldsymbol{\bar s}_t +
\boldsymbol{u}^T \bar B_t^T \boldsymbol{\bar s}_t +
\boldsymbol{\bar c}_t^T \boldsymbol{\bar s}_t +
\bar s_t + \\ &&
\frac{1}{2} \left( \boldsymbol{u}^T P_t \bar A_{t} \boldsymbol{x}_{t + 1} +
\boldsymbol{u}^T P_t \bar B_{t} \boldsymbol{u} +
\boldsymbol{u}^T P_t \boldsymbol{\bar c}_{t} \right) + \\&&
\frac{1}{2} \left( \boldsymbol{x}_{t+1}^T \bar A^T_t P_t^T \boldsymbol{u} +
\boldsymbol{u}^T \bar B^T_{t} P_t^T \boldsymbol{u} +
\boldsymbol{\bar c}_t^T P^T_t \boldsymbol{u} \right) + \\&&
\frac{1}{2} \boldsymbol{u}^T R_t \boldsymbol{u} + \\&&
\boldsymbol{x}^T_{t + 1} \bar A^T_t \boldsymbol{q}_t +
\boldsymbol{u}^T \bar B^T_t \boldsymbol{q}_t +
\boldsymbol{\bar c}_t^T \boldsymbol{q}_t +
\boldsymbol{u}^T \boldsymbol{r}_t + q_t
\end{array}$$
Now, let's find the optimal $\boldsymbol{u}$.
Do this by evaluating
$\frac{\partial}{\partial \boldsymbol{u}} \bar v_t(\boldsymbol{x}, \boldsymbol{u}) = 0$.
$$\begin{array}{rcl}
\frac{\partial}{\partial \boldsymbol{u}} \bar v_{t + 1}(\boldsymbol{x}_{t+1}, \boldsymbol{u})
&=& \frac{1}{2} \left(
\boldsymbol{x}_{t + 1}^T \bar A_t^T \left( \bar S_t + Q_t \right) \bar B_t +
\left(\bar B_t^T \left( \bar S_t + Q_t \right) \bar A_t \boldsymbol{x}_{t + 1}\right)^T + \right. \\&&
2 \boldsymbol{u}^T \bar B_t^T \left( \bar S_t + Q_t \right) \bar B_t +
\left( \bar B_t^T \left( \bar S_t + Q_t \right) \boldsymbol{\bar c}_t \right)^T + \\&&
\left. \boldsymbol{\bar c}_t^T \left( \bar S_t + Q_t \right) \bar B_t \right) + \\&&
\boldsymbol{\bar s}_t ^T \bar B_t + \\&&
\frac{1}{2} \left( P_t \bar A_{t} \boldsymbol{x}_{t + 1}\right) ^T +
\frac{1}{2} \boldsymbol{x}_{t+1}^T \bar A^T_t P_t^T + \\&&
\frac{1}{2} \boldsymbol{u}^T \left( P_t \bar B_{t} + \bar B_t^T P_t^T \right) +
\frac{1}{2} \boldsymbol{u}^T \left( \bar B^T_{t} P_t^T + P_t \bar B_t \right) + \\&&
\frac{1}{2} \left( P_t \boldsymbol{\bar c}_{t} \right)^T +
\frac{1}{2} \boldsymbol{\bar c}^T_{t} P_t^T +
\boldsymbol{u}^T R_t + \\&&
\left(\bar B^T_t \boldsymbol{q}_t\right)^T +
\boldsymbol{r}_t^T \\
&=&
\boldsymbol{x}_{t + 1}^T \bar A_t^T \left( \bar S_t + Q_t \right) \bar B_t +
\boldsymbol{u}^T \bar B_t^T \left( \bar S_t + Q_t \right) \bar B_t +
\boldsymbol{\bar c}_t^T \left( \bar S_t + Q_t \right) \bar B_t + \\&&
\boldsymbol{\bar s}_t ^T \bar B_t + \\&&
\boldsymbol{x}_{t+1}^T \bar A^T_t P_t^T + \\&&
\boldsymbol{u}^T \left( \bar B^T_{t} P_t^T + P_t \bar B_t \right) + \\&&
\boldsymbol{\bar c}^T_{t} P_t^T +
\boldsymbol{u}^T R_t + \\&&
\boldsymbol{q}_t^T \bar B_t +
\boldsymbol{r}_t^T \\
0 &=&
\boldsymbol{x}_{t + 1}^T \left( \bar A_t^T \left( \bar S_t + Q_t \right) \bar B_t + \bar A^T_t P_t^T \right) + \\&&
\boldsymbol{u}^T \left(
\bar B_t^T \left( \bar S_t + Q_t \right) \bar B_t +
\bar B^T_{t} P_t^T + P_t \bar B_t + R_t
\right) + \\&&
\boldsymbol{\bar c}_t^T \left( \bar S_t + Q_t \right) \bar B_t +
\boldsymbol{\bar s}_t^T \bar B_t +
\boldsymbol{\bar c}^T_{t} P_t^T +
\boldsymbol{q}_t^T \bar B_t +
\boldsymbol{r}_t^T \\
\end{array}$$
$$\begin{array}{rcl}
\boldsymbol{u}^T \left(
\bar B_t^T \left( \bar S_t + Q_t \right) \bar B_t +
\bar B^T_{t} P_t^T + P_t \bar B_t + R_t
\right)
&=&
- \boldsymbol{x}_{t + 1}^T \left( \bar A_t^T \left( \bar S_t + Q_t \right) \bar B_t + \bar A^T_t P_t^T \right) - \\&&
\left( \boldsymbol{\bar c}_t^T \left( \bar S_t + Q_t \right) \bar B_t +
\boldsymbol{\bar s}_t^T \bar B_t +
\boldsymbol{\bar c}^T_{t} P_t^T +
\boldsymbol{q}_t^T \bar B_t +
\boldsymbol{r}_t^T \right) \\
\left(
\bar B_t^T \left( \bar S_t + Q_t \right) \bar B_t +
\bar B^T_{t} P_t^T + P_t \bar B_t + R_t
\right) \boldsymbol{u}
&=&
- \left( \bar B_t^T \left( \bar S_t + Q_t \right) \bar A_t + P_t \bar A_t \right) \boldsymbol{x}_{t + 1} - \\&&
\left( \bar B_t^T \left( \bar S_t + Q_t \right) \boldsymbol{\bar c}_t +
\bar B_t^T \boldsymbol{\bar s}_t +
P_t \boldsymbol{\bar c}_{t} +
\bar B_t^T \boldsymbol{q}_t +
\boldsymbol{r}_t \right) \\
\end{array}$$
Some substitutions to use for simplifying:
$$\begin{array}{rcl}
\bar C_t &=& \bar B_t^T \left( \bar S_t + Q_t \right) \bar A_t + P_t \bar A_t \\
\bar E_t &=&
\bar B_t^T \left( \bar S_t + Q_t \right) \bar B_t +
\bar B^T_{t} P_t^T + P_t \bar B_t + R_t \\
\bar L_t &=& - \bar E_t^{-1} \bar C_t \\
\boldsymbol{\bar e}_t &=&
\bar B_t^T \left( \bar S_t + Q_t \right) \boldsymbol{\bar c}_t +
\bar B_t^T \boldsymbol{\bar s}_t +
P_t \boldsymbol{\bar c}_{t} +
\bar B_t^T \boldsymbol{q}_t +
\boldsymbol{r}_t \\
\boldsymbol{\bar l}_t &=& - \bar E_t^{-1} \boldsymbol{\bar e}_t \\
\bar D_t &=& \bar A_t^T \left( \bar S_t + Q_t \right) \bar A_t \\
\boldsymbol{\bar d}_t &=&
\bar A_t^T \left( \bar S_t + Q_t \right) \boldsymbol{\bar c}_t +
\bar A_t^T \left( \boldsymbol{\bar s}_t + \boldsymbol{q}_t \right) \\
\boldsymbol{u} &=& - \bar E_t^{-1} \bar C_t \boldsymbol{x}_{t + 1} - \bar E_t^{-1} \boldsymbol{\bar e}_t \\
\boldsymbol{u} &=& \bar L_t \boldsymbol{x}_{t + 1} + \boldsymbol{\bar l}_t \\
\bar E_t \boldsymbol{u} &=& -\bar C_t \boldsymbol{x}_{t + 1} - \boldsymbol{\bar e}_t
\end{array}$$
Now, let's solve for the new cost function.
$$\begin{array}{rcl}
\bar v_{t + 1}(\boldsymbol{x}_{t+1}, \boldsymbol{u})
&=& \frac{1}{2} \left(
\boldsymbol{x}_{t + 1}^T \bar A_t^T \left( \bar S_t + Q_t \right) \bar A_t \boldsymbol{x}_{t + 1} +
\boldsymbol{x}_{t + 1}^T \bar A_t^T \left( \bar S_t + Q_t \right) \bar B_t \boldsymbol{u} +
\boldsymbol{x}_{t + 1}^T \bar A_t^T \left( \bar S_t + Q_t \right) \boldsymbol{\bar c}_t + \right. \\&&
\boldsymbol{u}^T \bar B_t^T \left( \bar S_t + Q_t \right) \bar A_t \boldsymbol{x}_{t + 1} +
\boldsymbol{u}^T \bar B_t^T \left( \bar S_t + Q_t \right) \bar B_t \boldsymbol{u} +
\boldsymbol{u}^T \bar B_t^T \left( \bar S_t + Q_t \right) \boldsymbol{\bar c}_t + \\&&
\left. \boldsymbol{\bar c}_t^T \left( \bar S_t + Q_t \right) \bar A_t \boldsymbol{x}_{t + 1} +
\boldsymbol{\bar c}_t^T \left( \bar S_t + Q_t \right) \bar B_t \boldsymbol{u} +
\boldsymbol{\bar c}_t^T \left( \bar S_t + Q_t \right) \boldsymbol{\bar c}_t \right) + \\&&
\boldsymbol{x}_{t + 1}^T \bar A_t^T \boldsymbol{\bar s}_t +
\boldsymbol{u}^T \bar B_t^T \boldsymbol{\bar s}_t +
\boldsymbol{\bar c}_t^T \boldsymbol{\bar s}_t +
\bar s_t + \\ &&
\frac{1}{2} \left( \boldsymbol{u}^T P_t \bar A_{t} \boldsymbol{x}_{t + 1} +
\boldsymbol{u}^T P_t \bar B_{t} \boldsymbol{u} +
\boldsymbol{u}^T P_t \boldsymbol{\bar c}_{t} \right) + \\&&
\frac{1}{2} \left( \boldsymbol{x}_{t+1}^T \bar A^T_t P_t^T \boldsymbol{u} +
\boldsymbol{u}^T \bar B^T_{t} P_t^T \boldsymbol{u} +
\boldsymbol{\bar c}_t^T P^T_t \boldsymbol{u} \right) + \\&&
\frac{1}{2} \boldsymbol{u}^T R_t \boldsymbol{u} + \\&&
\boldsymbol{x}^T_{t + 1} \bar A^T_t \boldsymbol{q}_t +
\boldsymbol{u}^T \bar B^T_t \boldsymbol{q}_t +
\boldsymbol{\bar c}_t^T \boldsymbol{q}_t +
\boldsymbol{u}^T \boldsymbol{r}_t + q_t \\
\bar v_{t + 1}(\boldsymbol{x}_{t+1}, \boldsymbol{u})
&=& \frac{1}{2} \left(
\boldsymbol{x}_{t + 1}^T \bar D_t \boldsymbol{x}_{t + 1} +
\boldsymbol{x}_{t + 1}^T \bar C_t^T \boldsymbol{u} +
\boldsymbol{u}^T \bar C_t \boldsymbol{x}_{t + 1} +
\boldsymbol{u}^T \bar E_t \boldsymbol{u} \right) + \\&&
\boldsymbol{x}_{t + 1}^T \boldsymbol{\bar d}_t +
\boldsymbol{u}^T \boldsymbol{\bar e}_t + \\&&
\frac{1}{2} \boldsymbol{\bar c}_t^T \left( \bar S_t + Q_t \right) \boldsymbol{\bar c}_t +
\boldsymbol{\bar c}_t^T \boldsymbol{\bar s}_t + \boldsymbol{\bar c}_t^T \boldsymbol{q}_t + \bar s_t + q_t \\
\bar v_{t + 1}(\boldsymbol{x}_{t+1})
&=& \frac{1}{2} \left(
\boldsymbol{x}_{t + 1}^T \bar D_t \boldsymbol{x}_{t + 1} + \right. \\ &&
\boldsymbol{x}_{t + 1}^T \bar C_t^T \left( -\bar E_t^{-1} \bar C_t \boldsymbol{x}_{t + 1} - \bar E_t^{-1} \boldsymbol{\bar e}_t \right) + \\&&
\left( -\bar E_t^{-1} \bar C_t \boldsymbol{x}_{t + 1} - \bar E_t^{-1} \boldsymbol{\bar e}_t \right)^T \bar C_t \boldsymbol{x}_{t + 1} + \\&&
\left. \left( -\bar E_t^{-1} \bar C_t \boldsymbol{x}_{t + 1} - \bar E_t^{-1} \boldsymbol{\bar e}_t \right)^T \bar E_t \left( -\bar E_t^{-1} \bar C_t \boldsymbol{x}_{t + 1} - \bar E_t^{-1} \boldsymbol{\bar e}_t \right) \right) + \\&&
\boldsymbol{x}_{t + 1}^T \boldsymbol{\bar d}_t +
\left( -\bar E_t^{-1} \bar C_t \boldsymbol{x}_{t + 1} - \bar E_t^{-1} \boldsymbol{\bar e}_t \right)^T \boldsymbol{\bar e}_t + \\&&
\frac{1}{2} \boldsymbol{\bar c}_t^T \left( \bar S_t + Q_t \right) \boldsymbol{\bar c}_t +
\boldsymbol{\bar c}_t^T \boldsymbol{\bar s}_t + \boldsymbol{\bar c}_t^T \boldsymbol{q}_t + \bar s_t + q_t \\
\bar v_{t + 1}(\boldsymbol{x}_{t+1})
&=& \frac{1}{2}
\boldsymbol{x}_{t + 1}^T \left(\bar D_t - \bar C_t^T \bar E_t^{-1} \bar C_t \right) \boldsymbol{x}_{t + 1} + \\ &&
\boldsymbol{x}_{t + 1}^T \left(\boldsymbol{\bar d}_t
- \bar C_t^T \bar E_t^{-1} \boldsymbol{\bar e}_t \right)\\&&
- \frac{1}{2} \boldsymbol{\bar e}_t^T \bar E_t^{-1} \boldsymbol{\bar e}_t +
\frac{1}{2} \boldsymbol{\bar c}_t^T \left( \bar S_t + Q_t \right) \boldsymbol{\bar c}_t +
\boldsymbol{\bar c}_t^T \boldsymbol{\bar s}_t + \boldsymbol{\bar c}_t^T \boldsymbol{q}_t + \bar s_t + q_t \\
\end{array}$$
Ok, let's now pull out the 3 variables of interest and do further simplification.
$$\begin{array}{rcl}
\bar v_{t + 1}(\boldsymbol{x}_{t+1}) &=& \frac{1}{2} \boldsymbol{x}_{t + 1}^T \bar S_{t + 1} \boldsymbol{x}_{t + 1} + \boldsymbol{x}_{t + 1}^T \boldsymbol{\bar s}_{t + 1} + \bar s_{t+1} \\
\bar S_{t + 1} &=& \bar D_t - \bar C_t^T \bar E_t^{-1} \bar C_t \\
\boldsymbol{\bar s}_{t + 1} &=&
\left(\boldsymbol{\bar d}_t - \bar C_t^T \bar E_t^{-1} \boldsymbol{\bar e}_t \right)\\
\bar s_{t+1} &=&
- \frac{1}{2} \boldsymbol{\bar e}_t^T \bar E_t^{-1} \boldsymbol{\bar e}_t +
\frac{1}{2} \boldsymbol{\bar c}_t^T \left( \bar S_t + Q_t \right) \boldsymbol{\bar c}_t +
\boldsymbol{\bar c}_t^T \boldsymbol{\bar s}_t + \boldsymbol{\bar c}_t^T \boldsymbol{q}_t + \bar s_t + q_t \\
\end{array}$$
\newpage
\section{Detailed work for a few transformations}
$$\begin{array}{l}
\begin{bmatrix} \boldsymbol{x} \\ \boldsymbol{u} \end{bmatrix}^T
\begin{bmatrix} Q_{t} & P_{t}^T \\ P_{t} & R_{t} \end{bmatrix}
\begin{bmatrix} \boldsymbol{x} \\ \boldsymbol{u} \end{bmatrix} \\
\begin{bmatrix} \boldsymbol{x}_1 & \boldsymbol{x}_2 & \boldsymbol{u}_1 & \boldsymbol{u}_2 \end{bmatrix}
\left[\begin{array}{cc|cc}
Q_{t11} & Q_{t12} & P_{t11} & P_{t21} \\
Q_{t21} & Q_{t22} & P_{t12} & P_{t22} \\
\hline
P_{t11} & P_{t12} & R_{t11} & R_{t12} \\
P_{t21} & P_{t22} & R_{t21} & R_{t22} \\
\end{array}\right]
\begin{bmatrix} \boldsymbol{x}_1 \\ \boldsymbol{x}_2 \\ \boldsymbol{u}_1 \\ \boldsymbol{u}_2 \end{bmatrix}
\\
\begin{bmatrix}
\begin{bmatrix} \boldsymbol{x}_1 \\ \boldsymbol{x}_2 \\ \boldsymbol{u}_1 \\ \boldsymbol{u}_2 \end{bmatrix} \cdot
\begin{bmatrix} Q_{t11} \\ Q_{t21} \\ P_{t11} \\ P_{t21} \end{bmatrix} &
\begin{bmatrix} \boldsymbol{x}_1 \\ \boldsymbol{x}_2 \\ \boldsymbol{u}_1 \\ \boldsymbol{u}_2 \end{bmatrix} \cdot
\begin{bmatrix} Q_{t12} \\ Q_{t22} \\ P_{t12} \\ P_{t22} \end{bmatrix} &
\begin{bmatrix} \boldsymbol{x}_1 \\ \boldsymbol{x}_2 \\ \boldsymbol{u}_1 \\ \boldsymbol{u}_2 \end{bmatrix} \cdot
\begin{bmatrix} P_{t11} \\ P_{t12} \\ R_{t11} \\ R_{t21} \end{bmatrix} &
\begin{bmatrix} \boldsymbol{x}_1 \\ \boldsymbol{x}_2 \\ \boldsymbol{u}_1 \\ \boldsymbol{u}_2 \end{bmatrix} \cdot
\begin{bmatrix} P_{t21} \\ P_{t22} \\ R_{t12} \\ R_{t22} \end{bmatrix} &
\end{bmatrix}
\begin{bmatrix} \boldsymbol{x}_1 \\ \boldsymbol{x}_2 \\ \boldsymbol{u}_1 \\ \boldsymbol{u}_2 \end{bmatrix}
\\
\begin{bmatrix}
\begin{bmatrix} \boldsymbol{x}_1 \\ \boldsymbol{x}_2 \end{bmatrix} \cdot
\begin{bmatrix} Q_{t11} \\ Q_{t21} \end{bmatrix}
\begin{bmatrix} \boldsymbol{x}_1 \\ \boldsymbol{x}_2 \end{bmatrix} \cdot
\begin{bmatrix} Q_{t12} \\ Q_{t22} \end{bmatrix}
\begin{bmatrix} \boldsymbol{x}_1 \\ \boldsymbol{x}_2 \end{bmatrix} \cdot
\begin{bmatrix} P_{t11} \\ P_{t12} \end{bmatrix}
\begin{bmatrix} \boldsymbol{x}_1 \\ \boldsymbol{x}_2 \end{bmatrix} \cdot
\begin{bmatrix} P_{t21} \\ P_{t22} \end{bmatrix}
\end{bmatrix}
\begin{bmatrix} \boldsymbol{x}_1 \\ \boldsymbol{x}_2 \\ \boldsymbol{u}_1 \\ \boldsymbol{u}_2 \end{bmatrix} + \\ \quad
\begin{bmatrix}
\begin{bmatrix} \boldsymbol{u}_1 \\ \boldsymbol{u}_2 \end{bmatrix} \cdot
\begin{bmatrix} P_{t11} \\ P_{t21} \end{bmatrix} &
\begin{bmatrix} \boldsymbol{u}_1 \\ \boldsymbol{u}_2 \end{bmatrix} \cdot
\begin{bmatrix} P_{t12} \\ P_{t22} \end{bmatrix} &
\begin{bmatrix} \boldsymbol{u}_1 \\ \boldsymbol{u}_2 \end{bmatrix} \cdot
\begin{bmatrix} R_{t11} \\ R_{t21} \end{bmatrix} &
\begin{bmatrix} \boldsymbol{u}_1 \\ \boldsymbol{u}_2 \end{bmatrix} \cdot
\begin{bmatrix} R_{t12} \\ R_{t22} \end{bmatrix} &
\end{bmatrix}
\begin{bmatrix} \boldsymbol{x}_1 \\ \boldsymbol{x}_2 \\ \boldsymbol{u}_1 \\ \boldsymbol{u}_2 \end{bmatrix}
\\
\begin{bmatrix} \begin{bmatrix} \boldsymbol{x}_1 \\ \boldsymbol{x}_2 \end{bmatrix} \cdot
\begin{bmatrix} Q_{t11} \\ Q_{t21} \end{bmatrix} &
\begin{bmatrix} \boldsymbol{x}_1 \\ \boldsymbol{x}_2 \end{bmatrix} \cdot
\begin{bmatrix} Q_{t12} \\ Q_{t22} \end{bmatrix}\end{bmatrix}
\begin{bmatrix} \boldsymbol{x}_1 \\ \boldsymbol{x}_2 \end{bmatrix} +
\begin{bmatrix} \begin{bmatrix} \boldsymbol{x}_1 \\ \boldsymbol{x}_2 \end{bmatrix} \cdot
\begin{bmatrix} P_{t11} \\ P_{t12} \end{bmatrix} &
\begin{bmatrix} \boldsymbol{x}_1 \\ \boldsymbol{x}_2 \end{bmatrix} \cdot
\begin{bmatrix} P_{t21} \\ P_{t22} \end{bmatrix}\end{bmatrix}
\begin{bmatrix} \boldsymbol{u}_1 \\ \boldsymbol{u}_2 \end{bmatrix} + \\ \quad
\begin{bmatrix} \begin{bmatrix} \boldsymbol{u}_1 \\ \boldsymbol{u}_2 \end{bmatrix} \cdot
\begin{bmatrix} P_{t11} \\ P_{t21} \end{bmatrix} &
\begin{bmatrix} \boldsymbol{u}_1 \\ \boldsymbol{u}_2 \end{bmatrix} \cdot
\begin{bmatrix} P_{t12} \\ P_{t22} \end{bmatrix}\end{bmatrix}
\begin{bmatrix} \boldsymbol{x}_1 \\ \boldsymbol{x}_2 \end{bmatrix} +
\begin{bmatrix} \begin{bmatrix} \boldsymbol{u}_1 \\ \boldsymbol{u}_2 \end{bmatrix} \cdot
\begin{bmatrix} R_{t11} \\ R_{t21} \end{bmatrix} &
\begin{bmatrix} \boldsymbol{u}_1 \\ \boldsymbol{u}_2 \end{bmatrix} \cdot
\begin{bmatrix} R_{t12} \\ R_{t22} \end{bmatrix}\end{bmatrix}
\begin{bmatrix} \boldsymbol{u}_1 \\ \boldsymbol{u}_2 \end{bmatrix}
\\
\boldsymbol{x}^T Q_t \boldsymbol{x} + \boldsymbol{u}^T P_t \boldsymbol{x} + \boldsymbol{x}^T P_t^T \boldsymbol{u} + \boldsymbol{u}^T R_t \boldsymbol{u}
\end{array}$$
\\ \\
$$\begin{array}{l}
\begin{bmatrix} \boldsymbol{x} \\ \boldsymbol{u} \end{bmatrix}^T
\begin{bmatrix} \boldsymbol{q}_{t} \\ \boldsymbol{r}_{t} \end{bmatrix}
\\
\begin{bmatrix} \boldsymbol{x}_1 & \boldsymbol{x}_2 & \boldsymbol{u}_1 & \boldsymbol{u}_2 \end{bmatrix}
\begin{bmatrix} \boldsymbol{q}_{t1} \\ \boldsymbol{q}_{t2} \\ \boldsymbol{r}_{t1} \\ \boldsymbol{r}_{t1} \end{bmatrix}
\\
\boldsymbol{x}^T \boldsymbol{q}_t + \boldsymbol{u}^T \boldsymbol{r}_t
\end{array}$$
\end{document}