Jama
Class EigenvalueDecomposition

java.lang.Object
  extended byJama.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.

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.times(D.times(V.transpose())) and V.times(V.transpose()) 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.times(V) equals V.times(D). The matrix V may be badly conditioned, or even singular, so the validity of the equation A = V*D*inverse(V) depends upon V.cond().

See Also:
Serialized Form

Field Summary
private  double cdivi
           
private  double cdivr
           
private  double[] d
          Arrays for internal storage of eigenvalues.
static boolean DEBUG
           
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.
private  double[][] V
          Array for internal storage of eigenvectors.
 
Constructor Summary
EigenvalueDecomposition(Matrix Arg)
          Check for symmetry, then construct the eigenvalue decomposition
 
Method Summary
private  void cdiv(double xr, double xi, double yr, double yi)
           
 Matrix getD()
          Return the block diagonal eigenvalue matrix
 double[] getImagEigenvalues()
          Return the imaginary parts of the eigenvalues
 double[] getRealEigenvalues()
          Return the real parts of the eigenvalues
 Matrix getV()
          Return the eigenvector matrix
private  void hqr2()
           
private  void orthes()
           
private  void tql2()
           
private  void tred2()
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

cdivi

private transient double cdivi

cdivr

private transient double cdivr

d

private double[] d
Arrays for internal storage of eigenvalues.


DEBUG

public static boolean DEBUG

e

private double[] e
Arrays for internal storage of eigenvalues.


H

private double[][] H
Array for internal storage of nonsymmetric Hessenberg form.


issymmetric

private boolean issymmetric
Symmetry flag.


n

private int n
Row and column dimension (square matrix).


ort

private double[] ort
Working storage for nonsymmetric algorithm.


V

private double[][] V
Array for internal storage of eigenvectors.

Constructor Detail

EigenvalueDecomposition

public EigenvalueDecomposition(Matrix Arg)
Check for symmetry, then construct the eigenvalue decomposition

Method Detail

cdiv

private void cdiv(double xr,
                  double xi,
                  double yr,
                  double yi)

getD

public Matrix getD()
Return the block diagonal eigenvalue matrix

Returns:
D

getImagEigenvalues

public double[] getImagEigenvalues()
Return the imaginary parts of the eigenvalues

Returns:
imag(diag(D))

getRealEigenvalues

public double[] getRealEigenvalues()
Return the real parts of the eigenvalues

Returns:
real(diag(D))

getV

public Matrix getV()
Return the eigenvector matrix

Returns:
V

hqr2

private void hqr2()

orthes

private void orthes()

tql2

private void tql2()

tred2

private void tred2()