Skip to article frontmatterSkip to article content
Site not loading correctly?

This may be due to an incorrect BASE_URL configuration. See the MyST Documentation for reference.

3DVar on Lorenz-63 — analysis + free forecast

Same cost function as OI / BLUE — but minimised by an iterative optimiser (optimistix.BFGS) instead of a closed-form Kalman gain. In the linear-Gaussian limit the two methods produce the identical answer (Decision D14 invariant). We verify that here and then free-forecast the analysis to 10 time units to see the chaotic divergence.

1. Shared problem

2. Build 3DVar

3DVar rmse_assim    = 15.110
3DVar rmse_forecast = 1.094
3DVar rmse_total    = 3.573
3DVar runtime       = 1232.0 ms

3. Trajectories

<Figure size 1100x650 with 3 Axes>

4. RMSE(t)

<Figure size 1000x350 with 1 Axes>

5. Discussion

3DVar’s iterative solve recovers the same per-time-step analysis as OI in the linear-Gaussian limit (Decision D14 invariant). RMSE numbers match OI to within solver tolerance. The free-forecast story is therefore identical: a noisy launch state from a method that doesn’t propagate information through time gives a forecast that lags truth and slowly diverges.

The point of 3DVar in the vardax hierarchy isn’t speed: it’s that nonlinear observation operators become straightforward — swap LinearObs for AveragingKernel and the same iterative cost still minimises. That generality is wasted on this linear-Gaussian L63 problem; see 03_strong_4dvar for the dynamics constraint that finally lets the forecast horizon extend past one Lyapunov time.