Updatable Covariance

Make covariance matrix sequentially updatable.

The goal is that, instead of performing a conditioning on lots of measurement in one go, we can instead chunk the data and perform several conditioning in series, updating the covariance matrix along the way.

The CRUX of this module is that it handles covariance matrices that are too large to fit in memory.

This is defined in the document “05-12-2019: cov_update_implementation”.

Remark: Someday, we might want to switch to KeOps for the covariance matrix.

Concept

Let F_1,…, F_n be measurement operators/forwards. We want to compute the conditional covariance corresponding to those measurements. We could stack the matrices an just condition on one big measurement/forward. This would require us to inverse a matrix the size of the whole dataset.

Alsok we work in the big model framework, i.e. when the model discretization is too fine to allow covariance matrices to ever sit in memory (contrast this with the big data settting.

Say we have ldsajfldsafjf complete thisj

  • Covariance Pushforward

\[C^{#}_n := C_{n-1} F_n^t\]
  • Inversion Operator

\[R^{-1}_n := \left(F_n C_{n-1}F_n^t + \Delta_{d_n} \right)^{-1}\]

Module implementation Details