rwlogo
SourcePro C++ 12.0

SourcePro® C++ API Reference Guide



   SourcePro C++
Documentation Home

RWSchurEigServer< TypeT > Class Template Reference
[Nonsymmetric Eigenvalue Decomposition]

Encapsulates Schur decomposition eigenvalue servers used to construct eigenvalue decomposition objects of type RWEigDecomp<T> from Schur decompositions. More...

#include <rw/lapack/eigsrv.h>

Inheritance diagram for RWSchurEigServer< TypeT >:
RWEigServer< TypeT >

List of all members.

Public Member Functions

 RWSchurEigServer (bool computeLeftVecs=true, bool computeRightVecs=true, bool scale=true, bool permute=true)
virtual RWEigDecomp< TypeT > operator() (const RWGenMat< TypeT > &A)
virtual RWEigDecomp< TypeT > operator() (const RWBalanceDecomp< TypeT > &A)
virtual RWEigDecomp< TypeT > operator() (const RWHessenbergDecomp< TypeT > &A)
virtual RWEigDecomp< TypeT > operator() (const RWSchurDecomp< TypeT > &A)
bool computeLeftEigenVectors () const
void computeLeftEigenVectors (bool)
bool computeRightEigenVectors () const
void computeRightEigenVectors (bool)
bool computeAllEigenVectors () const
bool scale () const
void scale (bool)
void selectEigenVectors (const RWMathVec< int > &)
void selectEigenVectors (const RWSlice &)
bool permute () const
void permute (bool)
void balance (bool)

Detailed Description

template<class TypeT>
class RWSchurEigServer< TypeT >

The class RWSchurEigServer<T> encapsulates Schur decomposition eigenvalue servers. These servers are used to construct eigenvalue decomposition objects of type RWEigDecomp<T> from Schur decompositions. A server can be configured to control which eigenvectors are computed, and other details of the computation.

Synopsis

 #include <rw/lapack/eigsrv.h>
 
 RWSchurEigServer<double> server;
 RWSchurEigDecomp<double> deig = server(A);   // A is an
                                       // RWGenMat<double>

Examples

 #include <iostream>
 #include <rw/lapack/eigsrv.h>
 
 int main()
 {
     RWGenMat<double> A;            // input a matrix
     std::cin >> A;
 
     RWSchurEigServer<double> server;   // configure a server
     server.balance(false);         // turn off balancing option
     server.selectEigenVectors(RWMathVec<int>("[1 2 3 8 9]"));
     
     RWSchurEigDecomp<double> deig = server(A);
 }

Constructor & Destructor Documentation

template<class TypeT>
RWSchurEigServer< TypeT >::RWSchurEigServer ( bool  computeLeftVecs = true,
bool  computeRightVecs = true,
bool  scale = true,
bool  permute = true 
)

Constructs a server. You can adjust some basic options at construction time, or adjust them later using member functions.


Member Function Documentation

template<class TypeT>
void RWSchurEigServer< TypeT >::balance ( bool   ) 

Controls whether to do permutation and scaling transformations (balancing) before computing the eigenvalue decomposition.

template<class TypeT>
bool RWSchurEigServer< TypeT >::computeAllEigenVectors (  )  const

Returns true if this server is configured to compute all the eigenvectors.

template<class TypeT>
void RWSchurEigServer< TypeT >::computeLeftEigenVectors ( bool   ) 

Configures whether or not left eigenvectors are to be computed.

template<class TypeT>
bool RWSchurEigServer< TypeT >::computeLeftEigenVectors (  )  const

Returns whether or not this server is configured to compute the left eigenvectors.

template<class TypeT>
void RWSchurEigServer< TypeT >::computeRightEigenVectors ( bool   ) 

Configures whether or not right eigenvectors are to be computed.

template<class TypeT>
bool RWSchurEigServer< TypeT >::computeRightEigenVectors (  )  const

Returns whether or not this server is configured to compute the right eigenvectors.

template<class TypeT>
virtual RWEigDecomp<TypeT> RWSchurEigServer< TypeT >::operator() ( const RWSchurDecomp< TypeT > &  A  )  [virtual]

Computes an eigenvalue decomposition.

template<class TypeT>
virtual RWEigDecomp<TypeT> RWSchurEigServer< TypeT >::operator() ( const RWHessenbergDecomp< TypeT > &  A  )  [virtual]

Computes an eigenvalue decomposition.

template<class TypeT>
virtual RWEigDecomp<TypeT> RWSchurEigServer< TypeT >::operator() ( const RWBalanceDecomp< TypeT > &  A  )  [virtual]

Computes an eigenvalue decomposition.

template<class TypeT>
virtual RWEigDecomp<TypeT> RWSchurEigServer< TypeT >::operator() ( const RWGenMat< TypeT > &  A  )  [virtual]

Computes an eigenvalue decomposition.

Implements RWEigServer< TypeT >.

template<class TypeT>
void RWSchurEigServer< TypeT >::permute ( bool   ) 

Configures whether or not to do a permutation transformation before computing the eigenvalues. Sometimes this can result in less computation.

template<class TypeT>
bool RWSchurEigServer< TypeT >::permute (  )  const

Returns true if the server is configured to attempt a permutation before computing the eigenvalues. Sometimes this can result in less computation.

template<class TypeT>
void RWSchurEigServer< TypeT >::scale ( bool   ) 

Configures whether or not to do a scaling transformation before computing the eigenvalues. Sometimes this transformation can result in more accurate eigenvalues.

template<class TypeT>
bool RWSchurEigServer< TypeT >::scale (  )  const

Returns true if the server is configured to do a scaling transformation before computing the eigenvalues. Sometimes this transformation can result in more accurate eigenvalues.

template<class TypeT>
void RWSchurEigServer< TypeT >::selectEigenVectors ( const RWSlice  ) 

Selects which eigenvectors are to be computed. This call causes the server to forget which eigenvectors were previously selected. With a real (as opposed to complex) eigenserver object, selecting either of a complex conjugate pair of eigenvalues causes both to be selected.

template<class TypeT>
void RWSchurEigServer< TypeT >::selectEigenVectors ( const RWMathVec< int > &   ) 

Selects which eigenvectors are to be computed. This call causes the server to forget which eigenvectors were previously selected. With a real (as opposed to complex) eigenserver object, selecting either of a complex conjugate pair of eigenvalues causes both to be selected.

 All Classes Functions Variables Typedefs Enumerations Enumerator Friends

© Copyright Rogue Wave Software, Inc. All Rights Reserved.
Rogue Wave and SourcePro are registered trademarks of Rogue Wave Software, Inc. in the United States and other countries. All other trademarks are the property of their respective owners.
Contact Rogue Wave about documentation or support issues.