Class TridiagonalDecompositionHouseholder_MT_FDRB
java.lang.Object
org.ejml.dense.block.decomposition.hessenberg.TridiagonalDecompositionHouseholder_MT_FDRB
- All Implemented Interfaces:
DecompositionInterface<FMatrixRBlock>
,TridiagonalSimilarDecomposition<FMatrixRBlock>
,TridiagonalSimilarDecomposition_F32<FMatrixRBlock>
@Generated("org.ejml.dense.block.decomposition.hessenberg.TridiagonalDecompositionHouseholder_FDRB")
public class TridiagonalDecompositionHouseholder_MT_FDRB
extends Object
implements TridiagonalSimilarDecomposition_F32<FMatrixRBlock>
Tridiagonal similar decomposition for block matrices. Orthogonal matrices are computed using householder vectors.
Based off algorithm in section 2 of J. J. Dongarra, D. C. Sorensen, S. J. Hammarling,
"Block Reduction of Matrices to Condensed Forms for Eigenvalue Computations" Journal of
Computations and Applied Mathematics 27 (1989) 215-227
Computations of Householder reflectors has been modified from what is presented in that paper to how
it is performed in "Fundamentals of Matrix Computations" 2nd ed. by David S. Watkins.
-
Field Summary
Modifier and TypeFieldDescriptionprotected FMatrixRBlock
protected float[]
protected FMatrixRBlock
protected FMatrixRBlock
protected FMatrixRMaj
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionboolean
decompose
(FMatrixRBlock orig) Computes the decomposition of the input matrix.void
getDiagonal
(float[] diag, float[] off) Extracts the diagonal and off diagonal elements of the decomposed tridiagonal matrix.getQ
(@Nullable FMatrixRBlock Q, boolean transposed) An orthogonal matrix that has the following property: T = QHAQgetT
(@Nullable FMatrixRBlock T) Extracts the tridiagonal matrix found in the decomposition.boolean
Checks if the input matrix toDecompositionInterface.decompose(org.ejml.data.Matrix)
is modified during the decomposition process.static void
multPlusTransA
(int blockLength, FSubmatrixD1 A, FSubmatrixD1 B, FSubmatrixD1 C) C = C + A^T*B
-
Field Details
-
A
-
V
-
tmp
-
gammas
protected float[] gammas -
zerosM
-
-
Constructor Details
-
TridiagonalDecompositionHouseholder_MT_FDRB
public TridiagonalDecompositionHouseholder_MT_FDRB()
-
-
Method Details
-
getT
Description copied from interface:TridiagonalSimilarDecomposition
Extracts the tridiagonal matrix found in the decomposition.- Specified by:
getT
in interfaceTridiagonalSimilarDecomposition<FMatrixRBlock>
- 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
Description copied from interface:TridiagonalSimilarDecomposition
An orthogonal matrix that has the following property: T = QHAQ- Specified by:
getQ
in interfaceTridiagonalSimilarDecomposition<FMatrixRBlock>
- 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.
-
getDiagonal
public void getDiagonal(float[] diag, float[] off) Description copied from interface:TridiagonalSimilarDecomposition_F32
Extracts the diagonal and off diagonal elements of the decomposed tridiagonal matrix. Since it is symmetric only one off diagonal array is returned.- Specified by:
getDiagonal
in interfaceTridiagonalSimilarDecomposition_F32<FMatrixRBlock>
- Parameters:
diag
- Diagonal elements. Modified.off
- off diagonal elements. Modified.
-
decompose
Description copied from interface:DecompositionInterface
Computes the decomposition of the input matrix. Depending on the implementation the input matrix might be stored internally or modified. If it is modified then the functionDecompositionInterface.inputModified()
will return true and the matrix should not be modified until the decomposition is no longer needed.- Specified by:
decompose
in interfaceDecompositionInterface<FMatrixRBlock>
- Parameters:
orig
- The matrix which is being decomposed. Modification is implementation dependent.- Returns:
- Returns if it was able to decompose the matrix.
-
multPlusTransA
C = C + A^T*B- Parameters:
A
- row block vectorB
- row block vector
-
inputModified
public boolean inputModified()Description copied from interface:DecompositionInterface
Checks if the input matrix toDecompositionInterface.decompose(org.ejml.data.Matrix)
is modified during the decomposition process.- Specified by:
inputModified
in interfaceDecompositionInterface<FMatrixRBlock>
- Returns:
- true if the input matrix to decompose() is modified.
-