Lower triangular Cholesky decomposition. More...
#include <shark/LinAlg/BLAS/decompositions.hpp>
Public Member Functions | |
cholesky_decomposition () | |
template<class E > | |
cholesky_decomposition (matrix_expression< E, device_type > const &e) | |
template<class E > | |
void | decompose (matrix_expression< E, device_type > const &e) |
MatrixStorage const & | lower_factor () const |
auto | upper_factor () const -> decltype(trans(std::declval< MatrixStorage const &>())) |
template<class MatB > | |
void | solve (matrix_expression< MatB, device_type > &B, left) const |
template<class MatB > | |
void | solve (matrix_expression< MatB, device_type > &B, right) const |
template<class VecB , bool Left> | |
void | solve (vector_expression< VecB, device_type > &b, system_tag< Left >) const |
template<class VecV > | |
void | update (value_type alpha, value_type beta, vector_expression< VecV, device_type > const &v) |
Updates a covariance factor by a rank one update. More... | |
template<typename Archive > | |
void | serialize (Archive &ar, const std::size_t version) |
Lower triangular Cholesky decomposition.
Given an \( m \times m \) symmetric positive definite matrix \(A\), represents the lower triangular matrix \(L\) such that \(A = LL^T \).
This decomposition is a corner block of many linear algebra routines especially for solving symmetric positive definite systems of equations.
Unlike many other decompositions, this decomposition is fast, numerically stable and can be updated when the original matrix is changed (rank-k updates of the form A<-alpha A + VCV^T)
Definition at line 72 of file decompositions.hpp.
|
inline |
Definition at line 81 of file decompositions.hpp.
|
inline |
Definition at line 83 of file decompositions.hpp.
|
inline |
Definition at line 88 of file decompositions.hpp.
|
inline |
Definition at line 94 of file decompositions.hpp.
Referenced by shark::NegativeGaussianProcessEvidence< InputType, OutputType, LabelType >::eval(), and shark::NegativeGaussianProcessEvidence< InputType, OutputType, LabelType >::evalDerivative().
|
inline |
Definition at line 174 of file decompositions.hpp.
|
inline |
Definition at line 103 of file decompositions.hpp.
Referenced by shark::NegativeGaussianProcessEvidence< InputType, OutputType, LabelType >::evalDerivative().
|
inline |
Definition at line 108 of file decompositions.hpp.
|
inline |
Definition at line 113 of file decompositions.hpp.
|
inline |
Updates a covariance factor by a rank one update.
Let \( A=LL^T \) be a matrix with its lower cholesky factor. Assume we want to update A using a simple rank-one update \( A = \alpha A+ \beta vv^T \). This invalidates L and it needs to be recomputed which is O(n^3). instead we can update the factorisation directly by performing a similar, albeit more complex algorithm on L, which can be done in O(L^2).
Alpha is not required to be positive, but if it is not negative, one has to be carefull that the update would keep A positive definite. Otherwise the decomposition does not exist anymore and an exception is thrown.
v | the update vector |
alpha | the scaling factor, must be positive. |
beta | the update factor. it Can be positive or negative |
Definition at line 134 of file decompositions.hpp.
|
inline |
Definition at line 98 of file decompositions.hpp.