Package edu.claflin.finder.algo.clustering.struct.leading_eigenvector_struct

# Class EigenvalueDecomposition

java.lang.Object
edu.claflin.finder.algo.clustering.struct.leading_eigenvector_struct.EigenvalueDecomposition

All Implemented Interfaces:
  `Serializable`

public class EigenvalueDecomposition extends Object implements Serializable
Eigenvalues and eigenvectors of a real matrix. Part of JAMAS and called in Matrix for further details check the comment at the top of the Matrix class in this package. 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().

See Also:
  - Serialized Form

- ## Field Summary

  Fields
  Modifier and Type
  Field
  Description
  `private double`
  `cdivi`
  `private double`
  `cdivr`
  `private double[]`
  `d`
  Arrays for internal storage of eigenvalues.
  `private double[]`
  `e`
  Arrays for internal storage of eigenvalues.
  `private double[][]`
  `H`
  Array for internal storage of nonsymmetric Hessenberg form.
  `private boolean`
  `issymmetric`
  Symmetry flag.
  `private int`
  `n`
  Row and column dimension (square matrix).
  `private double[]`
  `ort`
  Working storage for nonsymmetric algorithm.
  `private static final long`
  `serialVersionUID`
  `private double[][]`
  `V`
  Array for internal storage of eigenvectors.

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `EigenvalueDecomposition(Matrix Arg)`
  Check for symmetry, then construct the eigenvalue decomposition Structure to access D and V.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `private void`
  `cdiv(double xr, double xi, double yr, double yi)`
  `Matrix`
  `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
  `Matrix`
  `getV()`
  Return the eigenvector matrix
  `private void`
  `hqr2()`
  `private void`
  `orthes()`
  `private void`
  `tql2()`
  `private void`
  `tred2()`

  ### Methods inherited from class java.lang.Object

  `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- ## Field Details

  - ### 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

  - ### serialVersionUID

    private static final long serialVersionUID
    See Also:
      - Constant Field Values

- ## Constructor Details

  - ### EigenvalueDecomposition

    public EigenvalueDecomposition(Matrix Arg)
    Check for symmetry, then construct the eigenvalue decomposition Structure to access D and V.
    Parameters:
      `Arg` - Square matrix

- ## Method Details

  - ### tred2

    private void tred2()

  - ### tql2

    private void tql2()

  - ### orthes

    private void orthes()

  - ### cdiv

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

  - ### hqr2

    private void hqr2()

  - ### getV

    public Matrix getV()
    Return the eigenvector 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 Matrix getD()
    Return the block diagonal eigenvalue matrix
    Returns:
      D