SourcePro® API Reference Guide

 
Loading...
Searching...
No Matches
RWTriDiagDecomp< TypeT > Class Template Referenceabstract

Encapsulates the tridiagonal decomposition of a symmetric matrix. More...

#include <rw/lapack/td.h>

Inheritance diagram for RWTriDiagDecomp< TypeT >:
RWBandTriDiagDecomp< TypeT > RWDenseTriDiagDecomp< TypeT >

Public Types

typedef rw_numeric_traits< TypeT >::norm_type rt
 

Public Member Functions

unsigned cols () const
 
const RWMathVec< rtdiagonal () const
 
const RWMathVec< rtoffDiagonal () const
 
unsigned rows () const
 
void set (const RWMathVec< rt > &diag_, const RWMathVec< rt > &offdiag_)
 
virtual RWGenMat< TypeT > transform (const RWGenMat< rt > &) const =0
 
virtual RWMathVec< TypeT > transform (const RWMathVec< rt > &) const
 

Detailed Description

template<class TypeT>
class RWTriDiagDecomp< TypeT >

The class RWTriDiagDecomp encapsulates the tridiagonal decomposition of a symmetric matrix A:

\[ A = Q^{\prime}TQ \]

where Q is orthogonal and T is tridiagonal and real, even in the complex case. This decomposition is often done as a precursor to computing eigenvalues, since the eigenvalues of T and A are the same, and those of T are easier to compute. This class is used internally by the symmetric eigenvalue classes.

The class RWTriDiagDecomp is an abstract base class. Subclasses must implement the pure virtual function decompose. This separates the implementation of the storage of Q from the interface, so that band and dense decompositions can use different storage techniques. The Linear Algebra Module provides the derived classes RWDenseTriDiagDecomp and RWBandTriDiagDecomp.

Synopsis
#include <rw/lapack/td.h>
Example
See specific subclasses for examples.

Member Typedef Documentation

◆ rt

template<class TypeT >
typedef rw_numeric_traits<TypeT>::norm_type RWTriDiagDecomp< TypeT >::rt

Typedef for the usual return type of numerical norm-like functions. For more information, see rw_numeric_traits<T>::norm_type.

Member Function Documentation

◆ cols()

template<class TypeT >
unsigned RWTriDiagDecomp< TypeT >::cols ( ) const
inline

Returns the number of columns in the decomposition.

◆ diagonal()

template<class TypeT >
const RWMathVec< rt > RWTriDiagDecomp< TypeT >::diagonal ( ) const
inline

Returns the diagonal of the symmetric tridiagonal matrix T.

◆ offDiagonal()

template<class TypeT >
const RWMathVec< rt > RWTriDiagDecomp< TypeT >::offDiagonal ( ) const
inline

Returns the subdiagonal or superdiagonal of the symmetric tridiagonal matrix T.

◆ rows()

template<class TypeT >
unsigned RWTriDiagDecomp< TypeT >::rows ( ) const
inline

Returns the number of rows in the decomposition.

◆ set()

template<class TypeT >
void RWTriDiagDecomp< TypeT >::set ( const RWMathVec< rt > & diag_,
const RWMathVec< rt > & offdiag_ )

Sets the tridiagonal matrix directly.

◆ transform() [1/2]

template<class TypeT >
virtual RWGenMat< TypeT > RWTriDiagDecomp< TypeT >::transform ( const RWGenMat< rt > & ) const
pure virtual

Transforms the vector from tridiagonal decomposition space back to the original matrix space. This amounts to multiplying it by the matrix Q.

Implemented in RWBandTriDiagDecomp< TypeT >, and RWDenseTriDiagDecomp< TypeT >.

◆ transform() [2/2]

template<class TypeT >
virtual RWMathVec< TypeT > RWTriDiagDecomp< TypeT >::transform ( const RWMathVec< rt > & ) const
virtual

Transforms the vector from tridiagonal decomposition space back to the original matrix space. This amounts to multiplying it by the matrix Q.

Reimplemented in RWBandTriDiagDecomp< TypeT >, and RWDenseTriDiagDecomp< TypeT >.

Copyright © 2024 Rogue Wave Software, Inc., a Perforce company. All Rights Reserved.