Logo Search packages:      
Sourcecode: feel++ version File versions  Download package

Public Types | Public Member Functions | Protected Attributes

FullPivLU< _MatrixType > Class Template Reference

LU decomposition of a matrix with complete pivoting, and related features. More...

#include <FullPivLU.h>

Collaboration diagram for FullPivLU< _MatrixType >:
Collaboration graph

List of all members.

Public Types

enum  {
  RowsAtCompileTime = MatrixType::RowsAtCompileTime, ColsAtCompileTime = MatrixType::ColsAtCompileTime, Options = MatrixType::Options, MaxRowsAtCompileTime = MatrixType::MaxRowsAtCompileTime,
  MaxColsAtCompileTime = MatrixType::MaxColsAtCompileTime
typedef MatrixType::Index Index
typedef ei_plain_col_type
< MatrixType, Index >::type 
typedef ei_plain_row_type
< MatrixType, Index >::type 
typedef _MatrixType MatrixType
typedef PermutationMatrix
< RowsAtCompileTime,
MaxRowsAtCompileTime > 
typedef PermutationMatrix
< ColsAtCompileTime,
MaxColsAtCompileTime > 
typedef NumTraits< typename
MatrixType::Scalar >::Real 
typedef MatrixType::Scalar Scalar
typedef ei_traits< MatrixType >

Public Member Functions

Index cols () const
FullPivLUcompute (const MatrixType &matrix)
ei_traits< MatrixType >::Scalar determinant () const
Index dimensionOfKernel () const
 FullPivLU ()
 Default Constructor.
 FullPivLU (Index rows, Index cols)
 Default Constructor with memory preallocation.
 FullPivLU (const MatrixType &matrix)
const ei_image_retval< FullPivLUimage (const MatrixType &originalMatrix) const
const ei_solve_retval
< FullPivLU, typename
MatrixType::IdentityReturnType > 
inverse () const
bool isInjective () const
bool isInvertible () const
bool isSurjective () const
const ei_kernel_retval< FullPivLUkernel () const
const MatrixType & matrixLU () const
RealScalar maxPivot () const
Index nonzeroPivots () const
const PermutationPTypepermutationP () const
const PermutationQTypepermutationQ () const
Index rank () const
MatrixType reconstructedMatrix () const
Index rows () const
FullPivLUsetThreshold (const RealScalar &threshold)
FullPivLUsetThreshold (Default_t)
template<typename Rhs >
const ei_solve_retval
< FullPivLU, Rhs > 
solve (const MatrixBase< Rhs > &b) const
RealScalar threshold () const

Protected Attributes

IntRowVectorType m_colsTranspositions
Index m_det_pq
bool m_isInitialized
MatrixType m_lu
RealScalar m_maxpivot
Index m_nonzero_pivots
PermutationPType m_p
RealScalar m_prescribedThreshold
PermutationQType m_q
IntColVectorType m_rowsTranspositions
bool m_usePrescribedThreshold

Detailed Description

template<typename _MatrixType>
class FullPivLU< _MatrixType >

LU decomposition of a matrix with complete pivoting, and related features.

MatrixTypethe type of the matrix of which we are computing the LU decomposition

This class represents a LU decomposition of any matrix, with complete pivoting: the matrix A is decomposed as A = PLUQ where L is unit-lower-triangular, U is upper-triangular, and P and Q are permutation matrices. This is a rank-revealing LU decomposition. The eigenvalues (diagonal coefficients) of U are sorted in such a way that any zeros are at the end.

This decomposition provides the generic approach to solving systems of linear equations, computing the rank, invertibility, inverse, kernel, and determinant.

This LU decomposition is very stable and well tested with large matrices. However there are use cases where the SVD decomposition is inherently more stable and/or flexible. For example, when computing the kernel of a matrix, working with the SVD allows to select the smallest singular values of the matrix, something that the LU decomposition doesn't see.

The data of the LU decomposition can be directly accessed through the methods matrixLU(), permutationP(), permutationQ().

As an exemple, here is how the original matrix can be retrieved:


See also:
MatrixBase::fullPivLu(), MatrixBase::determinant(), MatrixBase::inverse()

Definition at line 58 of file FullPivLU.h.

The documentation for this class was generated from the following file:

Generated by  Doxygen 1.6.0   Back to index