edu.northwestern.at.utils.math.matrix
Class EigenvalueDecomposition

java.lang.Object
  extended by edu.northwestern.at.utils.math.matrix.EigenvalueDecomposition

public class EigenvalueDecomposition
extends java.lang.Object

Eigenvalue decomposition of a 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().

The is the JAMA code with modifications for our matrix class.


Constructor Summary
EigenvalueDecomposition(Matrix matrix)
          Check for symmetry, then construct the eigenvalue decomposition
 
Method Summary
 Matrix getD()
          Return the block diagonal eigenvalue matrix.
 double[] getImagEigenvalues()
          Return imaginary parts of the eigenvalues.
 double[] getRealEigenvalues()
          Return real parts of the eigenvalues.
 Matrix getV()
          Return the eigenvector matrix.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

EigenvalueDecomposition

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

Parameters:
matrix - Square matrix for which to compute eigenstructure.
Method Detail

getV

public Matrix getV()
Return the eigenvector matrix.

Returns:
Matrix of eigenvectors.

getRealEigenvalues

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

Returns:
real(diag(D))

getImagEigenvalues

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

Returns:
double vector of imaginary parts of eigenvalues.

getD

public Matrix getD()
Return the block diagonal eigenvalue matrix.

Returns:
n x n block diagonal eigenvalue matrix.