public class TridiagonalDecompositionBlockHouseholder extends Object implements TridiagonalSimilarDecomposition<BlockMatrix64F>
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.
| Modifier and Type | Field and Description |
|---|---|
protected BlockMatrix64F |
A |
protected double[] |
gammas |
protected BlockMatrix64F |
tmp |
protected BlockMatrix64F |
V |
protected DenseMatrix64F |
zerosM |
| Constructor and Description |
|---|
TridiagonalDecompositionBlockHouseholder() |
| Modifier and Type | Method and Description |
|---|---|
boolean |
decompose(BlockMatrix64F orig)
Computes the decomposition of the input matrix.
|
void |
getDiagonal(double[] diag,
double[] off)
Extracts the diagonal and off diagonal elements of the decomposed tridiagonal matrix.
|
BlockMatrix64F |
getQ(BlockMatrix64F Q,
boolean transposed)
An orthogonal matrix that has the following property: T = QTAQ
|
BlockMatrix64F |
getT(BlockMatrix64F T)
Extracts the tridiagonal matrix found in the decomposition.
|
boolean |
inputModified()
Is the input matrix to
DecompositionInterface.decompose(org.ejml.data.Matrix64F) is modified during
the decomposition process. |
static void |
multPlusTransA(int blockLength,
D1Submatrix64F A,
D1Submatrix64F B,
D1Submatrix64F C)
C = C + A^T*B
|
protected BlockMatrix64F A
protected BlockMatrix64F V
protected BlockMatrix64F tmp
protected double[] gammas
protected DenseMatrix64F zerosM
public TridiagonalDecompositionBlockHouseholder()
public BlockMatrix64F getT(BlockMatrix64F T)
TridiagonalSimilarDecompositiongetT in interface TridiagonalSimilarDecomposition<BlockMatrix64F>T - If not null then the results will be stored here. Otherwise a new matrix will be created.public BlockMatrix64F getQ(BlockMatrix64F Q, boolean transposed)
TridiagonalSimilarDecompositiongetQ in interface TridiagonalSimilarDecomposition<BlockMatrix64F>Q - If not null then the results will be stored here. Otherwise a new matrix will be created.public void getDiagonal(double[] diag,
double[] off)
TridiagonalSimilarDecompositiongetDiagonal in interface TridiagonalSimilarDecomposition<BlockMatrix64F>diag - Diagonal elements. Modified.off - off diagonal elements. Modified.public boolean decompose(BlockMatrix64F orig)
DecompositionInterfaceDecompositionInterface.inputModified() will return true and the matrix should not be
modified until the decomposition is no longer needed.decompose in interface DecompositionInterface<BlockMatrix64F>orig - The matrix which is being decomposed. Modification is implementation dependent.public static void multPlusTransA(int blockLength,
D1Submatrix64F A,
D1Submatrix64F B,
D1Submatrix64F C)
blockLength - A - row block vectorB - row block vectorC - public boolean inputModified()
DecompositionInterfaceDecompositionInterface.decompose(org.ejml.data.Matrix64F) is modified during
the decomposition process.inputModified in interface DecompositionInterface<BlockMatrix64F>Copyright © 2013. All Rights Reserved.