Class BiDiagonalTransformer
- java.lang.Object
-
- org.apache.commons.math3.linear.BiDiagonalTransformer
-
class BiDiagonalTransformer extends java.lang.ObjectClass transforming any matrix to bi-diagonal shape.Any m × n matrix A can be written as the product of three matrices: A = U × B × VT with U an m × m orthogonal matrix, B an m × n bi-diagonal matrix (lower diagonal if m < n, upper diagonal otherwise), and V an n × n orthogonal matrix.
Transformation to bi-diagonal shape is often not a goal by itself, but it is an intermediate step in more general decomposition algorithms like
Singular Value Decomposition. This class is therefore intended for internal use by the library and is not public. As a consequence of this explicitly limited scope, many methods directly returns references to internal arrays, not copies.- Since:
- 2.0
-
-
Field Summary
Fields Modifier and Type Field Description private RealMatrixcachedBCached value of B.private RealMatrixcachedUCached value of U.private RealMatrixcachedVCached value of V.private double[][]householderVectorsHouseholder vectors.private double[]mainMain diagonal.private double[]secondarySecondary diagonal.
-
Constructor Summary
Constructors Constructor Description BiDiagonalTransformer(RealMatrix matrix)Build the transformation to bi-diagonal shape of a matrix.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description RealMatrixgetB()Returns the bi-diagonal matrix B of the transform.(package private) double[][]getHouseholderVectorsRef()Get the Householder vectors of the transform.(package private) double[]getMainDiagonalRef()Get the main diagonal elements of the matrix B of the transform.(package private) double[]getSecondaryDiagonalRef()Get the secondary diagonal elements of the matrix B of the transform.RealMatrixgetU()Returns the matrix U of the transform.RealMatrixgetV()Returns the matrix V of the transform.(package private) booleanisUpperBiDiagonal()Check if the matrix is transformed to upper bi-diagonal.private voidtransformToLowerBiDiagonal()Transform original matrix to lower bi-diagonal form.private voidtransformToUpperBiDiagonal()Transform original matrix to upper bi-diagonal form.
-
-
-
Field Detail
-
householderVectors
private final double[][] householderVectors
Householder vectors.
-
main
private final double[] main
Main diagonal.
-
secondary
private final double[] secondary
Secondary diagonal.
-
cachedU
private RealMatrix cachedU
Cached value of U.
-
cachedB
private RealMatrix cachedB
Cached value of B.
-
cachedV
private RealMatrix cachedV
Cached value of V.
-
-
Constructor Detail
-
BiDiagonalTransformer
BiDiagonalTransformer(RealMatrix matrix)
Build the transformation to bi-diagonal shape of a matrix.- Parameters:
matrix- the matrix to transform.
-
-
Method Detail
-
getU
public RealMatrix getU()
Returns the matrix U of the transform.U is an orthogonal matrix, i.e. its transpose is also its inverse.
- Returns:
- the U matrix
-
getB
public RealMatrix getB()
Returns the bi-diagonal matrix B of the transform.- Returns:
- the B matrix
-
getV
public RealMatrix getV()
Returns the matrix V of the transform.V is an orthogonal matrix, i.e. its transpose is also its inverse.
- Returns:
- the V matrix
-
getHouseholderVectorsRef
double[][] getHouseholderVectorsRef()
Get the Householder vectors of the transform.Note that since this class is only intended for internal use, it returns directly a reference to its internal arrays, not a copy.
- Returns:
- the main diagonal elements of the B matrix
-
getMainDiagonalRef
double[] getMainDiagonalRef()
Get the main diagonal elements of the matrix B of the transform.Note that since this class is only intended for internal use, it returns directly a reference to its internal arrays, not a copy.
- Returns:
- the main diagonal elements of the B matrix
-
getSecondaryDiagonalRef
double[] getSecondaryDiagonalRef()
Get the secondary diagonal elements of the matrix B of the transform.Note that since this class is only intended for internal use, it returns directly a reference to its internal arrays, not a copy.
- Returns:
- the secondary diagonal elements of the B matrix
-
isUpperBiDiagonal
boolean isUpperBiDiagonal()
Check if the matrix is transformed to upper bi-diagonal.- Returns:
- true if the matrix is transformed to upper bi-diagonal
-
transformToUpperBiDiagonal
private void transformToUpperBiDiagonal()
Transform original matrix to upper bi-diagonal form.Transformation is done using alternate Householder transforms on columns and rows.
-
transformToLowerBiDiagonal
private void transformToLowerBiDiagonal()
Transform original matrix to lower bi-diagonal form.Transformation is done using alternate Householder transforms on rows and columns.
-
-