![]() |
Eigen
3.2.1
|
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
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.
Public Member Functions | |
MatrixType::RealScalar | absDeterminant () const |
HouseholderQR & | compute (const MatrixType &matrix) |
const HCoeffsType & | hCoeffs () const |
HouseholderSequenceType | householderQ () const |
HouseholderQR () | |
Default Constructor. More... | |
HouseholderQR (Index rows, Index cols) | |
Default Constructor with memory preallocation. More... | |
HouseholderQR (const MatrixType &matrix) | |
Constructs a QR factorization from a given matrix. More... | |
MatrixType::RealScalar | logAbsDeterminant () const |
const MatrixType & | matrixQR () const |
template<typename Rhs > | |
const internal::solve_retval < HouseholderQR, Rhs > | solve (const MatrixBase< Rhs > &b) const |
|
inline |
Default Constructor.
The default constructor is useful in cases in which the user intends to perform decompositions via HouseholderQR::compute(const MatrixType&).
|
inline |
Default Constructor with memory preallocation.
Like the default constructor but with preallocation of the internal data according to the specified problem size.
|
inline |
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:
References HouseholderQR< MatrixType >::compute().
MatrixType::RealScalar absDeterminant | ( | ) | const |
HouseholderQR< MatrixType > & compute | ( | const MatrixType & | matrix | ) |
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.
Referenced by HouseholderQR< MatrixType >::HouseholderQR().
|
inline |
Q
.For advanced uses only.
|
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.0718 0.772 0.485 -0.123 -0.384 -0.539 -0.399 0.017 -0.541 -0.508 -0.297 0.489 -0.796 -0.176 0.0908 -0.542 -0.0335 -0.024 0.801 -0.252 -0.568 0.0572 0.361 -0.143 0.723 The thin matrix Q is: -0.0718 0.772 0.485 -0.539 -0.399 0.017 -0.297 0.489 -0.796 -0.542 -0.0335 -0.024 -0.568 0.0572 0.361
MatrixType::RealScalar logAbsDeterminant | ( | ) | const |
|
inline |
|
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.0277 0.0691 0.404 -0.649 0.895 -0.547 -0.383 -0.657 -0.0105 Here is the matrix y: -0.751 -0.446 0.0708 -0.832 -0.264 0.531 -0.221 0.967 0.293 Here is a solution x to the equation mx=y: 1.86 -0.485 -0.903 -0.719 -1.18 0.0764 -1.86 -0.867 0.224