The prediction step we derived ($\mathbf{x}_k = \mathbf{F}_{k-1} \mathbf{x}_{k-1} + \mathbf{G} \mathbf{u}_{k-1}$) assumes our model is perfect: that the system is truly linear and that the acceleration $a_{k-1}$ is known and perfectly constant over the interval $\Delta t$.
In reality, neither of these is true. Process Noise accounts for unmodeled disturbances and inaccuracies.
The general prediction equation including model imperfections is:
$$\mathbf{x}_k = \mathbf{F}_{k-1} \mathbf{x}_{k-1} + \mathbf{G}_{k-1} \mathbf{u}_{k-1} + \mathbf{L}_{k-1} \mathbf{w}_{k-1}$$
Where:
What Does Process Noise Represent?
The term $\mathbf{w}_{k-1}$ represents any effect that causes the true state of the system to deviate from our model's prediction, including:
For our 1D point mass, we have only one input (acceleration) and one noise source (acceleration jitter). Here, we assume the noise enters the system through the exact same physical "door" as the control command, meaning $\mathbf{L} = \mathbf{G}$.
The 1D Prediction Equation:
$$\mathbf{x}_k = \mathbf{F} \mathbf{x}_{k-1} + \mathbf{G} (u_{k-1} + w_{k-1})$$
Here, $u_{k-1} = a_{k-1}$ and $w_{k-1}$ are scalars ($1 \times 1$), while $\mathbf{G}$ is the $2 \times 1$ matrix that maps that acceleration into position and velocity.
The acceleration noise is a random variable, drawn from a Gaussian distribution with mean $0$ and variance $\sigma_a^2$. Notated as $w_{k-1} \sim \mathcal{N}(0, \sigma_a^2)$. $\sigma_a^2$ is the variance of the acceleration noise.
Even though $w_{k-1}$ is a scalar, its effect on the state is 2-dimensional. While $w$ is just a "jitter in acceleration," that jitter causes a "jitter in position" and a "jitter in velocity."
$\mathbf{Q}$ defines:
$\mathbf{Q}$ is the Covariance Matrix of the noise after it has affected the state. The Kalman Filter tracks this effect using the matrix $\mathbf{Q}$.
For a scalar noise $w$ entering through matrix $\mathbf{G}$, the definition is:
$$\mathbf{Q} = \mathbb{E}[(\mathbf{G}w)(\mathbf{G}w)^T] = \mathbf{G} \mathbb{E}[w^2] \mathbf{G}^T = \mathbf{G} \sigma_a^2 \mathbf{G}^T$$
Substituting our values:
$$\mathbf{Q} = \begin{bmatrix} \frac{1}{2}(\Delta t)^2 \\ \Delta t \end{bmatrix} \begin{bmatrix} \frac{1}{2}(\Delta t)^2 & \Delta t \end{bmatrix} \sigma_a^2 = \begin{bmatrix} \frac{1}{4}(\Delta t)^4 & \frac{1}{2}(\Delta t)^3 \\ \frac{1}{2}(\Delta t)^3 & (\Delta t)^2 \end{bmatrix} \sigma_a^2$$
The vector $\mathbf{x}_k$ is our best guess of the state, but we know it isn't perfect. To handle this, we use the State Covariance Matrix ($\mathbf{P}$).
The matrix $\mathbf{P}$ represents the "error budget" of our estimate. It quantifies how much we trust our current values for position and velocity. For our 1D point mass (which has a 2D state: position and velocity), $\mathbf{P}$ is a $2 \times 2$ matrix:
$$\mathbf{P} = \begin{bmatrix} \sigma_p^2 & \sigma_{pv} \\ \sigma_{vp} & \sigma_v^2 \end{bmatrix}$$
We update our uncertainty State Covariance Matrix from the previous time step ($k-1$) to the current time ($k$) using:
$$\mathbf{P}_k^- = \mathbf{F} \mathbf{P}_{k-1}^+ \mathbf{F}^T + \mathbf{Q}$$
Here, we assume that $\mathbf{Q}$ is a constant matrix. In more advanced systems (like those with changing time steps $\Delta t$), $\mathbf{Q}_k$ may also get a time index $k$, but the underlying "stretch and grow" logic remains identical.
The Projection ($\mathbf{F} \mathbf{P}_{k-1}^+ \mathbf{F}^T$)
This term takes our existing uncertainty and moves it forward in time using our physics model ($\mathbf{F}$).
The Injection ($\mathbf{Q}$)
The matrix $\mathbf{Q}$ represents the uncertainty growth caused by random noise (the "jitters" and "bumps" discussed in the Process Noise section).
Every time we run the prediction step:
Without a measurement update to "shrink" this bubble back down, the filter would eventually become so uncertain that the prediction becomes useless.