Class WatchedDoubleStepQREigen_FDRM
java.lang.Object
org.ejml.dense.row.decomposition.eig.watched.WatchedDoubleStepQREigen_FDRM
- Direct Known Subclasses:
WatchedDoubleStepQREigen_MT_FDRM
@Generated("org.ejml.dense.row.decomposition.eig.watched.WatchedDoubleStepQREigen_DDRM")
public class WatchedDoubleStepQREigen_FDRM
extends Object
The float step implicit Eigenvalue decomposition algorithm is fairly complicated and needs to be designed so that it can handle several special cases. To aid in development and debugging this class was created. It allows individual components to be tested and to print out their results. This shows how each step is performed.
Do not use this class to compute the eigenvalues since it is much slower than a non-debug implementation.
-
Field Summary
Fields -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoidaddComputedEigen2x2(int x1, int x2) voidaddEigenAt(int x1) booleanbulgeDoubleStepQn(int i) booleanbulgeDoubleStepQn(int i, float a11, float a21, float a31, float threshold, boolean set) booleanbulgeSingleStepQn(int i) booleanbulgeSingleStepQn(int i, float a11, float a21, float threshold, boolean set) booleancreateBulgeSingleStep(int x1, float eigenvalue) voideigen2by2_scale(float a11, float a12, float a21, float a22) voidexceptionalShift(int x1, int x2) Perform a shift in a random direction that is of the same magnitude as the elements in the matrix.org.ejml.data.Complex_F32[]intvoidimplicitDoubleStep(int x1, int x2) Performs an implicit float step using the values contained in the lower right hand side of the submatrix for the estimated eigenvector values.voidbooleanisReal2x2(int x1, int x2) booleanisZero(int x1, int x2) voidperformImplicitDoubleStep(int x1, int x2, float real, float img) Performs an implicit float step given the set of two imaginary eigenvalues provided.voidperformImplicitSingleStep(int x1, int x2, float eigenvalue) voidprotected voidrank1UpdateMultL(org.ejml.data.FMatrixRMaj A, float gamma, int colA0, int w0, int w1) protected voidrank1UpdateMultR(org.ejml.data.FMatrixRMaj A, float gamma, int colA0, int w0, int w1) voidsetChecks(boolean hessenberg, boolean orthogonal, boolean uncountable) voidsetQ(@Nullable org.ejml.data.FMatrixRMaj Q) voidsetup(org.ejml.data.FMatrixRMaj A)
-
Field Details
-
u
protected org.ejml.data.FMatrixRMaj u -
gamma
protected float gamma -
_temp
protected org.ejml.data.FMatrixRMaj _temp -
createR
public boolean createR -
Q
@Nullable public @Nullable org.ejml.data.FMatrixRMaj Q
-
-
Constructor Details
-
WatchedDoubleStepQREigen_FDRM
public WatchedDoubleStepQREigen_FDRM()
-
-
Method Details
-
incrementSteps
public void incrementSteps() -
setQ
public void setQ(@Nullable @Nullable org.ejml.data.FMatrixRMaj Q) -
setChecks
public void setChecks(boolean hessenberg, boolean orthogonal, boolean uncountable) -
isZero
public boolean isZero(int x1, int x2) -
setup
public void setup(org.ejml.data.FMatrixRMaj A) -
exceptionalShift
public void exceptionalShift(int x1, int x2) Perform a shift in a random direction that is of the same magnitude as the elements in the matrix. -
implicitDoubleStep
public void implicitDoubleStep(int x1, int x2) Performs an implicit float step using the values contained in the lower right hand side of the submatrix for the estimated eigenvector values. -
performImplicitDoubleStep
public void performImplicitDoubleStep(int x1, int x2, float real, float img) Performs an implicit float step given the set of two imaginary eigenvalues provided. Since one eigenvalue is the complex conjugate of the other only one set of real and imaginary numbers is needed.- Parameters:
x1- upper index of submatrix.x2- lower index of submatrix.real- Real component of each of the eigenvalues.img- Imaginary component of one of the eigenvalues.
-
performImplicitSingleStep
public void performImplicitSingleStep(int x1, int x2, float eigenvalue) -
createBulgeSingleStep
public boolean createBulgeSingleStep(int x1, float eigenvalue) -
bulgeDoubleStepQn
public boolean bulgeDoubleStepQn(int i) -
bulgeDoubleStepQn
public boolean bulgeDoubleStepQn(int i, float a11, float a21, float a31, float threshold, boolean set) -
bulgeSingleStepQn
public boolean bulgeSingleStepQn(int i) -
bulgeSingleStepQn
public boolean bulgeSingleStepQn(int i, float a11, float a21, float threshold, boolean set) -
eigen2by2_scale
public void eigen2by2_scale(float a11, float a12, float a21, float a22) -
getNumberOfEigenvalues
public int getNumberOfEigenvalues() -
getEigenvalues
public org.ejml.data.Complex_F32[] getEigenvalues() -
addComputedEigen2x2
public void addComputedEigen2x2(int x1, int x2) -
isReal2x2
public boolean isReal2x2(int x1, int x2) -
addEigenAt
public void addEigenAt(int x1) -
rank1UpdateMultL
protected void rank1UpdateMultL(org.ejml.data.FMatrixRMaj A, float gamma, int colA0, int w0, int w1) -
rank1UpdateMultR
protected void rank1UpdateMultR(org.ejml.data.FMatrixRMaj A, float gamma, int colA0, int w0, int w1) -
printSteps
public void printSteps()
-