Name
solve_matrixsolve_matrixSolveMatrixsolve_matrixSolveMatrixSolveMatrix — Compute the solution of a system of equations.
The operator solve_matrixsolve_matrixSolveMatrixsolve_matrixSolveMatrixSolveMatrix computes the solution of a system
of linear equations or of a linear least squares problem. The input
matrices MatrixLHSMatrixLHSMatrixLHSMatrixLHSMatrixLHSmatrixLHS and MatrixRHSMatrixRHSMatrixRHSMatrixRHSMatrixRHSmatrixRHS are defined by
the matrix handles MatrixLHSIDMatrixLHSIDMatrixLHSIDMatrixLHSIDMatrixLHSIDmatrixLHSID and MatrixRHSIDMatrixRHSIDMatrixRHSIDMatrixRHSIDMatrixRHSIDmatrixRHSID.
The number of rows of matrices MatrixLHSMatrixLHSMatrixLHSMatrixLHSMatrixLHSmatrixLHS and
MatrixRHSMatrixRHSMatrixRHSMatrixRHSMatrixRHSmatrixRHS must be identical. The operator returns the
matrix handle MatrixResultIDMatrixResultIDMatrixResultIDMatrixResultIDMatrixResultIDmatrixResultID of the matrix
MatrixResultMatrixResultMatrixResultMatrixResultMatrixResultmatrixResult. Access to the elements of the matrix is
possible e.g. with the operator get_full_matrixget_full_matrixGetFullMatrixget_full_matrixGetFullMatrixGetFullMatrix.
For linear equation systems, the equations
MatrixLHSMatrixLHSMatrixLHSMatrixLHSMatrixLHSmatrixLHS * MatrixResultMatrixResultMatrixResultMatrixResultMatrixResultmatrixResult = MatrixRHSMatrixRHSMatrixRHSMatrixRHSMatrixRHSmatrixRHS
are solved. Therefore, the matrix MatrixLHSMatrixLHSMatrixLHSMatrixLHSMatrixLHSmatrixLHS must be a
square matrix and the parameter EpsilonEpsilonEpsilonEpsilonEpsilonepsilon must be 0. The
type of the matrix MatrixLHSMatrixLHSMatrixLHSMatrixLHSMatrixLHSmatrixLHS can be selected via the
parameter MatrixLHSTypeMatrixLHSTypeMatrixLHSTypeMatrixLHSTypeMatrixLHSTypematrixLHSType. 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, 'tridiagonal'"tridiagonal""tridiagonal""tridiagonal""tridiagonal""tridiagonal" for tridiagonal,
'upper_triangular'"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""permuted_upper_triangular" for permuted upper triangular,
'lower_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""permuted_lower_triangular" for permuted lower triangular
matrices.
Example:
For linear least squares problems or if EpsilonEpsilonEpsilonEpsilonEpsilonepsilon is not 0,
the matrix MatrixLHSMatrixLHSMatrixLHSMatrixLHSMatrixLHSmatrixLHS need not be a square matrix. The
linear least squares problem is solved using the singular value
decomposition (SVD) of the matrix MatrixLHSMatrixLHSMatrixLHSMatrixLHSMatrixLHSmatrixLHS by minimizing
||MatrixRHSMatrixRHSMatrixRHSMatrixRHSMatrixRHSmatrixRHS - MatrixLHSMatrixLHSMatrixLHSMatrixLHSMatrixLHSmatrixLHS * MatrixResultMatrixResultMatrixResultMatrixResultMatrixResultmatrixResult||.
All singular values less than the value Epsilon * the
largest singular value are set to 0. For these values no
internal division is done to prevent a division by zero.
Also, the matrix MatrixLHSMatrixLHSMatrixLHSMatrixLHSMatrixLHSmatrixLHS may be rank-deficient. The
type of matrix must be selected via MatrixLHSTypeMatrixLHSTypeMatrixLHSTypeMatrixLHSTypeMatrixLHSTypematrixLHSType =
'general'"general""general""general""general""general".
Example:
Note: The relative accuracy of the floating point representation of
the used data type (double) is EpsilonEpsilonEpsilonEpsilonEpsilonepsilon = 2.2204e-16.
For MatrixLHSTypeMatrixLHSTypeMatrixLHSTypeMatrixLHSTypeMatrixLHSTypematrixLHSType = 'symmetric'"symmetric""symmetric""symmetric""symmetric""symmetric",
'positive_definite'"positive_definite""positive_definite""positive_definite""positive_definite""positive_definite", or 'upper_triangular'"upper_triangular""upper_triangular""upper_triangular""upper_triangular""upper_triangular" the
upper triangular part of the input MatrixLHSMatrixLHSMatrixLHSMatrixLHSMatrixLHSmatrixLHS must contain
the relevant information of the matrix. The strictly lower
triangular part of the matrix is not referenced. For
MatrixLHSTypeMatrixLHSTypeMatrixLHSTypeMatrixLHSTypeMatrixLHSTypematrixLHSType = 'lower_triangular'"lower_triangular""lower_triangular""lower_triangular""lower_triangular""lower_triangular" the lower
triangular part of the input MatrixLHSMatrixLHSMatrixLHSMatrixLHSMatrixLHSmatrixLHS must contain the
relevant information of the matrix. The strictly upper triangular
part of the matrix is not referenced. For MatrixLHSTypeMatrixLHSTypeMatrixLHSTypeMatrixLHSTypeMatrixLHSTypematrixLHSType =
'tridiagonal'"tridiagonal""tridiagonal""tridiagonal""tridiagonal""tridiagonal", only the main diagonal, the superdiagonal,
and the subdiagonal of the input MatrixLHSMatrixLHSMatrixLHSMatrixLHSMatrixLHSmatrixLHS are used. The
other parts of the matrix are not referenced. If the referenced
part of the input MatrixLHSMatrixLHSMatrixLHSMatrixLHSMatrixLHSmatrixLHS 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 of the left
hand side.
The type of the input matrix of the left hand side.
Default value:
'general'
"general"
"general"
"general"
"general"
"general"
List of values: 'general'"general""general""general""general""general", 'lower_triangular'"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_lower_triangular", 'permuted_upper_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""positive_definite", 'symmetric'"symmetric""symmetric""symmetric""symmetric""symmetric", 'tridiagonal'"tridiagonal""tridiagonal""tridiagonal""tridiagonal""tridiagonal", 'upper_triangular'"upper_triangular""upper_triangular""upper_triangular""upper_triangular""upper_triangular"
Type of solving and limitation to set singular
values to be 0.
Default value: 0.0
Suggested values: 0.0, 2.2204e-16
Matrix handle of the input matrix of right hand
side.
New matrix handle with the solution.
If the parameters are valid, the operator solve_matrixsolve_matrixSolveMatrixsolve_matrixSolveMatrixSolveMatrix
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
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