public class SymEigen extends Object
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, \(\lambda\) = the array of eigenvalues, and \(x_j\) is the associated eigenvector with jth eigenvalue.
Also, let \(\varepsilon\) be the machine precision. The performance index, \(\tau\), is defined to be
$$\tau = \mathop{\max}\limits_{1 \le j \le M} \frac{\left\| Ax_j-\lambda _j x_j \right\|_1 }{10N\varepsilon \left\| A \right\|_1 \left\| x_j \right\|_1}$$
While the exact value of \(\tau\) is highly machine
dependent, the performance of SymEigen
is considered excellent if
\(\tau\lt 1\), good if \(1 \le 100\), and
poor if \(\tau> 100\). The performance index was first
developed by the EISPACK project at Argonne National Laboratory; see Smith
et al. (1976, pages 124-125).
Constructor and Description |
---|
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.
|
Modifier and Type | Method and Description |
---|---|
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.
|
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 computedIllegalArgumentException
- is thrown when
the lengths of the rows of the input matrix are not uniform.public double[] getValues()
double
array containing the eigenvalues sorted
by absolute value 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 matrixdouble
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.Copyright © 2020 Rogue Wave Software. All rights reserved.