Name
invert_matrix_modinvert_matrix_modInvertMatrixModInvertMatrixMod — Invert a matrix.
The operator invert_matrix_modinvert_matrix_modInvertMatrixModInvertMatrixModInvertMatrixMod computes the inverse of the
MatrixMatrixMatrixMatrixmatrix defined by the matrix handle MatrixIDMatrixIDMatrixIDMatrixIDmatrixID.
The input matrix is overwritten with the result. Access to the
elements of the matrix is possible e.g. with the operator
get_full_matrixget_full_matrixGetFullMatrixGetFullMatrixGetFullMatrix.
For EpsilonEpsilonEpsilonEpsilonepsilon = 0, the inverse is computed. The type of the
MatrixMatrixMatrixMatrixmatrix can be selected via MatrixTypeMatrixTypeMatrixTypeMatrixTypematrixType. The
following values are supported: 'general'"general""general""general""general" for general,
'symmetric'"symmetric""symmetric""symmetric""symmetric" for symmetric, 'positive_definite'"positive_definite""positive_definite""positive_definite""positive_definite" for
symmetric positive definite, 'tridiagonal'"tridiagonal""tridiagonal""tridiagonal""tridiagonal" for tridiagonal,
'upper_triangular'"upper_triangular""upper_triangular""upper_triangular""upper_triangular" for upper triangular,
'permuted_upper_triangular'"permuted_upper_triangular""permuted_upper_triangular""permuted_upper_triangular""permuted_upper_triangular" for permuted upper triangular,
'lower_triangular'"lower_triangular""lower_triangular""lower_triangular""lower_triangular" for lower triangular, and
'permuted_lower_triangular'"permuted_lower_triangular""permuted_lower_triangular""permuted_lower_triangular""permuted_lower_triangular" for permuted lower triangular
matrices.
Example 1:
Example 2:
Example 3:
For EpsilonEpsilonEpsilonEpsilonepsilon > 0, the pseudo inverse is computed using a
singular value decomposition (SVD). During the computation, all
singular values less than the value EpsilonEpsilonEpsilonEpsilonepsilon *
the largest singular value are set to 0. For these values no
internal division is done to prevent a division by zero. If a
square matrix is computed with the SVD algorithm the computation
takes more time. The type of the matrix must be set to
MatrixTypeMatrixTypeMatrixTypeMatrixTypematrixType = 'general'"general""general""general""general".
Example:
Note: The relative accuracy of the floating point representation of
the used data type (double) is EpsilonEpsilonEpsilonEpsilonepsilon = 2.2204e-16.
It should be also noted that in the examples there are differences
in the meaning of the numbers of the output matrices: The results
of the elements are per definition a certain value if the number of
this value is shown as an integer number, e.g., 0 or 1. If the
number is shown as a floating point number, e.g., 0.0 or 1.0, the
value is computed.
For MatrixTypeMatrixTypeMatrixTypeMatrixTypematrixType = 'symmetric'"symmetric""symmetric""symmetric""symmetric",
'positive_definite'"positive_definite""positive_definite""positive_definite""positive_definite", or 'upper_triangular'"upper_triangular""upper_triangular""upper_triangular""upper_triangular" the
upper triangular part of the input MatrixMatrixMatrixMatrixmatrix must contain
the relevant information of the matrix. The strictly lower
triangular part of the matrix is not referenced. For
MatrixTypeMatrixTypeMatrixTypeMatrixTypematrixType = 'lower_triangular'"lower_triangular""lower_triangular""lower_triangular""lower_triangular" the lower
triangular part of the input MatrixMatrixMatrixMatrixmatrix must contain the
relevant information of the matrix. The strictly upper triangular
part of the matrix is not referenced. For MatrixTypeMatrixTypeMatrixTypeMatrixTypematrixType =
'tridiagonal'"tridiagonal""tridiagonal""tridiagonal""tridiagonal", only the main diagonal, the superdiagonal,
and the subdiagonal of the input MatrixMatrixMatrixMatrixmatrix are used. The
other parts of the matrix are not referenced. If the referenced
part of the input MatrixMatrixMatrixMatrixmatrix is not of the specified type,
an exception is raised.
invert_matrix_modinvert_matrix_modInvertMatrixModInvertMatrixModInvertMatrixMod modifies the content of an already
existing matrix.
- Multithreading type: reentrant (runs in parallel with non-exclusive operators).
- Multithreading scope: global (may be called from any thread).
- Processed without parallelization.
This operator modifies the state of the following input parameter:
The value of this parameter may not be shared across multiple threads without external synchronization.
Matrix handle of the input matrix.
The type of the input matrix.
Default value:
'general'
"general"
"general"
"general"
"general"
List of values: 'general'"general""general""general""general", 'lower_triangular'"lower_triangular""lower_triangular""lower_triangular""lower_triangular", 'permuted_lower_triangular'"permuted_lower_triangular""permuted_lower_triangular""permuted_lower_triangular""permuted_lower_triangular", 'permuted_upper_triangular'"permuted_upper_triangular""permuted_upper_triangular""permuted_upper_triangular""permuted_upper_triangular", 'positive_definite'"positive_definite""positive_definite""positive_definite""positive_definite", 'symmetric'"symmetric""symmetric""symmetric""symmetric", 'tridiagonal'"tridiagonal""tridiagonal""tridiagonal""tridiagonal", 'upper_triangular'"upper_triangular""upper_triangular""upper_triangular""upper_triangular"
Type of inversion.
Default value: 0.0
Suggested values: 0.0, 2.2204e-16
If the parameters are valid, the operator invert_matrix_modinvert_matrix_modInvertMatrixModInvertMatrixModInvertMatrixMod
returns the value 2 (H_MSG_TRUE). If necessary, an exception is raised.
create_matrixcreate_matrixCreateMatrixCreateMatrixCreateMatrix
get_full_matrixget_full_matrixGetFullMatrixGetFullMatrixGetFullMatrix,
get_value_matrixget_value_matrixGetValueMatrixGetValueMatrixGetValueMatrix
invert_matrixinvert_matrixInvertMatrixInvertMatrixInvertMatrix
transpose_matrixtranspose_matrixTransposeMatrixTransposeMatrixTransposeMatrix,
transpose_matrix_modtranspose_matrix_modTransposeMatrixModTransposeMatrixModTransposeMatrixMod
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