Public Types | Public Member Functions | Protected Attributes | List of all members
HessenbergDecomposition< _MatrixType > Class Template Reference

Reduces a squared matrix to an Hessemberg form. More...

Public Types

enum  {
  Size,
  SizeMinusOne
}
 
typedef Matrix< Scalar,
SizeMinusOne, 1 > 
CoeffVectorType
 
typedef NestByValue
< DiagonalCoeffs< MatrixType >
>::RealReturnType 
DiagonalReturnType
 
typedef Matrix< RealScalar,
Size, 1 > 
DiagonalType
 
typedef _MatrixType MatrixType
 
typedef NumTraits< Scalar >::Real RealScalar
 
typedef MatrixType::Scalar Scalar
 
typedef NestByValue
< DiagonalCoeffs< NestByValue
< Block< MatrixType,
SizeMinusOne, SizeMinusOne >
> > >::RealReturnType 
SubDiagonalReturnType
 
typedef Matrix< RealScalar,
SizeMinusOne, 1 > 
SubDiagonalType
 

Public Member Functions

void compute (const MatrixType &matrix)
 
 HessenbergDecomposition (int size=Size==Dynamic?2:Size)
 
 HessenbergDecomposition (const MatrixType &matrix)
 
CoeffVectorType householderCoefficients (void) const
 
MatrixType matrixH (void) const
 
MatrixType matrixQ (void) const
 
const MatrixType & packedMatrix (void) const
 

Protected Attributes

CoeffVectorType m_hCoeffs
 
MatrixType m_matrix
 

Detailed Description

template<typename _MatrixType>
class Eigen::HessenbergDecomposition< _MatrixType >

Reduces a squared matrix to an Hessemberg form.

Warning
This is not considered to be part of the stable public API yet. Changes may happen in future releases. See Experimental parts of Eigen
Parameters
MatrixTypethe type of the matrix of which we are computing the Hessenberg decomposition

This class performs an Hessenberg decomposition of a matrix $ A $ such that: $ A = Q H Q^* $ where $ Q $ is unitary and $ H $ a Hessenberg matrix.

See Also
class Tridiagonalization, class Qr

Constructor & Destructor Documentation

HessenbergDecomposition ( int  size = Size==Dynamic ? 2 : Size)
inline

This constructor initializes a HessenbergDecomposition object for further use with HessenbergDecomposition::compute()

Member Function Documentation

void compute ( const MatrixType &  matrix)
inline

Computes or re-compute the Hessenberg decomposition for the matrix matrix.

This method allows to re-use the allocated data.

CoeffVectorType householderCoefficients ( void  ) const
inline
Returns
the householder coefficients allowing to reconstruct the matrix Q from the packed data.
See Also
packedMatrix()
HessenbergDecomposition< MatrixType >::MatrixType matrixH ( void  ) const

constructs and returns the matrix H. Note that the matrix H is equivalent to the upper part of the packed matrix (including the lower sub-diagonal). Therefore, it might be often sufficient to directly use the packed matrix instead of creating a new one.

HessenbergDecomposition< MatrixType >::MatrixType matrixQ ( void  ) const

reconstructs and returns the matrix Q

const MatrixType& packedMatrix ( void  ) const
inline
Returns
the internal result of the decomposition.

The returned matrix contains the following information:

  • the upper part and lower sub-diagonal represent the Hessenberg matrix H
  • the rest of the lower part contains the Householder vectors that, combined with Householder coefficients returned by householderCoefficients(), allows to reconstruct the matrix Q as follow: Q = H_{N-1} ... H_1 H_0 where the matrices H are the Householder transformation: H_i = (I - h_i * v_i * v_i') where h_i == householderCoefficients()[i] and v_i is a Householder vector: v_i = [ 0, ..., 0, 1, M(i+2,i), ..., M(N-1,i) ]

See LAPACK for further details on this packed storage.


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