Class TridiagonalDecompositionHouseholder_FDRM
java.lang.Object
org.ejml.dense.row.decomposition.hessenberg.TridiagonalDecompositionHouseholder_FDRM
- All Implemented Interfaces:
org.ejml.interfaces.decomposition.DecompositionInterface<org.ejml.data.FMatrixRMaj>,org.ejml.interfaces.decomposition.TridiagonalSimilarDecomposition<org.ejml.data.FMatrixRMaj>,org.ejml.interfaces.decomposition.TridiagonalSimilarDecomposition_F32<org.ejml.data.FMatrixRMaj>
- Direct Known Subclasses:
TridiagonalDecompositionHouseholder_MT_FDRM
@Generated("org.ejml.dense.row.decomposition.hessenberg.TridiagonalDecompositionHouseholder_DDRM")
public class TridiagonalDecompositionHouseholder_FDRM
extends Object
implements org.ejml.interfaces.decomposition.TridiagonalSimilarDecomposition_F32<org.ejml.data.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 TypeMethodDescriptionbooleandecompose(org.ejml.data.FMatrixRMaj A) Decomposes the provided symmetric matrix.voidgetDiagonal(float[] diag, float[] off) org.ejml.data.FMatrixRMajgetQ(@Nullable org.ejml.data.FMatrixRMaj Q, boolean transposed) An orthogonal matrix that has the following property: T = QTAQorg.ejml.data.FMatrixRMajgetQT()Returns the internal matrix where the decomposed results are stored.org.ejml.data.FMatrixRMajgetT(@Nullable org.ejml.data.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(org.ejml.data.FMatrixRMaj A) If needed declares and sets up internal data structures.booleanprotected 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)
-
Field Details
-
QT
protected org.ejml.data.FMatrixRMaj QTOnly 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
public org.ejml.data.FMatrixRMaj getQT()Returns the internal matrix where the decomposed results are stored. -
getDiagonal
public void getDiagonal(float[] diag, float[] off) - Specified by:
getDiagonalin interfaceorg.ejml.interfaces.decomposition.TridiagonalSimilarDecomposition_F32<org.ejml.data.FMatrixRMaj>
-
getT
public org.ejml.data.FMatrixRMaj getT(@Nullable @Nullable org.ejml.data.FMatrixRMaj T) Extracts the tridiagonal matrix found in the decomposition.- Specified by:
getTin interfaceorg.ejml.interfaces.decomposition.TridiagonalSimilarDecomposition<org.ejml.data.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
public org.ejml.data.FMatrixRMaj getQ(@Nullable @Nullable org.ejml.data.FMatrixRMaj Q, boolean transposed) An orthogonal matrix that has the following property: T = QTAQ- Specified by:
getQin interfaceorg.ejml.interfaces.decomposition.TridiagonalSimilarDecomposition<org.ejml.data.FMatrixRMaj>- Parameters:
Q- If not null then the results will be stored here. Otherwise a new matrix will be created.- Returns:
- The extracted Q matrix.
-
decompose
public boolean decompose(org.ejml.data.FMatrixRMaj A) Decomposes the provided symmetric matrix.- Specified by:
decomposein interfaceorg.ejml.interfaces.decomposition.DecompositionInterface<org.ejml.data.FMatrixRMaj>- Parameters:
A- Symmetric matrix that is going to be decomposed. Not modified.
-
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
public void init(org.ejml.data.FMatrixRMaj A) If needed declares and sets up internal data structures.- Parameters:
A- Matrix being decomposed.
-
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) -
inputModified
public boolean inputModified()- Specified by:
inputModifiedin interfaceorg.ejml.interfaces.decomposition.DecompositionInterface<org.ejml.data.FMatrixRMaj>
-