Class Eigen
Eigen computes the eigenvalues and eigenvectors of a real
matrix. The matrix is first balanced. Orthogonal similarity transformations
are used to reduce the balanced matrix to a real upper Hessenberg matrix.
The implicit double-shifted QR algorithm is used to compute the eigenvalues
and eigenvectors of this Hessenberg matrix. The eigenvectors are normalized
such that each has Euclidean length of value one. The largest component is
real and positive.
The balancing routine is based on the EISPACK routine BALANC.
The reduction routine is based on the EISPACK routines ORTHES and
ORTRAN. The QR algorithm routine is based on the EISPACK routine
HQR2. See Smith et al. (1976) for the EISPACK routines. Further
details, some timing data, and credits are given in Hanson et al. (1990).
While the exact value of the performance index, \(\tau\),
is highly machine dependent, the performance of Eigen is
considered excellent if \(\tau \lt 1\), good if
\(1 \le \tau \le 100\), and poor if
\( \tau \gt 100\).
The performance index was first developed by the EISPACK project at Argonne National Laboratory; see Smith et al. (1976, pages 124-125).
- See Also:
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic classThe iteration did not converge -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionintReturns the maximum number of iterations.Complex[]Returns the eigenvalues of a matrix of typedouble.Complex[][]Returns the eigenvectors.doubleperformanceIndex(double[][] a) Returns the performance index of a real eigensystem.voidsetMaxIterations(int maxIterations) Set the maximum number of iterations allowed.voidsolve(double[][] a, boolean computeVectors) Solves for the eigenvalues and (optionally) the eigenvectors of a real square matrix.
-
Constructor Details
-
Eigen
public Eigen()Constructs the eigenvalues and the eigenvectors of a real square matrix. -
Eigen
Deprecated.UseEigen()instead.Constructs the eigenvalues and the eigenvectors of a real square matrix.- Parameters:
a- is thedoublesquare matrix whose eigensystem is to be constructed- Throws:
Eigen.DidNotConvergeException- is thrown when the algorithm fails to converge on the eigenvalues of the matrix.
-
Eigen
Deprecated.UseEigen()instead.Constructs the eigenvalues and (optionally) the eigenvectors of a real square matrix.- Parameters:
a- is thedoublesquare matrix whose eigensystem is to be constructedcomputeVectors- is true if the eigenvectors are to be computed- Throws:
Eigen.DidNotConvergeException- is thrown when the algorithm fails to converge on the eigenvalues of the matrix.
-
-
Method Details
-
solve
Solves for the eigenvalues and (optionally) the eigenvectors of a real square matrix.- Parameters:
a- is thedoublesquare matrix for which the eigenvalues and (optionally) eigenvectors are to be foundcomputeVectors- is true if the eigenvectors are to be computed- Throws:
Eigen.DidNotConvergeException- is thrown when the algorithm fails to converge on the eigenvalues of the matrix.
-
setMaxIterations
public void setMaxIterations(int maxIterations) Set the maximum number of iterations allowed.- Parameters:
maxIterations- anintspecifying the maximum number of iterations allowed.maxIterationsmust be greater than 0. By default,maxIterations= 50.
-
getMaxIterations
public int getMaxIterations()Returns the maximum number of iterations.- Returns:
- an
intcontaining the maximum number of iterations.
-
getValues
Returns the eigenvalues of a matrix of typedouble.- Returns:
- a
Complexarray containing the eigenvalues of this matrix in descending order
-
getVectors
Returns the eigenvectors.- Returns:
- A
Complexmatrix containing the eigenvectors. The eigenvector corresponding to the j-th eigenvalue is stored in the j-th column. Each vector is normalized to have Euclidean length one.
-
performanceIndex
public double performanceIndex(double[][] a) Returns the performance index of a real eigensystem.- Parameters:
a- adoublematrix- Returns:
- A
doublescalar 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.
-
Eigen()instead.