jmathlib.toolbox.jmathlib.matrix._private.Jama
Class EigenvalueDecomposition

java.lang.Object
  extended by jmathlib.toolbox.jmathlib.matrix._private.Jama.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.
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(double[][] A)
          Check for symmetry, then construct the eigenvalue decomposition
EigenvalueDecomposition(Matrix Arg)
           
 
Method Summary
private  void cdiv(double xr, double xi, double yr, double yi)
           
 double[][] 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
 double[][] getV()
          Return the eigenvector matrix
private  void hqr2()
           
static double hypot(double a, double b)
          sqrt(a^2 + b^2) without under/overflow.
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

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(Matrix Arg)

EigenvalueDecomposition

public EigenvalueDecomposition(double[][] A)
Check for symmetry, then construct the eigenvalue decomposition

Parameters:
A - Square matrix
Method Detail

tred2

private void tred2()

tql2

private void tql2()

orthes

private void orthes()

cdiv

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

hqr2

private void hqr2()

getV

public double[][] getV()
Return the eigenvector matrix

Returns:
V

getRealEigenvalues

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

Returns:
real(diag(D))

getImagEigenvalues

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

Returns:
imag(diag(D))

getD

public double[][] getD()
Return the block diagonal eigenvalue matrix

Returns:
D

hypot

public static double hypot(double a,
                           double b)
sqrt(a^2 + b^2) without under/overflow.


FOOTER

BOTTOM