Package cern.colt.matrix.linalg
Class EigenvalueDecomposition
- java.lang.Object
-
- cern.colt.matrix.linalg.EigenvalueDecomposition
-
- All Implemented Interfaces:
java.io.Serializable
public class EigenvalueDecomposition extends java.lang.Object implements java.io.Serializable
Eigenvalues and eigenvectors of a real matrix A.If A is symmetric, then A = V*D*V' where the eigenvalue matrix D is diagonal and the eigenvector matrix V is orthogonal. I.e. A = V.mult(D.mult(transpose(V))) and V.mult(transpose(V)) equals the identity matrix.
If A is not symmetric, then the eigenvalue matrix D is block diagonal with the real eigenvalues in 1-by-1 blocks and any complex eigenvalues, lambda + i*mu, in 2-by-2 blocks, [lambda, mu; -mu, lambda]. The columns of V represent the eigenvectors in the sense that A*V = V*D, i.e. A.mult(V) equals V.mult(D). The matrix V may be badly conditioned, or even singular, so the validity of the equation A = V*D*inverse(V) depends upon Algebra.cond(V).
- See Also:
- Serialized Form
-
-
Field Summary
Fields Modifier and Type Field Description private double
cdivi
private double
cdivr
private double[]
d
Arrays for internal storage of eigenvalues.private double[]
e
Arrays for internal storage of eigenvalues.private double[][]
H
Array for internal storage of nonsymmetric Hessenberg form.private boolean
issymmetric
Symmetry flag.private int
n
Row and column dimension (square matrix).private double[]
ort
Working storage for nonsymmetric algorithm.(package private) static long
serialVersionUID
private double[][]
V
Array for internal storage of eigenvectors.
-
Constructor Summary
Constructors Constructor Description EigenvalueDecomposition(DoubleMatrix2D A)
Constructs and returns a new eigenvalue decomposition object; The decomposed matrices can be retrieved via instance methods of the returned decomposition object.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description private void
cdiv(double xr, double xi, double yr, double yi)
DoubleMatrix2D
getD()
Returns the block diagonal eigenvalue matrix, D.DoubleMatrix1D
getImagEigenvalues()
Returns the imaginary parts of the eigenvalues.DoubleMatrix1D
getRealEigenvalues()
Returns the real parts of the eigenvalues.DoubleMatrix2D
getV()
Returns the eigenvector matrix, Vprivate void
hqr2()
Nonsymmetric reduction from Hessenberg to real Schur form.private void
orthes()
Nonsymmetric reduction to Hessenberg form.java.lang.String
toString()
Returns a String with (propertyName, propertyValue) pairs.private void
tql2()
Symmetric tridiagonal QL algorithm.private void
tred2()
Symmetric Householder reduction to tridiagonal form.
-
-
-
Field Detail
-
serialVersionUID
static final long serialVersionUID
- See Also:
- Constant Field Values
-
n
private int n
Row and column dimension (square matrix).
-
issymmetric
private boolean issymmetric
Symmetry flag.
-
d
private double[] d
Arrays for internal storage of eigenvalues.
-
e
private double[] e
Arrays for internal storage of eigenvalues.
-
V
private double[][] V
Array for internal storage of eigenvectors.
-
H
private double[][] H
Array for internal storage of nonsymmetric Hessenberg form.
-
ort
private double[] ort
Working storage for nonsymmetric algorithm.
-
cdivr
private transient double cdivr
-
cdivi
private transient double cdivi
-
-
Constructor Detail
-
EigenvalueDecomposition
public EigenvalueDecomposition(DoubleMatrix2D A)
Constructs and returns a new eigenvalue decomposition object; The decomposed matrices can be retrieved via instance methods of the returned decomposition object. Checks for symmetry, then constructs the eigenvalue decomposition.- Parameters:
A
- A square matrix.- Throws:
java.lang.IllegalArgumentException
- if A is not square.
-
-
Method Detail
-
cdiv
private void cdiv(double xr, double xi, double yr, double yi)
-
getD
public DoubleMatrix2D getD()
Returns the block diagonal eigenvalue matrix, D.- Returns:
- D
-
getImagEigenvalues
public DoubleMatrix1D getImagEigenvalues()
Returns the imaginary parts of the eigenvalues.- Returns:
- imag(diag(D))
-
getRealEigenvalues
public DoubleMatrix1D getRealEigenvalues()
Returns the real parts of the eigenvalues.- Returns:
- real(diag(D))
-
getV
public DoubleMatrix2D getV()
Returns the eigenvector matrix, V- Returns:
- V
-
hqr2
private void hqr2()
Nonsymmetric reduction from Hessenberg to real Schur form.
-
orthes
private void orthes()
Nonsymmetric reduction to Hessenberg form.
-
toString
public java.lang.String toString()
Returns a String with (propertyName, propertyValue) pairs. Useful for debugging or to quickly get the rough picture. For example,rank : 3 trace : 0
- Overrides:
toString
in classjava.lang.Object
-
tql2
private void tql2()
Symmetric tridiagonal QL algorithm.
-
tred2
private void tred2()
Symmetric Householder reduction to tridiagonal form.
-
-