Householder QR decomposition of a matrix. More...
Public Member Functions | |
MatrixType::RealScalar | absDeterminant () const |
Index | cols () const |
template<typename InputType > | |
HouseholderQR & | compute (const EigenBase< InputType > &matrix) |
MatrixType::Scalar | determinant () const |
const HCoeffsType & | hCoeffs () const |
HouseholderSequenceType | householderQ () const |
HouseholderQR () | |
Default Constructor. More... | |
template<typename InputType > | |
HouseholderQR (const EigenBase< InputType > &matrix) | |
Constructs a QR factorization from a given matrix. More... | |
template<typename InputType > | |
HouseholderQR (EigenBase< InputType > &matrix) | |
Constructs a QR factorization from a given matrix. More... | |
HouseholderQR (Index rows, Index cols) | |
Default Constructor with memory preallocation. More... | |
MatrixType::RealScalar | logAbsDeterminant () const |
const MatrixType & | matrixQR () const |
Index | rows () const |
template<typename Rhs > | |
const Solve< HouseholderQR, Rhs > | solve (const MatrixBase< Rhs > &b) const |
Public Member Functions inherited from Eigen::SolverBase< HouseholderQR< MatrixType_ > > | |
const AdjointReturnType | adjoint () const |
HouseholderQR< MatrixType_ > & | derived () |
const HouseholderQR< MatrixType_ > & | derived () const |
const Solve< HouseholderQR< MatrixType_ >, Rhs > | solve (const MatrixBase< Rhs > &b) const |
SolverBase () | |
const ConstTransposeReturnType | transpose () const |
~SolverBase () | |
Public Member Functions inherited from Eigen::EigenBase< Derived > | |
template<typename Dest > | |
void | addTo (Dest &dst) const |
template<typename Dest > | |
void | applyThisOnTheLeft (Dest &dst) const |
template<typename Dest > | |
void | applyThisOnTheRight (Dest &dst) const |
EIGEN_CONSTEXPR Index | cols () const EIGEN_NOEXCEPT |
Derived & | const_cast_derived () const |
const Derived & | const_derived () const |
Derived & | derived () |
const Derived & | derived () const |
template<typename Dest > | |
void | evalTo (Dest &dst) const |
EIGEN_CONSTEXPR Index | rows () const EIGEN_NOEXCEPT |
EIGEN_CONSTEXPR Index | size () const EIGEN_NOEXCEPT |
template<typename Dest > | |
void | subTo (Dest &dst) const |
Protected Member Functions | |
void | computeInPlace () |
Protected Member Functions inherited from Eigen::SolverBase< HouseholderQR< MatrixType_ > > | |
void | _check_solve_assertion (const Rhs &b) const |
Protected Attributes | |
HCoeffsType | m_hCoeffs |
bool | m_isInitialized |
MatrixType | m_qr |
RowVectorType | m_temp |
Householder QR decomposition of a matrix.
MatrixType_ | the type of the matrix of which we are computing the QR decomposition |
This class performs a QR decomposition of a matrix A into matrices Q and R such that
\[ \mathbf{A} = \mathbf{Q} \, \mathbf{R} \]
by using Householder transformations. Here, Q a unitary matrix and R an upper triangular matrix. The result is stored in a compact way compatible with LAPACK.
Note that no pivoting is performed. This is not a rank-revealing decomposition. If you want that feature, use FullPivHouseholderQR or ColPivHouseholderQR instead.
This Householder QR decomposition is faster, but less numerically stable and less feature-full than FullPivHouseholderQR or ColPivHouseholderQR.
This class supports the inplace decomposition mechanism.
Definition at line 58 of file HouseholderQR.h.
typedef SolverBase<HouseholderQR> Eigen::HouseholderQR< MatrixType_ >::Base |
Definition at line 64 of file HouseholderQR.h.
typedef internal::plain_diag_type<MatrixType>::type Eigen::HouseholderQR< MatrixType_ >::HCoeffsType |
Definition at line 73 of file HouseholderQR.h.
typedef HouseholderSequence<MatrixType,internal::remove_all_t<typename HCoeffsType::ConjugateReturnType> > Eigen::HouseholderQR< MatrixType_ >::HouseholderSequenceType |
Definition at line 75 of file HouseholderQR.h.
typedef Matrix<Scalar, RowsAtCompileTime, RowsAtCompileTime, (MatrixType::Flags&RowMajorBit) ? RowMajor : ColMajor, MaxRowsAtCompileTime, MaxRowsAtCompileTime> Eigen::HouseholderQR< MatrixType_ >::MatrixQType |
Definition at line 72 of file HouseholderQR.h.
typedef MatrixType_ Eigen::HouseholderQR< MatrixType_ >::MatrixType |
Definition at line 63 of file HouseholderQR.h.
typedef internal::plain_row_type<MatrixType>::type Eigen::HouseholderQR< MatrixType_ >::RowVectorType |
Definition at line 74 of file HouseholderQR.h.
anonymous enum |
|
inline |
Default Constructor.
The default constructor is useful in cases in which the user intends to perform decompositions via HouseholderQR::compute(const MatrixType&).
Definition at line 83 of file HouseholderQR.h.
|
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 91 of file HouseholderQR.h.
|
inlineexplicit |
Constructs a QR factorization from a given matrix.
This constructor computes the QR factorization of the matrix matrix by calling the method compute(). It is a short cut for:
Definition at line 110 of file HouseholderQR.h.
|
inlineexplicit |
Constructs a QR factorization from a given matrix.
This overloaded constructor is provided for inplace decomposition when MatrixType
is a Eigen::Ref.
Definition at line 128 of file HouseholderQR.h.
MatrixType::RealScalar Eigen::HouseholderQR< MatrixType >::absDeterminant |
Definition at line 312 of file HouseholderQR.h.
|
inline |
Definition at line 232 of file HouseholderQR.h.
|
inline |
Definition at line 181 of file HouseholderQR.h.
|
protected |
Performs the QR factorization of the given matrix matrix. The result of the factorization is stored into *this
, and a reference to *this
is returned.
Definition at line 506 of file HouseholderQR.h.
MatrixType::Scalar Eigen::HouseholderQR< MatrixType >::determinant |
Definition at line 302 of file HouseholderQR.h.
|
inline |
Q
.For advanced uses only.
Definition at line 238 of file HouseholderQR.h.
|
inline |
This method returns an expression of the unitary matrix Q as a sequence of Householder transformations.
The returned expression can directly be used to perform matrix products. It can also be assigned to a dense Matrix object. Here is an example showing how to recover the full or thin matrix Q, as well as how to perform matrix products using operator*:
Example:
Output:
The complete unitary matrix Q is: -0.676 0.0793 0.713 -0.0788 -0.147 -0.221 -0.322 -0.37 -0.366 -0.759 -0.353 -0.345 -0.214 0.841 -0.0518 0.582 -0.462 0.555 0.176 -0.329 -0.174 -0.747 -0.00907 -0.348 0.539 The thin matrix Q is: -0.676 0.0793 0.713 -0.221 -0.322 -0.37 -0.353 -0.345 -0.214 0.582 -0.462 0.555 -0.174 -0.747 -0.00907
Definition at line 165 of file HouseholderQR.h.
MatrixType::RealScalar Eigen::HouseholderQR< MatrixType >::logAbsDeterminant |
Definition at line 321 of file HouseholderQR.h.
|
inline |
Definition at line 174 of file HouseholderQR.h.
|
inline |
Definition at line 231 of file HouseholderQR.h.
|
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. |
This method just tries to find as good a solution as possible. If you want to check whether a solution exists or if it is accurate, just call this function to get a result and then compute the error of this result, or use MatrixBase::isApprox() directly, for instance like this:
This method avoids dividing by zero, so that the non-existence of a solution doesn't by itself mean that you'll get inf
or nan
values.
If there exists more than one solution, this method will arbitrarily choose one.
Example:
Output:
Here is the matrix m: 0.68 0.597 -0.33 -0.211 0.823 0.536 0.566 -0.605 -0.444 Here is the matrix y: 0.108 -0.27 0.832 -0.0452 0.0268 0.271 0.258 0.904 0.435 Here is a solution x to the equation mx=y: 0.609 2.68 1.67 -0.231 -1.57 0.0713 0.51 3.51 1.05
|
protected |
Definition at line 255 of file HouseholderQR.h.
|
protected |
Definition at line 257 of file HouseholderQR.h.
|
protected |
Definition at line 254 of file HouseholderQR.h.
|
protected |
Definition at line 256 of file HouseholderQR.h.