For linear equation systems, the equations
MatrixLHSMatrixLHSMatrixLHSMatrixLHSmatrixLHSmatrix_lhs * MatrixResultMatrixResultMatrixResultMatrixResultmatrixResultmatrix_result = MatrixRHSMatrixRHSMatrixRHSMatrixRHSmatrixRHSmatrix_rhs
are solved. Therefore, the matrix MatrixLHSMatrixLHSMatrixLHSMatrixLHSmatrixLHSmatrix_lhs must be a
square matrix and the parameter EpsilonEpsilonEpsilonEpsilonepsilonepsilon must be 0. The
type of the matrix MatrixLHSMatrixLHSMatrixLHSMatrixLHSmatrixLHSmatrix_lhs can be selected via the
parameter MatrixLHSTypeMatrixLHSTypeMatrixLHSTypeMatrixLHSTypematrixLHSTypematrix_lhstype. 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 MatrixLHSMatrixLHSMatrixLHSMatrixLHSmatrixLHSmatrix_lhs need not be a square matrix. The
linear least squares problem is solved using the singular value
decomposition (SVD) of the matrix MatrixLHSMatrixLHSMatrixLHSMatrixLHSmatrixLHSmatrix_lhs by minimizing
||MatrixRHSMatrixRHSMatrixRHSMatrixRHSmatrixRHSmatrix_rhs - MatrixLHSMatrixLHSMatrixLHSMatrixLHSmatrixLHSmatrix_lhs * MatrixResultMatrixResultMatrixResultMatrixResultmatrixResultmatrix_result||.
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 MatrixLHSMatrixLHSMatrixLHSMatrixLHSmatrixLHSmatrix_lhs may be rank-deficient. The
type of matrix must be selected via MatrixLHSTypeMatrixLHSTypeMatrixLHSTypeMatrixLHSTypematrixLHSTypematrix_lhstype =
'general'"general""general""general""general""general".
For MatrixLHSTypeMatrixLHSTypeMatrixLHSTypeMatrixLHSTypematrixLHSTypematrix_lhstype = '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 MatrixLHSMatrixLHSMatrixLHSMatrixLHSmatrixLHSmatrix_lhs must contain
the relevant information of the matrix. The strictly lower
triangular part of the matrix is not referenced. For
MatrixLHSTypeMatrixLHSTypeMatrixLHSTypeMatrixLHSTypematrixLHSTypematrix_lhstype = 'lower_triangular'"lower_triangular""lower_triangular""lower_triangular""lower_triangular""lower_triangular" the lower
triangular part of the input MatrixLHSMatrixLHSMatrixLHSMatrixLHSmatrixLHSmatrix_lhs must contain the
relevant information of the matrix. The strictly upper triangular
part of the matrix is not referenced. For MatrixLHSTypeMatrixLHSTypeMatrixLHSTypeMatrixLHSTypematrixLHSTypematrix_lhstype =
'tridiagonal'"tridiagonal""tridiagonal""tridiagonal""tridiagonal""tridiagonal", only the main diagonal, the superdiagonal,
and the subdiagonal of the input MatrixLHSMatrixLHSMatrixLHSMatrixLHSmatrixLHSmatrix_lhs are used. The
other parts of the matrix are not referenced. If the referenced
part of the input MatrixLHSMatrixLHSMatrixLHSMatrixLHSmatrixLHSmatrix_lhs is not of the specified type,
an exception is raised.
Execution Information
Multithreading type: reentrant (runs in parallel with non-exclusive operators).
Multithreading scope: global (may be called from any thread).
If the parameters are valid, the operator solve_matrixsolve_matrixSolveMatrixSolveMatrixSolveMatrixsolve_matrix
returns the value 2 (H_MSG_TRUE). If necessary, an exception is raised.
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.