Class EigenvalueDecomposition

java.lang.Object
cern.colt.matrix.linalg.EigenvalueDecomposition
All Implemented Interfaces:
Serializable

public class EigenvalueDecomposition extends Object implements Serializable
Eigenvalues and eigenvectors of a real 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.mult(D.mult(transpose(V))) and V.mult(transpose(V)) 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.mult(V) equals V.mult(D). The matrix V may be badly conditioned, or even singular, so the validity of the equation A = V*D*inverse(V) depends upon Algebra.cond(V).

See Also:
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    private double
     
    private double
     
    private double[]
    Arrays for internal storage of eigenvalues.
    private double[]
    Arrays for internal storage of eigenvalues.
    private double[][]
    Array for internal storage of nonsymmetric Hessenberg form.
    private boolean
    Symmetry flag.
    private int
    Row and column dimension (square matrix).
    private double[]
    Working storage for nonsymmetric algorithm.
    (package private) static final long
     
    private double[][]
    Array for internal storage of eigenvectors.
  • Constructor Summary

    Constructors
    Constructor
    Description
    Constructs and returns a new eigenvalue decomposition object; The decomposed matrices can be retrieved via instance methods of the returned decomposition object.
  • Method Summary

    Modifier and Type
    Method
    Description
    private void
    cdiv(double xr, double xi, double yr, double yi)
     
    Returns the block diagonal eigenvalue matrix, D.
    Returns the imaginary parts of the eigenvalues.
    Returns the real parts of the eigenvalues.
    Returns the eigenvector matrix, V
    private void
    Nonsymmetric reduction from Hessenberg to real Schur form.
    private void
    Nonsymmetric reduction to Hessenberg form.
    Returns a String with (propertyName, propertyValue) pairs.
    private void
    Symmetric tridiagonal QL algorithm.
    private void
    Symmetric Householder reduction to tridiagonal form.

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
  • Field Details

    • serialVersionUID

      static final long serialVersionUID
      See Also:
    • 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 Details

    • EigenvalueDecomposition

      public EigenvalueDecomposition(DoubleMatrix2D A)
      Constructs and returns a new eigenvalue decomposition object; The decomposed matrices can be retrieved via instance methods of the returned decomposition object. Checks for symmetry, then constructs the eigenvalue decomposition.
      Parameters:
      A - A square matrix.
      Throws:
      IllegalArgumentException - if A is not square.
  • Method Details

    • cdiv

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

      public DoubleMatrix2D getD()
      Returns the block diagonal eigenvalue matrix, D.
      Returns:
      D
    • getImagEigenvalues

      public DoubleMatrix1D getImagEigenvalues()
      Returns the imaginary parts of the eigenvalues.
      Returns:
      imag(diag(D))
    • getRealEigenvalues

      public DoubleMatrix1D getRealEigenvalues()
      Returns the real parts of the eigenvalues.
      Returns:
      real(diag(D))
    • getV

      public DoubleMatrix2D getV()
      Returns the eigenvector matrix, V
      Returns:
      V
    • hqr2

      private void hqr2()
      Nonsymmetric reduction from Hessenberg to real Schur form.
    • orthes

      private void orthes()
      Nonsymmetric reduction to Hessenberg form.
    • toString

      public String toString()
      Returns a String with (propertyName, propertyValue) pairs. Useful for debugging or to quickly get the rough picture. For example,
      rank          : 3
      trace         : 0
      
      Overrides:
      toString in class Object
    • tql2

      private void tql2()
      Symmetric tridiagonal QL algorithm.
    • tred2

      private void tred2()
      Symmetric Householder reduction to tridiagonal form.