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[] diag  
    protected EigenvalueSmall_F32 eigenSmall  
    protected int lastExceptional  
    protected int N  
    protected int numExceptional  
    protected int numSplits  
    protected float[] off  
    protected @Nullable org.ejml.data.FMatrixRMaj Q  
    protected Random rand  
    protected int[] splits  
    protected int steps  
    protected int x1  
    protected int x2  
  • Constructor Summary

    Constructors
    Constructor Description
    SymmetricQREigenHelper_FDRM()  
  • Method Summary

    Modifier and Type Method Description
    float computeShift()  
    float computeWilkinsonShift()  
    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 eigenvalue2by2​(int x1)
    Computes the eigenvalue of the 2 by 2 matrix.
    void exceptionalShift()
    Perform a shift in a random direction that is of the same magnitude as the elements in the matrix.
    int getMatrixSize()  
    void incrementSteps()  
    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 nextSplit()
    Tells it to process the submatrix at the next split.
    protected void performImplicitSingleStep​(float lambda, boolean byAngle)  
    void printMatrix()  
    protected void removeBulge​(int x1)  
    protected void removeBulgeEnd​(int x1)
    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 resetSteps()  
    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()