solve_matrixT_solve_matrixSolveMatrixSolveMatrixsolve_matrix (算子)

名称

solve_matrixT_solve_matrixSolveMatrixSolveMatrixsolve_matrix — 计算方程组的解。

签名

solve_matrix( : : MatrixLHSID, MatrixLHSType, Epsilon, MatrixRHSID : MatrixResultID)

Herror T_solve_matrix(const Htuple MatrixLHSID, const Htuple MatrixLHSType, const Htuple Epsilon, const Htuple MatrixRHSID, Htuple* MatrixResultID)

void SolveMatrix(const HTuple& MatrixLHSID, const HTuple& MatrixLHSType, const HTuple& Epsilon, const HTuple& MatrixRHSID, HTuple* MatrixResultID)

HMatrix HMatrix::SolveMatrix(const HString& MatrixLHSType, double Epsilon, const HMatrix& MatrixRHSID) const

HMatrix HMatrix::SolveMatrix(const char* MatrixLHSType, double Epsilon, const HMatrix& MatrixRHSID) const

HMatrix HMatrix::SolveMatrix(const wchar_t* MatrixLHSType, double Epsilon, const HMatrix& MatrixRHSID) const   ( Windows only)

static void HOperatorSet.SolveMatrix(HTuple matrixLHSID, HTuple matrixLHSType, HTuple epsilon, HTuple matrixRHSID, out HTuple matrixResultID)

HMatrix HMatrix.SolveMatrix(string matrixLHSType, double epsilon, HMatrix matrixRHSID)

def solve_matrix(matrix_lhsid: HHandle, matrix_lhstype: str, epsilon: float, matrix_rhsid: HHandle) -> HHandle

描述

算子 solve_matrixsolve_matrixSolveMatrixSolveMatrixSolveMatrixsolve_matrix computes the solution of a system of linear equations or of a linear least squares problem. The input matrices MatrixLHS and MatrixRHS are defined by the matrix handles MatrixLHSIDMatrixLHSIDMatrixLHSIDMatrixLHSIDmatrixLHSIDmatrix_lhsid and MatrixRHSIDMatrixRHSIDMatrixRHSIDMatrixRHSIDmatrixRHSIDmatrix_rhsid. The number of rows of matrices MatrixLHS and MatrixRHS must be identical. The operator returns the matrix handle MatrixResultIDMatrixResultIDMatrixResultIDMatrixResultIDmatrixResultIDmatrix_result_id of the matrix MatrixResult.可通过算子 get_full_matrixget_full_matrixGetFullMatrixGetFullMatrixGetFullMatrixget_full_matrix 等方式访问该矩阵的元素。

For linear equation systems, the equations are solved. Therefore, the matrix MatrixLHS must be a square matrix and the parameter EpsilonEpsilonEpsilonEpsilonepsilonepsilon must be 0. The type of the matrix MatrixLHS 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.

示例:

MatrixLHSTypeMatrixLHSTypeMatrixLHSTypeMatrixLHSTypematrixLHSTypematrix_lhstype = 'positive_definite'"positive_definite""positive_definite""positive_definite""positive_definite""positive_definite", EpsilonEpsilonEpsilonEpsilonepsilonepsilon = 0

For linear least squares problems or if EpsilonEpsilonEpsilonEpsilonepsilonepsilon is not 0, the matrix MatrixLHS need not be a square matrix. The linear least squares problem is solved using the singular value decomposition (SVD) of the matrix MatrixLHS by minimizing 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 MatrixLHS may be rank-deficient. The type of matrix must be selected via MatrixLHSTypeMatrixLHSTypeMatrixLHSTypeMatrixLHSTypematrixLHSTypematrix_lhstype = 'general'"general""general""general""general""general".

示例:

MatrixLHSTypeMatrixLHSTypeMatrixLHSTypeMatrixLHSTypematrixLHSTypematrix_lhstype = 'general'"general""general""general""general""general", EpsilonEpsilonEpsilonEpsilonepsilonepsilon = 2.2204e-16

Note: The relative accuracy of the floating point representation of the used data type (double) is EpsilonEpsilonEpsilonEpsilonepsilonepsilon = 2.2204e-16.

注意

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 MatrixLHS 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 MatrixLHS 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 MatrixLHS are used. The other parts of the matrix are not referenced. If the referenced part of the input MatrixLHS is not of the specified type, an exception is raised.

执行信息

参数

MatrixLHSIDMatrixLHSIDMatrixLHSIDMatrixLHSIDmatrixLHSIDmatrix_lhsid (输入控制)  matrix HMatrix, HTupleHHandleHTupleHtuple (handle) (IntPtr) (HHandle) (handle)

Matrix handle of the input matrix of the left hand side.

MatrixLHSTypeMatrixLHSTypeMatrixLHSTypeMatrixLHSTypematrixLHSTypematrix_lhstype (输入控制)  string HTuplestrHTupleHtuple (string) (string) (HString) (char*)

The type of the input matrix of the left hand side.

默认值: 'general' "general" "general" "general" "general" "general"

值列表: '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"

EpsilonEpsilonEpsilonEpsilonepsilonepsilon (输入控制)  real HTuplefloatHTupleHtuple (real) (double) (double) (double)

Type of solving and limitation to set singular values to be 0.

默认值: 0.0

建议值: 0.0, 2.2204e-16

MatrixRHSIDMatrixRHSIDMatrixRHSIDMatrixRHSIDmatrixRHSIDmatrix_rhsid (输入控制)  matrix HMatrix, HTupleHHandleHTupleHtuple (handle) (IntPtr) (HHandle) (handle)

Matrix handle of the input matrix of right hand side.

MatrixResultIDMatrixResultIDMatrixResultIDMatrixResultIDmatrixResultIDmatrix_result_id (输出控制)  matrix HMatrix, HTupleHHandleHTupleHtuple (handle) (IntPtr) (HHandle) (handle)

New matrix handle with the solution.

结果

如果参数有效,算子 solve_matrixsolve_matrixSolveMatrixSolveMatrixSolveMatrixsolve_matrix 返回值 2 ( H_MSG_TRUE )。如有必要,则抛出异常。

可能的前趋

create_matrixcreate_matrixCreateMatrixCreateMatrixCreateMatrixcreate_matrix

可能的后继

get_full_matrixget_full_matrixGetFullMatrixGetFullMatrixGetFullMatrixget_full_matrix, get_value_matrixget_value_matrixGetValueMatrixGetValueMatrixGetValueMatrixget_value_matrix

参考文献

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.

模块

基础