File dense_cholesky_solver.h#
-
namespace sym
-
template<typename Scalar>
class DenseCholeskySolver - #include <dense_cholesky_solver.h>
A thin wrapper around Eigen::LDLT for use in nonlinear solver classes like sym::LevenbergMarquardtSolver.
Public Types
-
using MatrixType = Eigen::Matrix<Scalar, Eigen::Dynamic, Eigen::Dynamic>
-
using RhsType = Eigen::Matrix<Scalar, Eigen::Dynamic, 1>
Public Functions
-
inline bool Factorize(const MatrixType &A)
Decompose A into A = P^T * L * D * L^T * P and store internally.
- Pre:
A is a symmetric positive definite matrix.
- Returns:
true if factorization succeeded, and false if failed.
-
template<typename Rhs>
inline RhsType Solve(const Eigen::MatrixBase<Rhs> &b) const - Returns:
x for A x = b, where x and b are dense
- Pre:
this->Factorize has already been called and succeeded.
-
template<typename Rhs>
inline void SolveInPlace(Eigen::MatrixBase<Rhs> &b) const Solves in place for x in A x = b, where x and b are dense
- Pre:
this->Factorize has already been called and succeeded.
-
inline auto L() const
- Returns:
the lower triangular matrix L such that P^T * L * D * L^T * P = A, where A is the last matrix to have been factorized with this->Factorize and D is a diagonal matrix with positive diagonal entries, and P is a permutation matrix.
- Pre:
this->Factorize has already been called and succeeded.
-
inline auto D() const
- Returns:
the diagonal matrix D such that P^T * L * D * L^T * P = A, where A is the last matrix to have been factorized with this->Factorize, L is lower triangular with unit diagonal, and P is a permutation matrix
- Pre:
this->Factorize has already been called and succeeded.
-
inline auto Permutation() const
- Returns:
the permutation matrix P such that P^T * L * D * L^T * P = A, where A is the last matrix to have been factorized with this->Factorize, L is lower triangular with unit diagonal, and D is a diagonal matrix
- Pre:
this->Factorize has already been called and succeeded.
-
template<typename Derived>
inline void AnalyzeSparsityPattern(const Eigen::EigenBase<Derived>&) Defined to satisfy interface. No analysis is needed so is a no-op.
Private Members
-
Eigen::LDLT<MatrixType> ldlt_#
-
using MatrixType = Eigen::Matrix<Scalar, Eigen::Dynamic, Eigen::Dynamic>
-
template<typename Scalar>