Householder rank-revealing QR decomposition of a matrix with full pivoting.
MatrixType | the type of the matrix of which we are computing the QR decomposition |
This class performs a rank-revealing QR decomposition of a matrix A into matrices P, Q and R such that
by using Householder transformations. Here, P is a permutation matrix, Q a unitary matrix and R an upper triangular matrix.
This decomposition performs a very prudent full pivoting in order to be rank-revealing and achieve optimal numerical stability. The trade-off is that it is slower than HouseholderQR and ColPivHouseholderQR.
Definition at line 50 of file FullPivHouseholderQR.h.
#include <src/QR/FullPivHouseholderQR.h>
Public Types | |
enum | { RowsAtCompileTime = MatrixType::RowsAtCompileTime, ColsAtCompileTime = MatrixType::ColsAtCompileTime, Options = MatrixType::Options, MaxRowsAtCompileTime = MatrixType::MaxRowsAtCompileTime, MaxColsAtCompileTime = MatrixType::MaxColsAtCompileTime } |
typedef _MatrixType | MatrixType |
typedef MatrixType::Scalar | Scalar |
typedef MatrixType::RealScalar | RealScalar |
typedef MatrixType::Index | Index |
typedef Matrix< Scalar, RowsAtCompileTime, RowsAtCompileTime, Options, MaxRowsAtCompileTime, MaxRowsAtCompileTime > | MatrixQType |
typedef internal::plain_diag_type < MatrixType >::type | HCoeffsType |
typedef Matrix< Index, 1, ColsAtCompileTime, RowMajor, 1, MaxColsAtCompileTime > | IntRowVectorType |
typedef PermutationMatrix < ColsAtCompileTime, MaxColsAtCompileTime > | PermutationType |
typedef internal::plain_col_type < MatrixType, Index >::type | IntColVectorType |
typedef internal::plain_row_type < MatrixType >::type | RowVectorType |
typedef internal::plain_col_type < MatrixType >::type | ColVectorType |
Public Member Functions | |
FullPivHouseholderQR () | |
Default Constructor. | |
FullPivHouseholderQR (Index rows, Index cols) | |
Default Constructor with memory preallocation. | |
FullPivHouseholderQR (const MatrixType &matrix) | |
template<typename Rhs > | |
const internal::solve_retval < FullPivHouseholderQR, Rhs > | solve (const MatrixBase< Rhs > &b) const |
This method finds a solution x to the equation Ax=b, where A is the matrix of which *this is the QR decomposition, if any exists. | |
MatrixQType | matrixQ (void) const |
const MatrixType & | matrixQR () const |
FullPivHouseholderQR & | compute (const MatrixType &matrix) |
const PermutationType & | colsPermutation () const |
const IntColVectorType & | rowsTranspositions () const |
MatrixType::RealScalar | absDeterminant () const |
MatrixType::RealScalar | logAbsDeterminant () const |
Index | rank () const |
Index | dimensionOfKernel () const |
bool | isInjective () const |
bool | isSurjective () const |
bool | isInvertible () const |
const internal::solve_retval < FullPivHouseholderQR, typename MatrixType::IdentityReturnType > | inverse () const |
Index | rows () const |
Index | cols () const |
const HCoeffsType & | hCoeffs () const |
Protected Attributes | |
MatrixType | m_qr |
HCoeffsType | m_hCoeffs |
IntColVectorType | m_rows_transpositions |
IntRowVectorType | m_cols_transpositions |
PermutationType | m_cols_permutation |
RowVectorType | m_temp |
bool | m_isInitialized |
RealScalar | m_precision |
Index | m_rank |
Index | m_det_pq |
typedef internal::plain_col_type<MatrixType>::type FullPivHouseholderQR< _MatrixType >::ColVectorType |
Definition at line 71 of file FullPivHouseholderQR.h.
typedef internal::plain_diag_type<MatrixType>::type FullPivHouseholderQR< _MatrixType >::HCoeffsType |
Definition at line 66 of file FullPivHouseholderQR.h.
typedef MatrixType::Index FullPivHouseholderQR< _MatrixType >::Index |
Definition at line 64 of file FullPivHouseholderQR.h.
typedef internal::plain_col_type<MatrixType, Index>::type FullPivHouseholderQR< _MatrixType >::IntColVectorType |
Definition at line 69 of file FullPivHouseholderQR.h.
typedef Matrix<Index, 1, ColsAtCompileTime, RowMajor, 1, MaxColsAtCompileTime> FullPivHouseholderQR< _MatrixType >::IntRowVectorType |
Definition at line 67 of file FullPivHouseholderQR.h.
typedef Matrix<Scalar, RowsAtCompileTime, RowsAtCompileTime, Options, MaxRowsAtCompileTime, MaxRowsAtCompileTime> FullPivHouseholderQR< _MatrixType >::MatrixQType |
Definition at line 65 of file FullPivHouseholderQR.h.
typedef _MatrixType FullPivHouseholderQR< _MatrixType >::MatrixType |
Definition at line 54 of file FullPivHouseholderQR.h.
typedef PermutationMatrix<ColsAtCompileTime, MaxColsAtCompileTime> FullPivHouseholderQR< _MatrixType >::PermutationType |
Definition at line 68 of file FullPivHouseholderQR.h.
typedef MatrixType::RealScalar FullPivHouseholderQR< _MatrixType >::RealScalar |
Definition at line 63 of file FullPivHouseholderQR.h.
typedef internal::plain_row_type<MatrixType>::type FullPivHouseholderQR< _MatrixType >::RowVectorType |
Definition at line 70 of file FullPivHouseholderQR.h.
typedef MatrixType::Scalar FullPivHouseholderQR< _MatrixType >::Scalar |
Definition at line 62 of file FullPivHouseholderQR.h.
anonymous enum |
Definition at line 55 of file FullPivHouseholderQR.h.
FullPivHouseholderQR< _MatrixType >::FullPivHouseholderQR | ( | ) | [inline] |
Default Constructor.
The default constructor is useful in cases in which the user intends to perform decompositions via FullPivHouseholderQR::compute(const MatrixType&).
Definition at line 78 of file FullPivHouseholderQR.h.
FullPivHouseholderQR< _MatrixType >::FullPivHouseholderQR | ( | Index | rows, |
Index | cols | ||
) | [inline] |
Default Constructor with memory preallocation.
Like the default constructor but with preallocation of the internal data according to the specified problem size.
Definition at line 93 of file FullPivHouseholderQR.h.
FullPivHouseholderQR< _MatrixType >::FullPivHouseholderQR | ( | const MatrixType & | matrix | ) | [inline] |
Definition at line 102 of file FullPivHouseholderQR.h.
References FullPivHouseholderQR< _MatrixType >::compute().
MatrixType::RealScalar FullPivHouseholderQR< MatrixType >::absDeterminant | ( | ) | const |
Definition at line 280 of file FullPivHouseholderQR.h.
References abs(), and eigen_assert.
Index FullPivHouseholderQR< _MatrixType >::cols | ( | void | ) | const [inline] |
Definition at line 263 of file FullPivHouseholderQR.h.
References FullPivHouseholderQR< _MatrixType >::m_qr.
const PermutationType& FullPivHouseholderQR< _MatrixType >::colsPermutation | ( | ) | const [inline] |
Definition at line 151 of file FullPivHouseholderQR.h.
References eigen_assert, FullPivHouseholderQR< _MatrixType >::m_cols_permutation, and FullPivHouseholderQR< _MatrixType >::m_isInitialized.
Referenced by internal::qr_preconditioner_impl< MatrixType, FullPivHouseholderQRPreconditioner, PreconditionIfMoreRowsThanCols, true >::run().
FullPivHouseholderQR< MatrixType > & FullPivHouseholderQR< MatrixType >::compute | ( | const MatrixType & | matrix | ) |
Definition at line 296 of file FullPivHouseholderQR.h.
References internal::isMuchSmallerThan(), FullPivHouseholderQR< _MatrixType >::rows(), and mrpt::math::size().
Referenced by FullPivHouseholderQR< _MatrixType >::FullPivHouseholderQR().
Index FullPivHouseholderQR< _MatrixType >::dimensionOfKernel | ( | ) | const [inline] |
Definition at line 208 of file FullPivHouseholderQR.h.
References eigen_assert, FullPivHouseholderQR< _MatrixType >::m_isInitialized, FullPivHouseholderQR< _MatrixType >::m_qr, and FullPivHouseholderQR< _MatrixType >::m_rank.
const HCoeffsType& FullPivHouseholderQR< _MatrixType >::hCoeffs | ( | ) | const [inline] |
Definition at line 264 of file FullPivHouseholderQR.h.
References FullPivHouseholderQR< _MatrixType >::m_hCoeffs.
const internal::solve_retval<FullPivHouseholderQR, typename MatrixType::IdentityReturnType> FullPivHouseholderQR< _MatrixType >::inverse | ( | ) | const [inline] |
Definition at line 255 of file FullPivHouseholderQR.h.
References eigen_assert, FullPivHouseholderQR< _MatrixType >::m_isInitialized, and FullPivHouseholderQR< _MatrixType >::m_qr.
bool FullPivHouseholderQR< _MatrixType >::isInjective | ( | ) | const [inline] |
Definition at line 220 of file FullPivHouseholderQR.h.
References eigen_assert, FullPivHouseholderQR< _MatrixType >::m_isInitialized, FullPivHouseholderQR< _MatrixType >::m_qr, and FullPivHouseholderQR< _MatrixType >::m_rank.
Referenced by FullPivHouseholderQR< _MatrixType >::isInvertible().
bool FullPivHouseholderQR< _MatrixType >::isInvertible | ( | ) | const [inline] |
Definition at line 243 of file FullPivHouseholderQR.h.
References eigen_assert, FullPivHouseholderQR< _MatrixType >::isInjective(), FullPivHouseholderQR< _MatrixType >::isSurjective(), and FullPivHouseholderQR< _MatrixType >::m_isInitialized.
bool FullPivHouseholderQR< _MatrixType >::isSurjective | ( | ) | const [inline] |
Definition at line 232 of file FullPivHouseholderQR.h.
References eigen_assert, FullPivHouseholderQR< _MatrixType >::m_isInitialized, FullPivHouseholderQR< _MatrixType >::m_qr, and FullPivHouseholderQR< _MatrixType >::m_rank.
Referenced by FullPivHouseholderQR< _MatrixType >::isInvertible().
MatrixType::RealScalar FullPivHouseholderQR< MatrixType >::logAbsDeterminant | ( | ) | const |
Definition at line 288 of file FullPivHouseholderQR.h.
References eigen_assert.
FullPivHouseholderQR< MatrixType >::MatrixQType FullPivHouseholderQR< MatrixType >::matrixQ | ( | void | ) | const |
Definition at line 428 of file FullPivHouseholderQR.h.
References PlainObjectBase< Matrix< _Scalar, _Rows, _Cols, _Options, _MaxRows, _MaxCols > >::coeffRef(), eigen_assert, mrpt::math::size(), and Matrix< _Scalar, _Rows, _Cols, _Options, _MaxRows, _MaxCols >::swap().
Referenced by internal::qr_preconditioner_impl< MatrixType, FullPivHouseholderQRPreconditioner, PreconditionIfMoreRowsThanCols, true >::run().
const MatrixType& FullPivHouseholderQR< _MatrixType >::matrixQR | ( | ) | const [inline] |
Definition at line 143 of file FullPivHouseholderQR.h.
References eigen_assert, FullPivHouseholderQR< _MatrixType >::m_isInitialized, and FullPivHouseholderQR< _MatrixType >::m_qr.
Referenced by internal::qr_preconditioner_impl< MatrixType, FullPivHouseholderQRPreconditioner, PreconditionIfMoreRowsThanCols, true >::run().
Index FullPivHouseholderQR< _MatrixType >::rank | ( | ) | const [inline] |
Definition at line 197 of file FullPivHouseholderQR.h.
References eigen_assert, FullPivHouseholderQR< _MatrixType >::m_isInitialized, and FullPivHouseholderQR< _MatrixType >::m_rank.
Index FullPivHouseholderQR< _MatrixType >::rows | ( | void | ) | const [inline] |
Definition at line 262 of file FullPivHouseholderQR.h.
References FullPivHouseholderQR< _MatrixType >::m_qr.
Referenced by FullPivHouseholderQR< _MatrixType >::compute().
const IntColVectorType& FullPivHouseholderQR< _MatrixType >::rowsTranspositions | ( | ) | const [inline] |
Definition at line 157 of file FullPivHouseholderQR.h.
References eigen_assert, FullPivHouseholderQR< _MatrixType >::m_isInitialized, and FullPivHouseholderQR< _MatrixType >::m_rows_transpositions.
const internal::solve_retval<FullPivHouseholderQR, Rhs> FullPivHouseholderQR< _MatrixType >::solve | ( | const MatrixBase< Rhs > & | b | ) | const [inline] |
This method finds a solution x to the equation Ax=b, where A is the matrix of which *this is the QR decomposition, if any exists.
b | the right-hand-side of the equation to solve. |
Example:
Output:
Definition at line 133 of file FullPivHouseholderQR.h.
References eigen_assert, and FullPivHouseholderQR< _MatrixType >::m_isInitialized.
PermutationType FullPivHouseholderQR< _MatrixType >::m_cols_permutation [protected] |
Definition at line 271 of file FullPivHouseholderQR.h.
Referenced by FullPivHouseholderQR< _MatrixType >::colsPermutation().
IntRowVectorType FullPivHouseholderQR< _MatrixType >::m_cols_transpositions [protected] |
Definition at line 270 of file FullPivHouseholderQR.h.
Index FullPivHouseholderQR< _MatrixType >::m_det_pq [protected] |
Definition at line 276 of file FullPivHouseholderQR.h.
HCoeffsType FullPivHouseholderQR< _MatrixType >::m_hCoeffs [protected] |
Definition at line 268 of file FullPivHouseholderQR.h.
Referenced by FullPivHouseholderQR< _MatrixType >::hCoeffs().
bool FullPivHouseholderQR< _MatrixType >::m_isInitialized [protected] |
Definition at line 273 of file FullPivHouseholderQR.h.
Referenced by FullPivHouseholderQR< _MatrixType >::colsPermutation(), FullPivHouseholderQR< _MatrixType >::dimensionOfKernel(), FullPivHouseholderQR< _MatrixType >::inverse(), FullPivHouseholderQR< _MatrixType >::isInjective(), FullPivHouseholderQR< _MatrixType >::isInvertible(), FullPivHouseholderQR< _MatrixType >::isSurjective(), FullPivHouseholderQR< _MatrixType >::matrixQR(), FullPivHouseholderQR< _MatrixType >::rank(), FullPivHouseholderQR< _MatrixType >::rowsTranspositions(), and FullPivHouseholderQR< _MatrixType >::solve().
RealScalar FullPivHouseholderQR< _MatrixType >::m_precision [protected] |
Definition at line 274 of file FullPivHouseholderQR.h.
MatrixType FullPivHouseholderQR< _MatrixType >::m_qr [protected] |
Definition at line 267 of file FullPivHouseholderQR.h.
Referenced by FullPivHouseholderQR< _MatrixType >::cols(), FullPivHouseholderQR< _MatrixType >::dimensionOfKernel(), FullPivHouseholderQR< _MatrixType >::inverse(), FullPivHouseholderQR< _MatrixType >::isInjective(), FullPivHouseholderQR< _MatrixType >::isSurjective(), FullPivHouseholderQR< _MatrixType >::matrixQR(), and FullPivHouseholderQR< _MatrixType >::rows().
Index FullPivHouseholderQR< _MatrixType >::m_rank [protected] |
IntColVectorType FullPivHouseholderQR< _MatrixType >::m_rows_transpositions [protected] |
Definition at line 269 of file FullPivHouseholderQR.h.
Referenced by FullPivHouseholderQR< _MatrixType >::rowsTranspositions().
RowVectorType FullPivHouseholderQR< _MatrixType >::m_temp [protected] |
Definition at line 272 of file FullPivHouseholderQR.h.
Page generated by Doxygen 1.7.3 for MRPT 0.9.4 SVN: at Sat Mar 26 06:40:17 UTC 2011 |