papaya
Class Eigenvalue

java.lang.Object
  extended by papaya.Eigenvalue

public class Eigenvalue
extends 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().

Shamelessly copied (and modified) from the JAMA Java Matrix package. To make things compatible with how most users use Processing, the class take in float matrices. However, to preserve the acccuracy of the computations, the algorithm first casts the input into a double array, prior to doing anything. All methods also return doubles; Use Cast.doubleToFloat(double[][]) if you want/need to cast everything back to floats for further (non-high-accuracy-dependant) processing (pun intended).


Constructor Summary
Eigenvalue(float[][] Arg)
          Check for symmetry, then construct the eigenvalue decomposition.
 
Method Summary
 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 with each column corresponding to an eigenvector of the input matrix.
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

Eigenvalue

public Eigenvalue(float[][] Arg)
Check for symmetry, then construct the eigenvalue decomposition. Upon initialization, the matrices D and V, as well as the vectors containing the real and imaginary eigenvalues are computed and stored.

See Also:
getV(), getD(), getRealEigenvalues(), getImagEigenvalues()
Method Detail

getV

public double[][] getV()
Return the eigenvector matrix with each column corresponding to an eigenvector of the input 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


Processing library papaya by Adila Faruk. (C) 2014