|
JMSLTM Numerical Library 4.0 | ||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object com.imsl.math.SymEigen
Computes the eigenvalues and eigenvectors of a real
symmetric matrix. Orthogonal similarity transformations are used to reduce
the matrix to an equivalent symmetric tridiagonal matrix. These
transformations are accumulated. An implicit rational QR algorithm is used
to compute the eigenvalues of this tridiagonal matrix. The eigenvectors are
computed using the eigenvalues as perfect shifts, Parlett (1980, pages 169,
172). The reduction routine is based on the EISPACK routine TRED2
.
See Smith et al. (1976) for the EISPACK routines. Further details, some timing
data, and credits are given in Hanson et al. (1990).
Let M = the number of eigenvalues, = the array of eigenvalues, and is the associated eigenvector with jth eigenvalue.
Also, let be the machine precision. The performance index, , is defined to be
While the exact value of is highly machine
dependent, the performance of SymEigen
is considered excellent if
, good if , and
poor if . The performance index was first
developed by the EISPACK project at Argonne National Laboratory; see Smith
et al. (1976, pages 124-125).
Constructor Summary | |
SymEigen(double[][] a)
Constructs the eigenvalues and the eigenvectors for a real symmetric matrix. |
|
SymEigen(double[][] a,
boolean computeVectors)
Constructs the eigenvalues and (optionally) the eigenvectors for a real symmetric matrix. |
Method Summary | |
double[] |
getValues()
Returns the eigenvalues |
double[][] |
getVectors()
Return the eigenvectors of a symmetric matrix of type double . |
double |
performanceIndex(double[][] a)
Returns the performance index of a real symmetric eigensystem. |
Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Constructor Detail |
public SymEigen(double[][] a)
a
- is the symmetric matrix whose eigensystem is to be constructed.public SymEigen(double[][] a, boolean computeVectors)
a
- a double
symmetric matrix whose eigensystem
is to be constructedcomputeVectors
- a boolean
, true if the eigenvectors
are to be computed
IllegalArgumentException
- is thrown when
the lengths of the rows of the input matrix are not uniform.Method Detail |
public double[] getValues()
double
array containing the eigenvalues in descending order.
If the algorithm fails to converge on an eigenvalue,
that eigenvalue is set to NaN.public double[][] getVectors()
double
.
double
array containing the eigenvectors. The j-th column
of the eigenvector matrix corresponds to the j-th eigenvalue.
The eigenvectors are normalized to have Euclidean length one.
If the eigenvectors were not computed by the constructor,
then null is returned.public double performanceIndex(double[][] a)
a
- a double
symmetric matrix
double
scalar value indicating how well
the algorithms which have computed the eigenvalue and
eigenvector pairs have performed. A performance index
less than 1 is considered excellent, 1 to 100 is good,
while greater than 100 is considered poor.
IllegalArgumentException
- is thrown when
the lengths of the rows of the input matrix are not uniform.
|
JMSLTM Numerical Library 4.0 | ||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |