org.openmali.decomposition
Class EigenvalueDecomposition

java.lang.Object
  extended by org.openmali.decomposition.EigenvalueDecomposition

public class EigenvalueDecomposition
extends java.lang.Object

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().


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

Constructor Detail

EigenvalueDecomposition

public EigenvalueDecomposition(MatrixMxNf A)
Check for symmetry, then construct the eigenvalue decomposition

Parameters:
A - Square matrix
Method Detail

getV

public MatrixMxNf getV()
Returns:
the eigenvector matrix

getRealEigenvalues

public float[] getRealEigenvalues()
Returns the real parts of the eigenvalues

Returns:
real(diag(D))

getImagEigenvalues

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

Returns:
imag(diag(D))

getD

public MatrixMxNf getD()
Returns:
the block diagonal eigenvalue matrix