1#ifndef SimTK_LINEAR_ALGEBRA_H_
2#define SimTK_LINEAR_ALGEBRA_H_
79 template <class ELT>
void factor( const
Matrix_<ELT>& m );
81 template <class ELT>
void solve( const
Vector_<ELT>& b,
Vector_<ELT>& x ) const;
83 template <class ELT>
void solve( const
Matrix_<ELT>& b,
Matrix_<ELT>& x ) const;
86 template <class ELT>
void getL(
Matrix_<ELT>& l ) const;
88 template <class ELT>
void getU(
Matrix_<ELT>& u ) const;
90 template < class ELT >
void inverse(
Matrix_<ELT>& m ) const;
93 bool isSingular() const;
95 int getSingularIndex() const;
103class FactorLLTRepBase;
142class FactorQTZRepBase;
230class FactorSVDRepBase;
258 template < class ELT >
void factor( const
Matrix_<ELT>& m );
261 template < class ELT >
void factor( const
Matrix_<ELT>& m,
float rcond );
264 template < class ELT >
void factor( const
Matrix_<ELT>& m,
double rcond );
267 template < class T >
void getSingularValuesAndVectors(
Vector_<typename
CNT<T>::TReal>& values,
270 template < class T >
void getSingularValues(
Vector_<T>& values);
275 template < class ELT >
void inverse(
Matrix_<ELT>& m );
Includes internal headers providing declarations for the basic SimTK Core classes,...
This is the header file that every Simmath compilation unit should include first.
#define SimTK_SIMMATH_EXPORT
Definition SimTKmath/include/simmath/internal/common.h:64
Specialized information about Composite Numerical Types which allows us to define appropriate templat...
Definition CompositeNumericalTypes.h:136
K::TReal TReal
Definition CompositeNumericalTypes.h:141
Smart pointer with deep copy semantics.
Definition ClonePtr.h:55
Class to compute Eigen values and Eigen vectors of a matrix.
Definition LinearAlgebra.h:190
ClonePtr< EigenRepBase > rep
Definition LinearAlgebra.h:226
Eigen & operator=(Eigen &&rhs) noexcept
Eigen & operator=(const Eigen &rhs)
void getAllEigenValues(Vector_< T > &values)
get all the eigen values of a matrix
void getFewEigenVectors(Matrix_< T > &vectors, int ilow, int ihi)
get a few eigen vectors of a symmetric matrix which are within a range of indices
Eigen(Eigen &&c) noexcept
void getFewEigenValues(Vector_< T > &values, typename CNT< T >::TReal rlow, typename CNT< T >::TReal rhi)
get a few eigen values of a symmetric matrix which are within a range of eigen values
void factor(const Matrix_< ELT > &m)
supply matrix which eigen values will be computed for
void getFewEigenValuesAndVectors(Vector_< VAL > &values, Matrix_< VEC > &vectors, int ilow, int ihi)
get a few eigen values and eigen vectors of a symmetric matrix which are within a range of indices
Eigen(const Matrix_< ELT > &m)
create a default eigen class
void getFewEigenValuesAndVectors(Vector_< VAL > &values, Matrix_< VEC > &vectors, typename CNT< VAL >::TReal rlow, typename CNT< VAL >::TReal rhi)
get a few eigen values and eigen vectors of a symmetric matrix which are within a range of eigen valu...
void getFewEigenVectors(Matrix_< T > &vectors, typename CNT< T >::TReal rlow, typename CNT< T >::TReal rhi)
get a few eigen vectors of a symmetric matrix which are within a range of eigen values
void getFewEigenValues(Vector_< T > &values, int ilow, int ihi)
get a few eigen values of a symmetric matrix which are within a range of indices
void getAllEigenValuesAndVectors(Vector_< VAL > &values, Matrix_< VEC > &vectors)
get all the eigen values and eigen vectors of a matrix
Class for performing LLT (Cholesky) matrix factorizations.
Definition LinearAlgebra.h:107
void factor(const Matrix_< ELT > &m)
factors a matrix
FactorLLT(const FactorLLT &c)
FactorLLT & operator=(FactorLLT &&rhs) noexcept
ClonePtr< FactorLLTRepBase > rep
Definition LinearAlgebra.h:138
FactorLLT(const Matrix_< ELT > &m)
void getL(Matrix_< ELT > &l) const
returns the lower triangle of an LLT factorization
void inverse(Matrix_< ELT > &m) const
returns the inverse of a matrix using an LLT (Cholesky) factorization
FactorLLT & operator=(const FactorLLT &rhs)
FactorLLT(FactorLLT &&c) noexcept
void solve(const Vector_< ELT > &b, Vector_< ELT > &x) const
solves a single right hand side
void solve(const Matrix_< ELT > &b, Matrix_< ELT > &x) const
solves multiple right hand sides
Class for performing LU matrix factorizations.
Definition LinearAlgebra.h:66
FactorLU(const FactorLU &c)
FactorLU(FactorLU &&) noexcept
Class to perform a QTZ (linear least squares) factorization.
Definition LinearAlgebra.h:146
void solve(const Vector_< ELT > &b, Vector_< ELT > &x) const
solve for a vector x given a right hand side vector b
void factor(const Matrix_< ELT > &m, double rcond)
do QTZ factorization of a matrix for a given reciprocal condition number
FactorQTZ(const Matrix_< ELT > &m)
do QTZ factorization of a matrix
ClonePtr< FactorQTZRepBase > rep
Definition LinearAlgebra.h:183
FactorQTZ(FactorQTZ &&c) noexcept
FactorQTZ & operator=(const FactorQTZ &rhs)
void factor(const Matrix_< ELT > &m, float rcond)
do QTZ factorization of a matrix for a given reciprocal condition number
FactorQTZ(const Matrix_< ELT > &m, double rcond)
do QTZ factorization of a matrix for a given reciprocal condition number
double getRCondEstimate() const
returns the actual reciprocal condition number at this rank
FactorQTZ & operator=(FactorQTZ &&rhs) noexcept
void factor(const Matrix_< ELT > &m)
do QTZ factorization of a matrix
FactorQTZ(const Matrix_< ELT > &m, float rcond)
do QTZ factorization of a matrix for a given reciprocal condition number
FactorQTZ(const FactorQTZ &c)
void inverse(Matrix_< ELT > &m) const
void solve(const Matrix_< ELT > &b, Matrix_< ELT > &x) const
solve for an array of vectors given multiple right hand sides
int getRank() const
returns the rank of the matrix
Class to compute a singular value decomposition of a matrix.
Definition LinearAlgebra.h:234
FactorSVD(const FactorSVD &c)
copy constructor
FactorSVD(FactorSVD &&) noexcept
move constructor
FactorSVD()
default constructor
Base class for the various matrix factorizations.
Definition LinearAlgebra.h:49
void solve(const Vector_< ELT > &b, Vector_< ELT > &x) const
solves a single right hand side using a factorization
Factor()
Definition LinearAlgebra.h:52
void solve(const Matrix_< ELT > &b, Matrix_< ELT > &x) const
solves multiple right hand sides using a factorization
Factor(Matrix_< ELT > m)
creates an factorization of a matrix
This is the matrix class intended to appear in user code for large, variable size matrices.
Definition Matrix_.h:51
This is the vector class intended to appear in user code for large, variable size column vectors.
Definition Vector_.h:52
This is the top-level SimTK namespace into which all SimTK names are placed to avoid collision with o...
Definition Assembler.h:37
static const double DefaultRecpCondition
Definition LinearAlgebra.h:44