Name
decompose_matrixdecompose_matrixDecomposeMatrixdecompose_matrixDecomposeMatrixDecomposeMatrix — Decompose a matrix.
The operator decompose_matrixdecompose_matrixDecomposeMatrixdecompose_matrixDecomposeMatrixDecomposeMatrix decomposes the square input
MatrixMatrixMatrixMatrixMatrixmatrix given by the matrix handle MatrixIDMatrixIDMatrixIDMatrixIDMatrixIDmatrixID. The
results are stored in two generated matrices Matrix1Matrix1Matrix1Matrix1Matrix1matrix1 and
Matrix2Matrix2Matrix2Matrix2Matrix2matrix2. The operator returns the matrix handles
Matrix1IDMatrix1IDMatrix1IDMatrix1IDMatrix1IDmatrix1ID and Matrix2IDMatrix2IDMatrix2IDMatrix2IDMatrix2IDmatrix2ID. Access to the elements
of the matrices is possible e.g. with the operator
get_full_matrixget_full_matrixGetFullMatrixget_full_matrixGetFullMatrixGetFullMatrix.
The type of the input MatrixMatrixMatrixMatrixMatrixmatrix can be selected via the
parameter MatrixTypeMatrixTypeMatrixTypeMatrixTypeMatrixTypematrixType. The following values are supported:
'general'"general""general""general""general""general" for general, 'symmetric'"symmetric""symmetric""symmetric""symmetric""symmetric" for symmetric,
'positive_definite'"positive_definite""positive_definite""positive_definite""positive_definite""positive_definite" for symmetric positive definite, and
'tridiagonal'"tridiagonal""tridiagonal""tridiagonal""tridiagonal""tridiagonal" for tridiagonal matrices.
The decomposition MatrixTypeMatrixTypeMatrixTypeMatrixTypeMatrixTypematrixType = 'general'"general""general""general""general""general" or
'tridiagonal'"tridiagonal""tridiagonal""tridiagonal""tridiagonal""tridiagonal" is a LU factorization (Lower/Upper) with the
form
MatrixMatrixMatrixMatrixMatrixmatrix = Matrix1Matrix1Matrix1Matrix1Matrix1matrix1 * Matrix2Matrix2Matrix2Matrix2Matrix2matrix2
The output Matrix1Matrix1Matrix1Matrix1Matrix1matrix1 is a lower triangular matrix with unit
diagonal elements and interchanged rows. The output
Matrix2Matrix2Matrix2Matrix2Matrix2matrix2 is an upper triangular matrix.
Example for a factorization of a general matrix:
Example for a factorization of a tridiagonal matrix:
For MatrixTypeMatrixTypeMatrixTypeMatrixTypeMatrixTypematrixType = 'symmetric'"symmetric""symmetric""symmetric""symmetric""symmetric" the factorization is
a UDU^T decomposition (Upper/Diagonal/Upper) with the form
where the output Matrix1Matrix1Matrix1Matrix1Matrix1matrix1 is an upper triangular matrix
with interchanaged columns. The output matrix Matrix2Matrix2Matrix2Matrix2Matrix2matrix2 is
a symmetric block diagonal matrix with 1 x 1 and
2 x 2 diagonal blocks.
Example for a factorization of a symmetric matrix:
For MatrixTypeMatrixTypeMatrixTypeMatrixTypeMatrixTypematrixType = 'positive_definite'"positive_definite""positive_definite""positive_definite""positive_definite""positive_definite" a Cholesky
factorization is computed with the form
MatrixMatrixMatrixMatrixMatrixmatrix = Matrix1Matrix1Matrix1Matrix1Matrix1matrix1 * Matrix2Matrix2Matrix2Matrix2Matrix2matrix2
where the output Matrix1Matrix1Matrix1Matrix1Matrix1matrix1 is a lower triangular matrix and
the output matrix Matrix2Matrix2Matrix2Matrix2Matrix2matrix2 is an upper triangular matrix.
Furthermore, the Matrix2Matrix2Matrix2Matrix2Matrix2matrix2 is the transpose of the matrix
Matrix1Matrix1Matrix1Matrix1Matrix1matrix1.
Example for a factorization of a positive definite matrix:
It should be noted that in the examples there are differences in the
meaning of the values of the output matrices: If a value is shown as
an integer number, e.g., 0 or 1, the value of this element is per
definition this certain value. If the number is shown as a floating
point number, e.g., 0.0 or 1.0, the value is computed by the
operator.
For MatrixTypeMatrixTypeMatrixTypeMatrixTypeMatrixTypematrixType = 'symmetric'"symmetric""symmetric""symmetric""symmetric""symmetric" or
'positive_definite'"positive_definite""positive_definite""positive_definite""positive_definite""positive_definite", the upper triangular part of the input
MatrixMatrixMatrixMatrixMatrixmatrix must contain the relevant information of the matrix.
The strictly lower triangular part of the matrix is not referenced.
For MatrixTypeMatrixTypeMatrixTypeMatrixTypeMatrixTypematrixType = 'tridiagonal'"tridiagonal""tridiagonal""tridiagonal""tridiagonal""tridiagonal", only the main
diagonal, the superdiagonal, and the subdiagonal of the input
MatrixMatrixMatrixMatrixMatrixmatrix are used. The other parts of the matrix are not
referenced. If the referenced part of the input MatrixMatrixMatrixMatrixMatrixmatrix is
not of the specified type, an exception is raised.
- Multithreading type: reentrant (runs in parallel with non-exclusive operators).
- Multithreading scope: global (may be called from any thread).
- Processed without parallelization.
Matrix handle of the input matrix.
Type of the input matrix.
Default value:
'general'
"general"
"general"
"general"
"general"
"general"
List of values: 'general'"general""general""general""general""general", 'positive_definite'"positive_definite""positive_definite""positive_definite""positive_definite""positive_definite", 'symmetric'"symmetric""symmetric""symmetric""symmetric""symmetric", 'tridiagonal'"tridiagonal""tridiagonal""tridiagonal""tridiagonal""tridiagonal"
Matrix handle with the output matrix 1.
Matrix handle with the output matrix 2.
If the parameters are valid, the operator decompose_matrixdecompose_matrixDecomposeMatrixdecompose_matrixDecomposeMatrixDecomposeMatrix
returns the value 2 (H_MSG_TRUE). If necessary, an exception is raised.
create_matrixcreate_matrixCreateMatrixcreate_matrixCreateMatrixCreateMatrix
get_full_matrixget_full_matrixGetFullMatrixget_full_matrixGetFullMatrixGetFullMatrix,
get_value_matrixget_value_matrixGetValueMatrixget_value_matrixGetValueMatrixGetValueMatrix
orthogonal_decompose_matrixorthogonal_decompose_matrixOrthogonalDecomposeMatrixorthogonal_decompose_matrixOrthogonalDecomposeMatrixOrthogonalDecomposeMatrix,
solve_matrixsolve_matrixSolveMatrixsolve_matrixSolveMatrixSolveMatrix
David Poole: “Linear Algebra: A Modern Introduction”; Thomson;
Belmont; 2006.
Gene H. Golub, Charles F. van Loan: “Matrix Computations”; The
Johns Hopkins University Press; Baltimore and London; 1996.
Foundation