Public Types | Public Member Functions | Protected Attributes
HouseholderQR< _MatrixType > Class Template Reference

Householder QR decomposition of a matrix. More...

#include <HouseholderQR.h>

List of all members.

Public Types

enum  {
  RowsAtCompileTime = MatrixType::RowsAtCompileTime, ColsAtCompileTime = MatrixType::ColsAtCompileTime, Options = MatrixType::Options, MaxRowsAtCompileTime = MatrixType::MaxRowsAtCompileTime,
  MaxColsAtCompileTime = MatrixType::MaxColsAtCompileTime
}
typedef
internal::plain_diag_type
< MatrixType >::type 
HCoeffsType
typedef HouseholderSequence
< MatrixType, HCoeffsType >
::ConjugateReturnType 
HouseholderSequenceType
typedef MatrixType::Index Index
typedef Matrix< Scalar,
RowsAtCompileTime,
RowsAtCompileTime,(MatrixType::Flags
&RowMajorBit)?RowMajor:ColMajor,
MaxRowsAtCompileTime,
MaxRowsAtCompileTime
MatrixQType
typedef _MatrixType MatrixType
typedef MatrixType::RealScalar RealScalar
typedef
internal::plain_row_type
< MatrixType >::type 
RowVectorType
typedef MatrixType::Scalar Scalar

Public Member Functions

MatrixType::RealScalar absDeterminant () const
Index cols () const
HouseholderQRcompute (const MatrixType &matrix)
const HCoeffsTypehCoeffs () const
HouseholderSequenceType householderQ () const
 HouseholderQR ()
 Default Constructor.
 HouseholderQR (Index rows, Index cols)
 Default Constructor with memory preallocation.
 HouseholderQR (const MatrixType &matrix)
MatrixType::RealScalar logAbsDeterminant () const
const MatrixTypematrixQR () const
Index rows () const
template<typename Rhs >
const internal::solve_retval
< HouseholderQR, Rhs > 
solve (const MatrixBase< Rhs > &b) const

Protected Attributes

HCoeffsType m_hCoeffs
bool m_isInitialized
MatrixType m_qr
RowVectorType m_temp

Detailed Description

template<typename _MatrixType>
class HouseholderQR< _MatrixType >

Householder QR decomposition of a matrix.

Parameters:
MatrixTypethe 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.

See also:
MatrixBase::householderQr()

Definition at line 55 of file HouseholderQR.h.


Member Typedef Documentation

template<typename _MatrixType>
typedef internal::plain_diag_type<MatrixType>::type HouseholderQR< _MatrixType >::HCoeffsType

Definition at line 71 of file HouseholderQR.h.

template<typename _MatrixType>
typedef HouseholderSequence<MatrixType,HCoeffsType>::ConjugateReturnType HouseholderQR< _MatrixType >::HouseholderSequenceType

Definition at line 73 of file HouseholderQR.h.

template<typename _MatrixType>
typedef MatrixType::Index HouseholderQR< _MatrixType >::Index

Definition at line 69 of file HouseholderQR.h.

template<typename _MatrixType>
typedef Matrix<Scalar, RowsAtCompileTime, RowsAtCompileTime, (MatrixType::Flags&RowMajorBit) ? RowMajor : ColMajor, MaxRowsAtCompileTime, MaxRowsAtCompileTime> HouseholderQR< _MatrixType >::MatrixQType

Definition at line 70 of file HouseholderQR.h.

template<typename _MatrixType>
typedef _MatrixType HouseholderQR< _MatrixType >::MatrixType

Definition at line 59 of file HouseholderQR.h.

template<typename _MatrixType>
typedef MatrixType::RealScalar HouseholderQR< _MatrixType >::RealScalar

Definition at line 68 of file HouseholderQR.h.

template<typename _MatrixType>
typedef internal::plain_row_type<MatrixType>::type HouseholderQR< _MatrixType >::RowVectorType

Definition at line 72 of file HouseholderQR.h.

template<typename _MatrixType>
typedef MatrixType::Scalar HouseholderQR< _MatrixType >::Scalar

Definition at line 67 of file HouseholderQR.h.


Member Enumeration Documentation

template<typename _MatrixType>
anonymous enum
Enumerator:
RowsAtCompileTime 
ColsAtCompileTime 
Options 
MaxRowsAtCompileTime 
MaxColsAtCompileTime 

Definition at line 60 of file HouseholderQR.h.


Constructor & Destructor Documentation

