SourcePro® API Reference Guide

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

Abstract base class for the symmetric eigenvalue server. More...

#include <rw/lapack/seigsrv.h>

Inheritance diagram for RWSymEigServer< TypeT >:
RWSymPDQREigServer< TypeT > RWSymQREigServer< TypeT > RWSymRFQREigServer< TypeT > RWSymRangeEigServer< TypeT > RWSymSomeEigServer< TypeT >

Public Member Functions

virtual bool computeEigenVectors () const =0
 
virtual RWSymEigDecomp< TypeT > decompose (const RWTriDiagDecomp< TypeT > &A)=0
 
virtual RWSymEigDecomp< TypeT > operator() (const RWSymBandMat< TypeT > &A)
 
virtual RWSymEigDecomp< TypeT > operator() (const RWSymMat< TypeT > &A)
 

Detailed Description

template<class TypeT>
class RWSymEigServer< TypeT >

The class RWSymEigServer is an abstract base class for the symmetric eigenvalue server. For each precision, the Linear Algebra Module provides several derived types:

  • The class RWSymQREigServer uses the implicitly shifted QR method, switching between QR and QL variants in order to handle graded matrices effectively. This is the default server.
  • The class RWSymPDQREigServer uses a combination of Cholesky factorization and bidiagonal QR iteration. It applies to positive definite matrices only. The resulting eigenvalue decomposition may be significantly more accurate than those of the other servers.
  • The class RWSymRFQREigServer uses a version of the QR algorithm without square roots. It can only compute all the eigenvalues, and no eigenvectors.
  • The class RWSymSomeEigServer uses the bisection method to compute some of the eigenvalues and (optionally) eigenvectors. You can use this server to compute the first k largest eigenvalues, the first k smallest eigenvalues, or the i th through j th largest eigenvalues.
  • The class RWSymRangeEigServer uses bisection to compute all the eigenvalues and (optionally) eigenvectors in a real range.

This base class serves two purposes:

  • to provide a specification of the commonality between servers, and
  • to house implementation code common to several different servers.

The common implementation includes a set of protected routines to modify a given RWSymEigDecomp object. This way, all server classes, including any that you write, can access the internals of the decomposition object without being explicitly listed as friend classes.

Synopsis
#include <rw/lapack/seigsrv.h>
RWSymEigDecomp<double> eig = server(A); // A is a RWSymMat<double>
Encapsulates the eigenvalues and eigenvectors of a symmetric matrix.
Definition symeig.h:86
Abstract base class for the symmetric eigenvalue server.
Definition seigsrv.h:84
Example
See the specific server subclasses for examples.

Member Function Documentation

◆ computeEigenVectors()

template<class TypeT >
virtual bool RWSymEigServer< TypeT >::computeEigenVectors ( ) const
pure virtual

Returns true if this server is configured to compute eigenvectors as well as eigenvalues.

Implemented in RWSymPDQREigServer< TypeT >, RWSymQREigServer< TypeT >, RWSymRangeEigServer< TypeT >, RWSymRFQREigServer< TypeT >, and RWSymSomeEigServer< TypeT >.

◆ decompose()

template<class TypeT >
virtual RWSymEigDecomp< TypeT > RWSymEigServer< TypeT >::decompose ( const RWTriDiagDecomp< TypeT > & A)
pure virtual

Computes the eigenvalue decomposition of the tridiagonal matrix inside the tridiagonal decomposition. This pure virtual function is implemented in the specific server classes. It is used to implement the default operator()() functions.

Implemented in RWSymPDQREigServer< TypeT >, RWSymQREigServer< TypeT >, RWSymRangeEigServer< TypeT >, RWSymRFQREigServer< TypeT >, and RWSymSomeEigServer< TypeT >.

◆ operator()() [1/2]

template<class TypeT >
virtual RWSymEigDecomp< TypeT > RWSymEigServer< TypeT >::operator() ( const RWSymBandMat< TypeT > & A)
virtual

Computes a symmetric eigenvalue decomposition. The default method implemented in this class first constructs a tridiagonal decomposition from the given matrix, next computes the eigenvalue decomposition for that decomposition, and finally transforms the eigenvectors as required.

If self is an instance of RWSymPDQREigServer, the matrix you pass in must be positive definite.

◆ operator()() [2/2]

template<class TypeT >
virtual RWSymEigDecomp< TypeT > RWSymEigServer< TypeT >::operator() ( const RWSymMat< TypeT > & A)
virtual

Computes a symmetric eigenvalue decomposition. The default method implemented in this class first constructs a tridiagonal decomposition from the given matrix, next computes the eigenvalue decomposition for that decomposition, and finally transforms the eigenvectors as required.

If self is an instance of RWSymPDQREigServer, the matrix you pass in must be positive definite.

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