>
>#include <rw/fseigsrv.h> // FloatSymRangeEigServer #include <rw/dseigsrv.h> // DoubleSymRangeEigServer #include <rw/cheigsrv.h> // DComplexHermRangeEigServer DoubleSymRangeEigServer server; DoubleSymEigDecomp eig = server(A); // A is a
// DoubleSym[Band]Mat
The symmetric eigenvalue server classes, {TYPE}SymRangeEigServer and DComplexHermRangeEigServer, allow the computation of only the eigenvalues in a given range and (optionally) their corresponding eigenvectors. The computation uses the bisection method to find the eigenvalues, followed by inverse iteration to find the eigenvectors.
>#include <rw/dseigsrv.h> main() { DoubleSymMat A; // input a matrix cin >> A; DoubleRangeEigServer server; // configure a server server.setRange(RWSlice(0,5)); // the 5 smallest eigenvalues DoubleSymEigDecomp eig = server(A); }>
FloatSymRangeEigServer(RWBoolean computeVecs=TRUE); DoubleSymRangeEigServer(RWBoolean computeVecs=TRUE); DComplexHermRangeEigServer(RWBoolean computeVecs=TRUE);
Constructs a server. The parameter indicates whether this server should be configured to compute eigenvectors as well as eigenvalues. The new server is configured to compute all eigenvalues.
void FloatSymRangeEigServer::computeEigenVectors(RWBoolean); void DoubleSymRangeEigServer::computeEigenVectors(RWBoolean); void DComplexHermRangeEigServer::computeEigenVectors(RWBoolean);
Sets whether or not the server should compute eigenvectors as well as eigenvalues.
RWBoolean FloatSymRangeEigServer::computeEigenVectors() const; RWBoolean DoubleSymRangeEigServer::computeEigenVectors() const; RWBoolean DComplexHermRangeEigServer::computeEigenVectors() const;
Returns TRUE if this server is configured to compute eigenvectors as well as eigenvalues.
FloatSymEigDecomp FloatSymRangeEigServer::decompose
(const FloatSymTriDiagDecomp& A) const DoubleSymEigDecomp DoubleSymRangeEigServer::decompose
(const DoubleSymTriDiagDecomp& A) const DoubleSymEigDecomp DComplexHermRangeEigServer::decompose
(const DoubleSymTriDiagDecomp& A) const
Computes the eigenvalue decomposition of the tridiagonal matrix inside the tridiagonal decomposition.
void FloatSymRangeEigServer::setLarge(float); void DoubleSymRangeEigServer::setLarge(double); void DComplexHermRangeEigServer::setLarge(double);
Sets the upper boundary on the range of eigenvalues to be computed.
void FloatSymRangeEigServer::setRange(float a, float b); void DoubleSymRangeEigServer::setRange(double,double); void DComplexHermRangeEigServer::setRange(double,double);
Sets the range of eigenvalues to be computed. To set up a range which is open on one side (extends to infinity), you can use the setSmall or setLarge functions.
void FloatSymRangeEigServer::setSmall(float); void DoubleSymRangeEigServer::setSmall(double); void DComplexHermRangeEigServer::setSmall(double);
Sets the lower boundary on the range of eigenvalues to be computed.
float FloatSymRangeEigServer::setTolerance(float); double DoubleSymRangeEigServer::setTolerance(double); double DComplexHermRangeEigServer::setTolerance(double);
Sets the tolerance to which you must compute the eigenvalues. Returns the previous tolerance.
FloatSymEigDecomp FloatSymRangeEigDecomp::operator()
(const FloatSymMat& A) const; FloatSymEigDecomp FloatSymRangeEigDecomp::operator()
(const FloatSymBandMat& A) const; DoubleSymEigDecomp DoubleSymRangeEigDecomp::operator()
(const DoubleSymMat& A) const; DoubleSymEigDecomp DoubleSymRangeEigDecomp::operator()
(const DoubleSymBandMat& A) const; DComplexSymEigDecomp DComplexSymRangeEigDecomp::operator()
(const DComplexSymMat& A) const; DComplexHermEigDecomp DComplexHermRangeEigDecomp::operator()
(const DComplexHermBandMat& A) const;
Computes a symmetric eigenvalue decomposition.
©Copyright 1999, Rogue Wave Software, Inc.
Send mail to report errors or comment on the documentation.