Class SymmetricQREigenHelper_FDRM

java.lang.Object
org.ejml.dense.row.decomposition.eig.symm.SymmetricQREigenHelper_FDRM

@Generated("org.ejml.dense.row.decomposition.eig.symm.SymmetricQREigenHelper_DDRM") public class SymmetricQREigenHelper_FDRM extends Object
A helper class for the symmetric matrix implicit QR algorithm for eigenvalue decomposition. Performs most of the basic operations needed to extract eigenvalues and eigenvectors.
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    protected float[]
     
     
    protected int
     
    protected int
     
    protected int
     
    protected int
     
    protected float[]
     
    protected @Nullable org.ejml.data.FMatrixRMaj
     
    protected Random
     
    protected int[]
     
    protected int
     
    protected int
     
    protected int
     
  • Constructor Summary

    Constructors
    Constructor
    Description
     
  • Method Summary

    Modifier and Type
    Method
    Description
    float
     
    float
     
    float[]
    copyDiag(float[] ret)
     
    float[]
    copyEigenvalues(float[] ret)
     
    float[]
    copyOff(float[] ret)
     
    protected void
    createBulge(int x1, float p, boolean byAngle)
    Performs a similar transform on A-pI
    protected void
    createBulge2by2(int x1, float p, boolean byAngle)
     
    protected void
    Computes the eigenvalue of the 2 by 2 matrix.
    void
    Perform a shift in a random direction that is of the same magnitude as the elements in the matrix.
    int
     
    void
     
    void
    init(float[] diag, float[] off, int numCols)
    Sets up and declares internal data structures.
    protected boolean
    isZero(int index)
    Checks to see if the specified off diagonal element is zero using a relative metric.
    boolean
    Tells it to process the submatrix at the next split.
    protected void
    performImplicitSingleStep(float lambda, boolean byAngle)
     
    void
     
    protected void
    removeBulge(int x1)
     
    protected void
    Rotator to remove the bulge
    void
    reset(int N)
    Sets the size of the matrix being decomposed, declares new memory if needed, and sets all helper functions to their initial value.
    void
     
    void
    setQ(org.ejml.data.FMatrixRMaj q)
     
    void
    setSubmatrix(int x1, int x2)
    Sets which submatrix is being processed.
    float[]
    swapDiag(float[] diag)
    Exchanges the internal array of the diagonal elements for the provided one.
    float[]
    swapOff(float[] off)
    Exchanges the internal array of the off diagonal elements for the provided one.
    protected void
    updateQ(int m, int n, float c, float s)
     

    Methods inherited from class java.lang.Object

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

    • rand

      protected Random rand
    • steps

      protected int steps
    • numExceptional

      protected int numExceptional
    • lastExceptional

      protected int lastExceptional
    • eigenSmall

      protected EigenvalueSmall_F32 eigenSmall
    • Q

      @Nullable protected @Nullable org.ejml.data.FMatrixRMaj Q
    • N

      protected int N
    • diag

      protected float[] diag
    • off

      protected float[] off
    • x1

      protected int x1
    • x2

      protected int x2
    • splits

      protected int[] splits
    • numSplits

      protected int numSplits
  • Constructor Details

    • SymmetricQREigenHelper_FDRM

      public SymmetricQREigenHelper_FDRM()
  • Method Details

    • printMatrix

      public void printMatrix()
    • setQ

      public void setQ(org.ejml.data.FMatrixRMaj q)
    • incrementSteps

      public void incrementSteps()
    • init

      public void init(float[] diag, float[] off, int numCols)
      Sets up and declares internal data structures.
      Parameters:
      diag - Diagonal elements from tridiagonal matrix. Modified.
      off - Off diagonal elements from tridiagonal matrix. Modified.
      numCols - number of columns (and rows) in the matrix.
    • swapDiag

      public float[] swapDiag(float[] diag)
      Exchanges the internal array of the diagonal elements for the provided one.
    • swapOff

      public float[] swapOff(float[] off)
      Exchanges the internal array of the off diagonal elements for the provided one.
    • reset

      public void reset(int N)
      Sets the size of the matrix being decomposed, declares new memory if needed, and sets all helper functions to their initial value.
    • copyDiag

      public float[] copyDiag(float[] ret)
    • copyOff

      public float[] copyOff(float[] ret)
    • copyEigenvalues

      public float[] copyEigenvalues(float[] ret)
    • setSubmatrix

      public void setSubmatrix(int x1, int x2)
      Sets which submatrix is being processed.
      Parameters:
      x1 - Lower bound, inclusive.
      x2 - Upper bound, inclusive.
    • isZero

      protected boolean isZero(int index)
      Checks to see if the specified off diagonal element is zero using a relative metric.
    • performImplicitSingleStep

      protected void performImplicitSingleStep(float lambda, boolean byAngle)
    • updateQ

      protected void updateQ(int m, int n, float c, float s)
    • createBulge

      protected void createBulge(int x1, float p, boolean byAngle)
      Performs a similar transform on A-pI
    • createBulge2by2

      protected void createBulge2by2(int x1, float p, boolean byAngle)
    • removeBulge

      protected void removeBulge(int x1)
    • removeBulgeEnd

      protected void removeBulgeEnd(int x1)
      Rotator to remove the bulge
    • eigenvalue2by2

      protected void eigenvalue2by2(int x1)
      Computes the eigenvalue of the 2 by 2 matrix.
    • exceptionalShift

      public void exceptionalShift()
      Perform a shift in a random direction that is of the same magnitude as the elements in the matrix.
    • nextSplit

      public boolean nextSplit()
      Tells it to process the submatrix at the next split. Should be called after the current submatrix has been processed.
    • computeShift

      public float computeShift()
    • computeWilkinsonShift

      public float computeWilkinsonShift()
    • getMatrixSize

      public int getMatrixSize()
    • resetSteps

      public void resetSteps()