template<typename _MatrixType>
HouseholderQR< _MatrixType >::HouseholderQR ( ) [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 81 of file HouseholderQR.h.

template<typename _MatrixType>
HouseholderQR< _MatrixType >::HouseholderQR ( 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.

See also:
HouseholderQR()

Definition at line 89 of file HouseholderQR.h.

template<typename _MatrixType>
HouseholderQR< _MatrixType >::HouseholderQR ( const MatrixType matrix) [inline]

Definition at line 95 of file HouseholderQR.h.


Member Function Documentation

template<typename _MatrixType>
MatrixType::RealScalar HouseholderQR< _MatrixType >::absDeterminant ( ) const
Returns:
the absolute value of the determinant of the matrix of which *this is the QR decomposition. It has only linear complexity (that is, O(n) where n is the dimension of the square matrix) as the QR decomposition has already been computed.
Note:
This is only for square matrices.
Warning:
a determinant can be very big or small, so for matrices of large enough dimension, there is a risk of overflow/underflow. One way to work around that is to use logAbsDeterminant() instead.
See also:
logAbsDeterminant(), MatrixBase::determinant()
template<typename _MatrixType>
Index HouseholderQR< _MatrixType >::cols ( void  ) const [inline]

Definition at line 176 of file HouseholderQR.h.

template<typename _MatrixType>
HouseholderQR& HouseholderQR< _MatrixType >::compute ( const MatrixType matrix)
template<typename _MatrixType>
const HCoeffsType& HouseholderQR< _MatrixType >::hCoeffs ( ) const [inline]

Definition at line 177 of file HouseholderQR.h.

template<typename _MatrixType>
HouseholderSequenceType HouseholderQR< _MatrixType >::householderQ ( void  ) const [inline]

Definition at line 129 of file HouseholderQR.h.

template<typename _MatrixType>
MatrixType::RealScalar HouseholderQR< _MatrixType >::logAbsDeterminant ( ) const
Returns:
the natural log of the absolute value of the determinant of the matrix of which *this is the QR decomposition. It has only linear complexity (that is, O(n) where n is the dimension of the square matrix) as the QR decomposition has already been computed.
Note:
This is only for square matrices.
This method is useful to work around the risk of overflow/underflow that's inherent to determinant computation.
See also:
absDeterminant(), MatrixBase::determinant()
template<typename _MatrixType>
const MatrixType& HouseholderQR< _MatrixType >::matrixQR ( ) const [inline]
Returns:
a reference to the matrix where the Householder QR decomposition is stored in a LAPACK-compatible way.

Definition at line 138 of file HouseholderQR.h.

template<typename _MatrixType>
Index HouseholderQR< _MatrixType >::rows ( void  ) const [inline]

Definition at line 175 of file HouseholderQR.h.

template<typename _MatrixType>
template<typename Rhs >
const internal::solve_retval<HouseholderQR, Rhs> HouseholderQR< _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.

Parameters:
bthe right-hand-side of the equation to solve.
Returns:
a solution.
Note:
The case where b is a matrix is not yet implemented. Also, this code is space inefficient.

Example:

typedef Matrix<float,3,3> Matrix3x3;
Matrix3x3 m = Matrix3x3::Random();
Matrix3f y = Matrix3f::Random();
cout << "Here is the matrix m:" << endl << m << endl;
cout << "Here is the matrix y:" << endl << y << endl;
Matrix3f x;
x = m.householderQr().solve(y);
assert(y.isApprox(m*x));
cout << "Here is a solution x to the equation mx=y:" << endl << x << endl;

Output:

Definition at line 123 of file HouseholderQR.h.


Member Data Documentation

template<typename _MatrixType>
HCoeffsType HouseholderQR< _MatrixType >::m_hCoeffs [protected]

Definition at line 181 of file HouseholderQR.h.

template<typename _MatrixType>
bool HouseholderQR< _MatrixType >::m_isInitialized [protected]

Definition at line 183 of file HouseholderQR.h.

template<typename _MatrixType>
MatrixType HouseholderQR< _MatrixType >::m_qr [protected]

Definition at line 180 of file HouseholderQR.h.

template<typename _MatrixType>
RowVectorType HouseholderQR< _MatrixType >::m_temp [protected]

Definition at line 182 of file HouseholderQR.h.


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


re_vision
Author(s): Dorian Galvez-Lopez
autogenerated on Sun Jan 5 2014 11:34:11