Class TridiagonalDecompositionHouseholder_FDRM
java.lang.Object
org.ejml.dense.row.decomposition.hessenberg.TridiagonalDecompositionHouseholder_FDRM
- All Implemented Interfaces:
DecompositionInterface<FMatrixRMaj>,TridiagonalSimilarDecomposition<FMatrixRMaj>,TridiagonalSimilarDecomposition_F32<FMatrixRMaj>
- Direct Known Subclasses:
TridiagonalDecompositionHouseholder_MT_FDRM
@Generated("org.ejml.dense.row.decomposition.hessenberg.TridiagonalDecompositionHouseholder_DDRM")
public class TridiagonalDecompositionHouseholder_FDRM
extends Object
implements TridiagonalSimilarDecomposition_F32<FMatrixRMaj>
Performs a similar tridiagonal decomposition on a square symmetric input matrix.
Householder vectors perform the similar operation and the symmetry is taken advantage
of for good performance.
Finds the decomposition of a matrix in the form of:
A = O*T*OT
where A is a symmetric m by m matrix, O is an orthogonal matrix, and T is a tridiagonal matrix.
This implementation is based off of the algorithm described in:
David S. Watkins, "Fundamentals of Matrix Computations," Second Edition. Page 349-355
-
Field Summary
Fields -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionbooleanDecomposes the provided symmetric matrix.voidgetDiagonal(float[] diag, float[] off) Extracts the diagonal and off diagonal elements of the decomposed tridiagonal matrix.getQ(@Nullable FMatrixRMaj Q, boolean transposed) An orthogonal matrix that has the following property: T = QTAQgetQT()Returns the internal matrix where the decomposed results are stored.getT(@Nullable FMatrixRMaj T) Extracts the tridiagonal matrix found in the decomposition.voidhouseholderSymmetric(int row, float gamma) Performs the householder operations on left and right and side of the matrix.voidinit(FMatrixRMaj A) If needed declares and sets up internal data structures.booleanChecks if the input matrix toDecompositionInterface.decompose(org.ejml.data.Matrix)is modified during the decomposition process.protected voidrank1UpdateMultL(FMatrixRMaj A, float gamma, int colA0, int w0, int w1) protected voidrank1UpdateMultR(FMatrixRMaj A, float gamma, int colA0, int w0, int w1)
-
Field Details
-
QT
Only the upper right triangle is used. The Tridiagonal portion stores the tridiagonal matrix. The rows store householder vectors. -
N
protected int N -
w
protected float[] w -
gammas
protected float[] gammas -
b
protected float[] b
-
-
Constructor Details
-
TridiagonalDecompositionHouseholder_FDRM
public TridiagonalDecompositionHouseholder_FDRM()
-
-
Method Details
-
getQT
Returns the internal matrix where the decomposed results are stored. -
getDiagonal
public void getDiagonal(float[] diag, float[] off) Description copied from interface:TridiagonalSimilarDecomposition_F32Extracts the diagonal and off diagonal elements of the decomposed tridiagonal matrix. Since it is symmetric only one off diagonal array is returned.- Specified by:
getDiagonalin interfaceTridiagonalSimilarDecomposition_F32<FMatrixRMaj>- Parameters:
diag- Diagonal elements. Modified.off- off diagonal elements. Modified.
-
getT
Extracts the tridiagonal matrix found in the decomposition.- Specified by:
getTin interfaceTridiagonalSimilarDecomposition<FMatrixRMaj>- Parameters:
T- If not null then the results will be stored here. Otherwise a new matrix will be created.- Returns:
- The extracted T matrix.
-
getQ
An orthogonal matrix that has the following property: T = QTAQ- Specified by:
getQin interfaceTridiagonalSimilarDecomposition<FMatrixRMaj>- Parameters:
Q- If not null then the results will be stored here. Otherwise a new matrix will be created.transposed- If true then the transpose (real) or conjugate transpose (complex) of Q is returned.- Returns:
- The extracted Q matrix.
-
decompose
Decomposes the provided symmetric matrix.- Specified by:
decomposein interfaceDecompositionInterface<FMatrixRMaj>- Parameters:
A- Symmetric matrix that is going to be decomposed. Not modified.- Returns:
- Returns if it was able to decompose the matrix.
-
householderSymmetric
public void householderSymmetric(int row, float gamma) Performs the householder operations on left and right and side of the matrix. QTAQ- Parameters:
row- Specifies the submatrix.gamma- The gamma for the householder operation
-
init
If needed declares and sets up internal data structures.- Parameters:
A- Matrix being decomposed.
-
rank1UpdateMultL
-
rank1UpdateMultR
-
inputModified
public boolean inputModified()Description copied from interface:DecompositionInterfaceChecks if the input matrix toDecompositionInterface.decompose(org.ejml.data.Matrix)is modified during the decomposition process.- Specified by:
inputModifiedin interfaceDecompositionInterface<FMatrixRMaj>- Returns:
- true if the input matrix to decompose() is modified.
-