![]() |
Eigen
3.4.90 (git rev 9589cc4e7fd8e4538bedef80dd36c7738977a8be)
|
#include <Eigen/src/QR/HouseholderQR.h>
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.
This class supports the inplace decomposition mechanism.
Public Member Functions | |
MatrixType::RealScalar | absDeterminant () const |
MatrixType::Scalar | determinant () const |
const HCoeffsType & | hCoeffs () const |
HouseholderSequenceType | householderQ () const |
HouseholderQR () | |
Default Constructor. | |
template<typename InputType> | |
HouseholderQR (const EigenBase< InputType > &matrix) | |
Constructs a QR factorization from a given matrix. | |
template<typename InputType> | |
HouseholderQR (EigenBase< InputType > &matrix) | |
Constructs a QR factorization from a given matrix. | |
HouseholderQR (Index rows, Index cols) | |
Default Constructor with memory preallocation. | |
MatrixType::RealScalar | logAbsDeterminant () const |
const MatrixType & | matrixQR () const |
MatrixType::Scalar | signDeterminant () const |
template<typename Rhs> | |
const Solve< HouseholderQR, Rhs > | solve (const MatrixBase< Rhs > &b) const |
![]() | |
const AdjointReturnType | adjoint () const |
constexpr HouseholderQR< MatrixType_ > & | derived () |
constexpr const HouseholderQR< MatrixType_ > & | derived () const |
const Solve< HouseholderQR< MatrixType_ >, Rhs > | solve (const MatrixBase< Rhs > &b) const |
SolverBase () | |
const ConstTransposeReturnType | transpose () const |
![]() | |
EIGEN_CONSTEXPR Index | cols () const EIGEN_NOEXCEPT |
constexpr HouseholderQR< MatrixType_ > & | derived () |
constexpr const HouseholderQR< MatrixType_ > & | derived () const |
EIGEN_CONSTEXPR Index | rows () const EIGEN_NOEXCEPT |
EIGEN_CONSTEXPR Index | size () const EIGEN_NOEXCEPT |
Protected Member Functions | |
void | computeInPlace () |
Additional Inherited Members | |
![]() | |
typedef Eigen::Index | Index |
The interface type of indices. | |
|
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.
|
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:
|
inlineexplicit |
Constructs a QR factorization from a given matrix.
This overloaded constructor is provided for inplace decomposition when MatrixType
is a Eigen::Ref.
MatrixType::RealScalar Eigen::HouseholderQR< MatrixType >::absDeterminant | ( | ) | const |
|
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.
MatrixType::Scalar Eigen::HouseholderQR< MatrixType >::determinant | ( | ) | const |
|
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.117 0.425 0.0538 0.57 -0.691 -0.619 0.0393 0.325 0.467 0.54 -0.327 0.333 -0.869 -0.0411 0.159 0.639 -0.101 -0.248 0.638 0.337 0.296 0.835 0.274 -0.219 0.304 The thin matrix Q is: -0.117 0.425 0.0538 -0.619 0.0393 0.325 -0.327 0.333 -0.869 0.639 -0.101 -0.248 0.296 0.835 0.274
MatrixType::RealScalar Eigen::HouseholderQR< MatrixType >::logAbsDeterminant | ( | ) | const |
|
inline |
MatrixType::Scalar Eigen::HouseholderQR< MatrixType >::signDeterminant | ( | ) | 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. |
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.824 -0.199 0.634 0.924 -0.237 0.334 -0.0532 0.146 -0.779 Here is the matrix y: 0.633 -0.23 0.0919 -0.573 -0.139 0.484 0.982 0.542 0.256 Here is a solution x to the equation mx=y: -1.17 -0.131 -0.0219 -5.2 -1.21 -3.53 -2.16 -0.914 -0.989