Class WatchedDoubleStepQREigen_DDRM
java.lang.Object
org.ejml.dense.row.decomposition.eig.watched.WatchedDoubleStepQREigen_DDRM
- Direct Known Subclasses:
- WatchedDoubleStepQREigen_MT_DDRM
The double 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 SummaryFieldsModifier and TypeFieldDescriptionprotected DMatrixRMajbooleanprotected double@Nullable DMatrixRMajprotected DMatrixRMaj
- 
Constructor SummaryConstructors
- 
Method SummaryModifier and TypeMethodDescriptionvoidaddComputedEigen2x2(int x1, int x2) voidaddEigenAt(int x1) booleanbulgeDoubleStepQn(int i) booleanbulgeDoubleStepQn(int i, double a11, double a21, double a31, double threshold, boolean set) booleanbulgeSingleStepQn(int i) booleanbulgeSingleStepQn(int i, double a11, double a21, double threshold, boolean set) booleancreateBulgeSingleStep(int x1, double eigenvalue) voideigen2by2_scale(double a11, double a12, double a21, double 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.intvoidimplicitDoubleStep(int x1, int x2) Performs an implicit double 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, double real, double img) Performs an implicit double step given the set of two imaginary eigenvalues provided.voidperformImplicitSingleStep(int x1, int x2, double eigenvalue) voidprotected voidrank1UpdateMultL(DMatrixRMaj A, double gamma, int colA0, int w0, int w1) protected voidrank1UpdateMultR(DMatrixRMaj A, double gamma, int colA0, int w0, int w1) voidsetChecks(boolean hessenberg, boolean orthogonal, boolean uncountable) voidsetQ(@Nullable DMatrixRMaj Q) voidsetup(DMatrixRMaj A) 
- 
Field Details- 
u
- 
gammaprotected double gamma
- 
_temp
- 
createRpublic boolean createR
- 
Q
 
- 
- 
Constructor Details- 
WatchedDoubleStepQREigen_DDRMpublic WatchedDoubleStepQREigen_DDRM()
 
- 
- 
Method Details- 
incrementStepspublic void incrementSteps()
- 
setQ
- 
setCheckspublic void setChecks(boolean hessenberg, boolean orthogonal, boolean uncountable) 
- 
isZeropublic boolean isZero(int x1, int x2) 
- 
setup
- 
exceptionalShiftpublic 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.
- 
implicitDoubleSteppublic void implicitDoubleStep(int x1, int x2) Performs an implicit double step using the values contained in the lower right hand side of the submatrix for the estimated eigenvector values.
- 
performImplicitDoubleSteppublic void performImplicitDoubleStep(int x1, int x2, double real, double img) Performs an implicit double 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.
 
- 
performImplicitSingleSteppublic void performImplicitSingleStep(int x1, int x2, double eigenvalue) 
- 
createBulgeSingleSteppublic boolean createBulgeSingleStep(int x1, double eigenvalue) 
- 
bulgeDoubleStepQnpublic boolean bulgeDoubleStepQn(int i) 
- 
bulgeDoubleStepQnpublic boolean bulgeDoubleStepQn(int i, double a11, double a21, double a31, double threshold, boolean set) 
- 
bulgeSingleStepQnpublic boolean bulgeSingleStepQn(int i) 
- 
bulgeSingleStepQnpublic boolean bulgeSingleStepQn(int i, double a11, double a21, double threshold, boolean set) 
- 
eigen2by2_scalepublic void eigen2by2_scale(double a11, double a12, double a21, double a22) 
- 
getNumberOfEigenvaluespublic int getNumberOfEigenvalues()
- 
getEigenvalues
- 
addComputedEigen2x2public void addComputedEigen2x2(int x1, int x2) 
- 
isReal2x2public boolean isReal2x2(int x1, int x2) 
- 
addEigenAtpublic void addEigenAt(int x1) 
- 
rank1UpdateMultL
- 
rank1UpdateMultR
- 
printStepspublic void printSteps()
 
-