invert_matrixT_invert_matrixInvertMatrixInvertMatrixinvert_matrix (算子)

名称

invert_matrixT_invert_matrixInvertMatrixInvertMatrixinvert_matrix — 反转矩阵。

签名

invert_matrix( : : MatrixID, MatrixType, Epsilon : MatrixInvID)

Herror T_invert_matrix(const Htuple MatrixID, const Htuple MatrixType, const Htuple Epsilon, Htuple* MatrixInvID)

void InvertMatrix(const HTuple& MatrixID, const HTuple& MatrixType, const HTuple& Epsilon, HTuple* MatrixInvID)

HMatrix HMatrix::InvertMatrix(const HString& MatrixType, double Epsilon) const

HMatrix HMatrix::InvertMatrix(const char* MatrixType, double Epsilon) const

HMatrix HMatrix::InvertMatrix(const wchar_t* MatrixType, double Epsilon) const   ( Windows only)

static void HOperatorSet.InvertMatrix(HTuple matrixID, HTuple matrixType, HTuple epsilon, out HTuple matrixInvID)

HMatrix HMatrix.InvertMatrix(string matrixType, double epsilon)

def invert_matrix(matrix_id: HHandle, matrix_type: str, epsilon: float) -> HHandle

描述

算子 invert_matrixinvert_matrixInvertMatrixInvertMatrixInvertMatrixinvert_matrix computes the inverse of the Matrix defined by the matrix handle MatrixIDMatrixIDMatrixIDMatrixIDmatrixIDmatrix_id. A new matrix MatrixInv is generated with the result and the matrix handle MatrixInvIDMatrixInvIDMatrixInvIDMatrixInvIDmatrixInvIDmatrix_inv_id of this matrix is returned.可通过算子 get_full_matrixget_full_matrixGetFullMatrixGetFullMatrixGetFullMatrixget_full_matrix 等方式访问该矩阵的元素。

For EpsilonEpsilonEpsilonEpsilonepsilonepsilon = 0, the inverse is computed. The type of the Matrix can be selected via MatrixTypeMatrixTypeMatrixTypeMatrixTypematrixTypematrix_type. 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 1:

MatrixTypeMatrixTypeMatrixTypeMatrixTypematrixTypematrix_type = 'general'"general""general""general""general""general", EpsilonEpsilonEpsilonEpsilonepsilonepsilon = 0

Example 2:

MatrixTypeMatrixTypeMatrixTypeMatrixTypematrixTypematrix_type = 'upper_triangular'"upper_triangular""upper_triangular""upper_triangular""upper_triangular""upper_triangular", EpsilonEpsilonEpsilonEpsilonepsilonepsilon = 0

Example 3:

MatrixTypeMatrixTypeMatrixTypeMatrixTypematrixTypematrix_type = 'permuted_upper_triangular'"permuted_upper_triangular""permuted_upper_triangular""permuted_upper_triangular""permuted_upper_triangular""permuted_upper_triangular", EpsilonEpsilonEpsilonEpsilonepsilonepsilon = 0

For EpsilonEpsilonEpsilonEpsilonepsilonepsilon > 0, the pseudo inverse is computed using a singular value decomposition (SVD). During the computation, all singular values less than the value EpsilonEpsilonEpsilonEpsilonepsilonepsilon 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 MatrixTypeMatrixTypeMatrixTypeMatrixTypematrixTypematrix_type = 'general'"general""general""general""general""general".

示例:

MatrixTypeMatrixTypeMatrixTypeMatrixTypematrixTypematrix_type = '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.

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 MatrixTypeMatrixTypeMatrixTypeMatrixTypematrixTypematrix_type = '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 Matrix must contain the relevant information of the matrix. The strictly lower triangular part of the matrix is not referenced. For MatrixTypeMatrixTypeMatrixTypeMatrixTypematrixTypematrix_type = 'lower_triangular'"lower_triangular""lower_triangular""lower_triangular""lower_triangular""lower_triangular" the lower triangular part of the input Matrix must contain the relevant information of the matrix. The strictly upper triangular part of the matrix is not referenced. For MatrixTypeMatrixTypeMatrixTypeMatrixTypematrixTypematrix_type = 'tridiagonal'"tridiagonal""tridiagonal""tridiagonal""tridiagonal""tridiagonal", only the main diagonal, the superdiagonal, and the subdiagonal of the input Matrix are used. The other parts of the matrix are not referenced. If the referenced part of the input Matrix is not of the specified type, an exception is raised.

执行信息

参数

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

输入矩阵的矩阵句柄。

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

The type of the input matrix.

默认值: '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 inversion.

默认值: 0.0

建议值: 0.0, 2.2204e-16

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

Matrix handle with the inverse matrix.

结果

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

可能的前趋

create_matrixcreate_matrixCreateMatrixCreateMatrixCreateMatrixcreate_matrix

可能的后继

get_full_matrixget_full_matrixGetFullMatrixGetFullMatrixGetFullMatrixget_full_matrix, get_value_matrixget_value_matrixGetValueMatrixGetValueMatrixGetValueMatrixget_value_matrix

替代

invert_matrix_modinvert_matrix_modInvertMatrixModInvertMatrixModInvertMatrixModinvert_matrix_mod

另见

transpose_matrixtranspose_matrixTransposeMatrixTransposeMatrixTransposeMatrixtranspose_matrix, transpose_matrix_modtranspose_matrix_modTransposeMatrixModTransposeMatrixModTransposeMatrixModtranspose_matrix_mod

参考文献

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.

模块

基础