EmrysFilter 0.1.0
State estimation utilities in C++23 using Eigen
Loading...
Searching...
No Matches
Emrys::roots::Cholesky Struct Reference

Cholesky axes: the lower Cholesky factor \( L \), \( L L^T = P \), by Eigen's LLT, which fails on a covariance that is not positive definite. More...

#include <EmrysFilter/Distributions/Roots.h>

Public Member Functions

template<typename Derived>
std::expected< internal::SquareMatrixOf< Derived >, GaussianError > root (Eigen::MatrixBase< Derived > const &cov) const
template<typename Derived>
std::expected< internal::SquareMatrixOf< Derived >, GaussianError > rootFromFactor (Eigen::MatrixBase< Derived > const &factor) const

Static Public Attributes

static constexpr bool canFail = true
 a covariance that is not positive definite has no Cholesky factor

Detailed Description

Cholesky axes: the lower Cholesky factor \( L \), \( L L^T = P \), by Eigen's LLT, which fails on a covariance that is not positive definite.

The unique root of a positive definite matrix that is lower triangular with a positive diagonal, an analytic function of \( P \), the cheapest to take, and the factor the square-root forms hold, so that every form spreads the same points (decisions.md [sigma-point-axes]). Column \( j \) is the variation of coordinates \( j \) onward given the earlier ones, so the axes depend on the order of the coordinates.

From a factor it triangularizes, which never fails: a factor of a singular matrix gives a root with a zero on its diagonal, where the covariance's factorization fails and a list moves on to its fallbacks. A covariance with NaN or infinity in its lower triangle fails with GaussianError::NonFinite, one that is not positive definite with GaussianError::NotPositiveDefinite.

See also
cholesky(), Golub and Van Loan (2013), Cholesky decomposition

Member Function Documentation

◆ root()

template<typename Derived>
std::expected< internal::SquareMatrixOf< Derived >, GaussianError > Emrys::roots::Cholesky::root ( Eigen::MatrixBase< Derived > const & cov) const
inlinenodiscard
Returns
the lower Cholesky factor of cov, of which only the lower triangle is read

◆ rootFromFactor()

template<typename Derived>
std::expected< internal::SquareMatrixOf< Derived >, GaussianError > Emrys::roots::Cholesky::rootFromFactor ( Eigen::MatrixBase< Derived > const & factor) const
inlinenodiscard
Returns
the lower-triangular root of \( F F^T \) for factor, by triangularization

The documentation for this struct was generated from the following file:
  • EmrysFilter/Distributions/Roots.h