The Analog Kalman Filter
Build the Kalman update by drawing the springs and reducing them.
Here is the Kalman smoother of a local-level model. A chain of beads, each an estimate of the state at one time, tied down to its noisy observation and to its neighbours by springs. Drag a point, or add one, and the whole path re-settles. The rest of this page takes one link of this chain apart with two spring moves.
A Gaussian belief is a spring. Its negative log-density is a quadratic potential well, so a belief about $z$ centred at $x$ with precision $k$ has energy
Stiffness is precision, energy is a negative log-likelihood, and the estimate is where the forces balance. Two moves reduce any such network to its answer. Springs in parallel add their stiffnesses and settle at the centre of mass. Springs in series compose to the reduced mass $k_1 k_2/(k_1+k_2)$. The whole of what follows is those two moves on one picture.
The two moves
Before chasing anything, watch the two moves hold. Drag the stiffnesses. On both rails the particle settles on the same dashed line, so the single reduced spring really is the pair it replaces.
Series is one reduced-mass spring. A channel of two springs, $k_1$ then $k_2$ through a free joint, pulls exactly as a single spring of stiffness $k_1 k_2/(k_1+k_2)$. Each particle is also held by a fixed reference spring on the left, so the rest point actually depends on how hard the channel pulls.
Parallel is one spring at the centre of mass. Two springs on one particle, to anchors left and right, pull exactly as a single spring of stiffness $k_1+k_2$ anchored at their stiffness-weighted centre.
Those are the rules. Everything below is chasing them across a bigger diagram.
The model
Take the hierarchical model behind the Kalman filter. The location $\mu$ has a Gaussian prior. A latent state $x$ scatters around $\mu$. The measurement $y$ is a noisy reading of $x$:
Draw it. The prior ties $\mu$ to an anchor at $m$ with a spring of stiffness $P^{-1}$. The measurement reaches $\mu$ through a channel: a spring $\phi$ from the reading $y$ to the latent $x$, and a spring $\rho$ from $x$ on to $\mu$. Two springs in series. Then reduce the picture from top to bottom.
The channel is two springs in series, so the first move collapses it to a single spring of stiffness $\tilde\phi = \phi\rho/(\phi+\rho)$, the reduced mass, and the latent is gone. The prior and this reduced measurement now pull $\mu$ in parallel, so the second move sends $\mu$ to their centre of mass. That rest point is the posterior:
Stiffen the channel. As $\rho \to \infty$ the reduced mass $\tilde\phi = \phi\rho/(\phi+\rho) \to \phi$, and the posterior is the plain measurement update. The same posterior falls out of Bayes' theorem after a page of completing the square. Here it is two moves on a diagram. The fusion demo is the parallel move on its own; the reduced-mass demo is the series move on its own.
The usual explanation the standard Kalman filter, derived in full
For contrast, the textbook derivation, with no springs. Take the linear-Gaussian state-space model
and carry the filtered posterior $x_{t-1}\mid y_{1:t-1} \sim \mathcal N(m_{t-1}, P_{t-1})$.
Predict. A linear image of a Gaussian is Gaussian, so pushing the state through the dynamics gives the one-step prior
Update. Bayes multiplies that prior by the likelihood of the new measurement. Dropping the time subscripts on the right,
The exponent is quadratic in $x$, so the posterior is Gaussian. Expand both quadratics and keep only the terms that contain $x$:
Add the two. The whole exponent is $-\tfrac12\big(x^\top A x - 2\,x^\top b\big)$ up to a constant, with
Complete the square in the vector $x$, using the identity $x^\top A x - 2\,x^\top b = (x - A^{-1} b)^\top A\,(x - A^{-1} b) - b^\top A^{-1} b$:
That is a Gaussian with precision $A$ and mean $A^{-1}b$. So the posterior precision and mean, in information form, are
To avoid inverting a matrix the size of the state, apply the Woodbury identity to $P^{-1} = (P^-)^{-1} + H^\top R^{-1} H$. It moves the inverse into the smaller measurement space:
Write the Kalman gain $K = P^- H^\top (H P^- H^\top + R)^{-1}$. Then $P = (I - KH)\,P^-$, and a standard rearrangement gives $P H^\top R^{-1} = K$, which collapses the information-form mean to the innovation update:
That is one step: predict to $(m^-, P^-)$, update to $(m, P)$ with gain $K$, repeat for each $t$. The single-observation case drawn above is $F = H = 1$, with the reduced mass standing in for the noisy channel. Several equation lines and a matrix-inversion lemma, against two moves on a picture.
Through time
A filter runs this update tick by tick, and between ticks the state drifts. Process noise of variance $Q$ is one more series spring, of stiffness $q = Q^{-1}$, in the chain from one time to the next. So the filter alternates the same two moves. An update adds a measurement spring in parallel and the mass grows. A prediction sends the state through the process-noise spring in series and the mass shrinks. Evidence accretes, staleness erodes. Kalman wrote this down in 1960. Watch it march in the filter-through-time demo.
Beyond one dimension
None of this was really scalar. In $n$ dimensions stiffness is a precision matrix, springs pull along vectors, and the two moves become $\Sigma$-weighted averages and matrix reduced masses. Pin part of a spring network and the rest settles at the conditional mean. Let a node float free and the remaining precision is a Schur complement. Try it on a graph.
Where it holds
The reduction works because every energy here is quadratic, which means every belief is Gaussian and every link is linear. A non-Gaussian likelihood is a non-Hookean spring. Forces still balance at a mode, so the estimate survives, but the two reduction moves do not. The analogy ends where conjugacy does.