Class R3x3EigenDecomposition

java.lang.Object
xal.tools.math.r3.R3x3EigenDecomposition

public class R3x3EigenDecomposition extends Object

Essentially this class is just a wrapper over the Jama matrix package class EigenvalueDecomposition. Thus, XAL can present a consistent interface in the event that Jama gets removed/replaced in the future.

If the matrix A is invertible it can be decomposed as

    A = VDV-1

where V is an invertible matrix in the special linear group SL(3) ⊂ R3×3 and D is the the real matrix with 2×2 blocks consisting of the real and imaginary parts of the eigenvalues on the diagonal. (Each eigenvalue of matrix A is the diagonal of the Jacobi block.)

The columns of V are the eigenvectors of A in the sense that AV = VD. Note that the matrix V may be badly conditioned, or even singular, so that the above equation may not be valid.

Author:
Christopher K. Allen
  • Constructor Details

    • R3x3EigenDecomposition

      public R3x3EigenDecomposition(R3x3 matTarget) throws IllegalArgumentException
      Package constructor for R3x3JacobiDecomposition objects. The provided matrix must be symmetric.
      Parameters:
      matTarget - target matrix to factorize
      Throws:
      IllegalArgumentException - matrix is not symmetric or zero eigenvalue
  • Method Details

    • getRealEigenvalues

      public double[] getRealEigenvalues()
      Get the real part of the eigenvalues.
    • getImagEigenvalues

      @Deprecated public double[] getImagEigenvalues()
      Deprecated.
      These will always be 0, as we only use this class for symmetric matrices.
      Get the imaginary parts of the eigenvalues.
    • getEigenvectorMatrix

      public R3x3 getEigenvectorMatrix()
      Get the matrix V of eigenvectors (columns) for the decomposition. Note that this matrix is the diagonalizing (in the Jacaobi sense) matrix for the target matrix A. If the target matrix A is symmetric then the returned matrix V will be in the special orthogonal group SO(3). Note that, in general, this matrix may be ill conditioned.
      Returns:
      diagonalizing matrix of A
    • getEigenvalueMatrix

      public R3x3 getEigenvalueMatrix()
      Return the matrix D of eigenvalues in the decomposition. Note that if target matrix A is symmetric then this matrix will be diagonal.
      Returns:
      block diagonal matrix D of eigenvalues of A