Trigiagonal decomposition of a selfadjoint matrix. More...
Public Types | |
enum | { Size, SizeMinusOne, PacketSize } |
typedef Matrix< Scalar, SizeMinusOne, 1 > | CoeffVectorType |
typedef NestByValue < DiagonalCoeffs< MatrixType > >::RealReturnType | DiagonalReturnType |
typedef Matrix< RealScalar, Size, 1 > | DiagonalType |
typedef _MatrixType | MatrixType |
typedef ei_packet_traits < Scalar >::type | Packet |
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) |
const DiagonalReturnType | diagonal (void) const |
CoeffVectorType | householderCoefficients (void) const |
MatrixType | matrixQ (void) const |
MatrixType | matrixT (void) const |
const MatrixType & | packedMatrix (void) const |
const SubDiagonalReturnType | subDiagonal (void) const |
Tridiagonalization (int size=Size==Dynamic?2:Size) | |
Tridiagonalization (const MatrixType &matrix) | |
Static Public Member Functions | |
static void | decomposeInPlace (MatrixType &mat, DiagonalType &diag, SubDiagonalType &subdiag, bool extractQ=true) |
Protected Attributes | |
CoeffVectorType | m_hCoeffs |
MatrixType | m_matrix |
Trigiagonal decomposition of a selfadjoint matrix.
MatrixType | the type of the matrix of which we are performing the tridiagonalization |
This class performs a tridiagonal decomposition of a selfadjoint matrix such that:
where
is unitary and
a real symmetric tridiagonal matrix.
Tridiagonalization | ( | int | size = Size==Dynamic ? 2 : Size |
) | [inline] |
This constructor initializes a Tridiagonalization object for further use with Tridiagonalization::compute()
void compute | ( | const MatrixType & | matrix | ) | [inline] |
Computes or re-compute the tridiagonalization for the matrix matrix.
This method allows to re-use the allocated data.
void decomposeInPlace | ( | MatrixType & | mat, | |
DiagonalType & | diag, | |||
SubDiagonalType & | subdiag, | |||
bool | extractQ = true | |||
) | [static] |
Performs a full decomposition in place
const Tridiagonalization< MatrixType >::DiagonalReturnType diagonal | ( | void | ) | const |
CoeffVectorType householderCoefficients | ( | void | ) | const [inline] |
Tridiagonalization< MatrixType >::MatrixType matrixQ | ( | void | ) | const |
reconstructs and returns the matrix Q
Tridiagonalization< MatrixType >::MatrixType matrixT | ( | void | ) | const |
constructs and returns the tridiagonal matrix T. Note that the matrix T is equivalent to the diagonal and sub-diagonal of the packed matrix. Therefore, it might be often sufficient to directly use the packed matrix, or the vector expressions returned by diagonal() and subDiagonal() instead of creating a new matrix.
const MatrixType& packedMatrix | ( | void | ) | const [inline] |
The returned matrix contains the following information:
See LAPACK for further details on this packed storage.
const Tridiagonalization< MatrixType >::SubDiagonalReturnType subDiagonal | ( | void | ) | const |