Class SymmetricQREigenHelper_FDRM


  • public class SymmetricQREigenHelper_FDRM
    extends java.lang.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.
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      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 Detail

      • rand

        protected java.util.Random rand
      • steps

        protected int steps
      • numExceptional

        protected int numExceptional
      • lastExceptional

        protected int lastExceptional
      • Q

        protected 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 Detail

      • SymmetricQREigenHelper_FDRM

        public SymmetricQREigenHelper_FDRM()
    • Method Detail

      • 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()