The mathIT Library
A Java™ API for mathematics
org.mathIT.algebra

Class EigenvalueDecomposition

• public class EigenvalueDecomposition
extends Object
This class computes the eigenvalues and eigenvectors of a real square matrix A.

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×1) blocks and any complex eigenvalues, λ + i⋅μ, in (2×2) blocks, [λ, μ; -μ, λ]. 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⋅V-1 depends upon V.cond().

This class is a slight modification of the Java class by the JAMA Java Matrix Package by NIST, see http://math.nist.gov/javanumerics/jama/
Author:
JAMA, Andreas de Vries
• Constructor Detail

• EigenvalueDecomposition

public EigenvalueDecomposition(Matrix A)
Check for symmetry, then construct the eigenvalue decomposition Structure to access D and V.
Parameters:
A - square matrix
Throws:
IllegalArgumentException - if the matrix M is not square
• Method Detail

• getV

public Matrix getV()
Return a matrix with the real parts of the eigenvectors as columns
Returns:
the eigenvector matrix
• getRealEigenvalues

public double[] getRealEigenvalues()
Return the real parts of the eigenvalues
Returns:
the real parts of the eigenvalues
• getImagEigenvalues

public double[] getImagEigenvalues()
Return the imaginary parts of the eigenvalues
Returns:
the imaginary parts of the eigenvalues
• getD

public Matrix getD()
Returns the block diagonal eigenvalue matrix
Returns:
the block diagonal eigenvalue matrix D