public class WatchedDoubleStepQREigen_FDRM
extends java.lang.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.
Modifier and Type | Field and Description |
---|---|
boolean |
createR |
org.ejml.data.FMatrixRMaj |
Q |
Constructor and Description |
---|
WatchedDoubleStepQREigen_FDRM() |
Modifier and Type | Method and Description |
---|---|
void |
addComputedEigen2x2(int x1,
int x2) |
void |
addEigenAt(int x1) |
boolean |
bulgeDoubleStepQn(int i) |
boolean |
bulgeDoubleStepQn(int i,
float a11,
float a21,
float a31,
float threshold,
boolean set) |
boolean |
bulgeSingleStepQn(int i) |
boolean |
bulgeSingleStepQn(int i,
float a11,
float a21,
float threshold,
boolean set) |
boolean |
createBulgeSingleStep(int x1,
float eigenvalue) |
void |
eigen2by2_scale(float a11,
float a12,
float a21,
float a22) |
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.
|
org.ejml.data.Complex_F32[] |
getEigenvalues() |
int |
getNumberOfEigenvalues() |
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.
|
void |
incrementSteps() |
boolean |
isReal2x2(int x1,
int x2) |
boolean |
isZero(int x1,
int x2) |
void |
performImplicitDoubleStep(int x1,
int x2,
float real,
float img)
Performs an implicit float step given the set of two imaginary eigenvalues provided.
|
void |
performImplicitSingleStep(int x1,
int x2,
float eigenvalue) |
void |
printSteps() |
void |
setChecks(boolean hessenberg,
boolean orthogonal,
boolean uncountable) |
void |
setQ(org.ejml.data.FMatrixRMaj Q) |
void |
setup(org.ejml.data.FMatrixRMaj A) |
public void incrementSteps()
public void setQ(org.ejml.data.FMatrixRMaj Q)
public void setChecks(boolean hessenberg, boolean orthogonal, boolean uncountable)
public boolean isZero(int x1, int x2)
public void setup(org.ejml.data.FMatrixRMaj A)
public void exceptionalShift(int x1, int x2)
public void implicitDoubleStep(int x1, int x2)
x1
- x2
- public void performImplicitDoubleStep(int x1, int x2, float real, float img)
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.public void performImplicitSingleStep(int x1, int x2, float eigenvalue)
public boolean createBulgeSingleStep(int x1, float eigenvalue)
public boolean bulgeDoubleStepQn(int i)
public boolean bulgeDoubleStepQn(int i, float a11, float a21, float a31, float threshold, boolean set)
public boolean bulgeSingleStepQn(int i)
public boolean bulgeSingleStepQn(int i, float a11, float a21, float threshold, boolean set)
public void eigen2by2_scale(float a11, float a12, float a21, float a22)
public int getNumberOfEigenvalues()
public org.ejml.data.Complex_F32[] getEigenvalues()
public void addComputedEigen2x2(int x1, int x2)
public boolean isReal2x2(int x1, int x2)
public void addEigenAt(int x1)
public void printSteps()