Module: Linear Algebra Group: Symmetric Eigenvalue Decomposition classes
Does not inherit
#include <rw/lapack/seigsrv.h> RWSymRangeEigServer<double> server; RWSymEigDecomp<double> eig = server(A); // A is a
// RWSymBandMat<double> #include <rw/lapack/heigsrv.h> RWHermRangeEigServer<double> server; RWHermEigDecomp<double> eig = server(A); // A is a
// RWHermBandMat<DComplex>
The symmetric eigenvalue server class, RWSymRangeEigServer<T>, and the Hermitian eigenvalue server class, RWHermRangeEigServer<T>, 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 <iostream> #include <rw/lapack/seigsrv.h> int main() { RWSymMat<double> A; // input a matrix std::cin >> A; RWSymRangeEigServer<double> server; // configure a
server server.setRange(RWSlice(0.0,0.5)); // the 5 smallest
eigenvalues RWSymEigDecomp<double> eig = server(A); return 0; }
RWSymRangeEigServer(bool computeVecs=true); RWHermRangeEigServer(bool 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 RWSymRangeEigServer<T>::computeEigenVectors (bool); void RWHermRangeEigServer<T>::computeEigenVectors
(bool);
Sets whether or not the server should compute eigenvectors as well as eigenvalues.
bool RWSymRangeEigServer<T>::computeEigenVectors() const; bool RWHermRangeEigServer<T>::computeEigenVectors() const;
Returns true if this server is configured to compute eigenvectors as well as eigenvalues.
RWSymEigDecomp<T> RWSymRangeEigServer<T>::decompose
(const RWSymTriDiagDecomp<T>& A) const RWSymEigDecomp<double> RWHermRangeEigServer<DComplex>::decompose
(const RWSymTriDiagDecomp<double>& A) const
Computes the eigenvalue decomposition of the tridiagonal matrix inside the tridiagonal decomposition.
T RWSymRangeEigServer<T>::setLarge(float); double RWHermRangeEigServer<DComplex>::setLarge(double);
Sets the upper boundary on the range of eigenvalues to be computed. Returns the previous upper boundary.
void RWSymRangeEigServer<T>::setRange(float, float); void RWHermRangeEigServer<DComplex>::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.
T RWSymRangeEigServer<T>::setSmall(float); double RWHermRangeEigServer<DComplex>::setSmall(double);
Sets the lower boundary on the range of eigenvalues to be computed. Returns the previous lower boundary.
T RWSymRangeEigServer<T>::setTolerance(T); double RWHermRangeEigServer<DComplex>::setTolerance(double);
Sets the tolerance to which you must compute the eigenvalues. Returns the previous tolerance.
RWSymEigDecomp<T> RWSymRangeEigServer<T>::operator()
(const RWSymMat<T>& A) const; RWSymEigDecomp<T> RWSymRangeEigServer<T>::operator()
(const RWSymBandMat<T>& A) const; RWHermEigDecomp<DComplex> RWHermRangeEigServer<DComplex>::operator()
(const RWHermMat<DComplex>& A) const; RWHermEigDecomp<DComplex> RWHermRangeEigServer<DComplex>::operator()
(const RWHermBandMat<DComplex>& A) const;
Computes a symmetric eigenvalue decomposition.
© 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.