decompose_matrixT_decompose_matrixDecomposeMatrixDecomposeMatrixdecompose_matrix分解矩阵(算子)

名称

decompose_matrixT_decompose_matrixDecomposeMatrixDecomposeMatrixdecompose_matrix — 分解一个矩阵。

签名

decompose_matrix( : : MatrixID, MatrixType : Matrix1ID, Matrix2ID)

Herror T_decompose_matrix(const Htuple MatrixID, const Htuple MatrixType, Htuple* Matrix1ID, Htuple* Matrix2ID)

void DecomposeMatrix(const HTuple& MatrixID, const HTuple& MatrixType, HTuple* Matrix1ID, HTuple* Matrix2ID)

HMatrix HMatrix::DecomposeMatrix(const HString& MatrixType, HMatrix* Matrix2ID) const

HMatrix HMatrix::DecomposeMatrix(const char* MatrixType, HMatrix* Matrix2ID) const

HMatrix HMatrix::DecomposeMatrix(const wchar_t* MatrixType, HMatrix* Matrix2ID) const   ( Windows only)

static void HOperatorSet.DecomposeMatrix(HTuple matrixID, HTuple matrixType, out HTuple matrix1ID, out HTuple matrix2ID)

HMatrix HMatrix.DecomposeMatrix(string matrixType, out HMatrix matrix2ID)

def decompose_matrix(matrix_id: HHandle, matrix_type: str) -> Tuple[HHandle, HHandle]

描述

算子 decompose_matrixdecompose_matrixDecomposeMatrixDecomposeMatrixDecomposeMatrixdecompose_matrix 将由矩阵句柄 Matrix given by the matrix handle MatrixIDMatrixIDMatrixIDMatrixIDmatrixIDmatrix_id 指定的输入方阵进行分解。结果存储在两个生成的矩阵 Matrix1Matrix2 中。该算子返回矩阵句柄 Matrix1IDMatrix1IDMatrix1IDMatrix1IDmatrix1IDmatrix_1idMatrix2IDMatrix2IDMatrix2IDMatrix2IDmatrix2IDmatrix_2id。可以通过 get_full_matrixget_full_matrixGetFullMatrixGetFullMatrixGetFullMatrixget_full_matrix 等算子访问这些矩阵的元素。

可以通过参数 MatrixTypeMatrixTypeMatrixTypeMatrixTypematrixTypematrix_type 选择输入Matrix 的类型。支持以下值: 'general'"general""general""general""general""general" 表示一般矩阵,'symmetric'"symmetric""symmetric""symmetric""symmetric""symmetric" 表示对称矩阵,'positive_definite'"positive_definite""positive_definite""positive_definite""positive_definite""positive_definite" 表示对称正定矩阵,'tridiagonal'"tridiagonal""tridiagonal""tridiagonal""tridiagonal""tridiagonal" 表示三对角矩阵。

MatrixTypeMatrixTypeMatrixTypeMatrixTypematrixTypematrix_type = 'general'"general""general""general""general""general"'tridiagonal'"tridiagonal""tridiagonal""tridiagonal""tridiagonal""tridiagonal" 时,该分解为一种 LU 因式分解(下三角/上三角),形式为 输出矩阵 Matrix1 是一个下三角矩阵,其对角线元素为 1,且行已交换。输出矩阵 Matrix2 是一个上三角矩阵。

一般矩阵的因式分解示例:

三对角矩阵的因式分解示例:

MatrixTypeMatrixTypeMatrixTypeMatrixTypematrixTypematrix_type = 'symmetric'"symmetric""symmetric""symmetric""symmetric""symmetric" 时,该因式分解为 UDU^T 分解(上三角/对角/上三角),形式为 其中,输出矩阵 Matrix1 是一个列序互换的上三角矩阵。输出矩阵 Matrix2 是一个由 对角块组成的对称块对角矩阵。

对称矩阵的因式分解示例:

MatrixTypeMatrixTypeMatrixTypeMatrixTypematrixTypematrix_type = 'positive_definite'"positive_definite""positive_definite""positive_definite""positive_definite""positive_definite" 时,将计算以下形式的科莱斯基因式分解(Cholesky factorization): 其中,输出矩阵 Matrix1 是一个下三角矩阵,输出矩阵 Matrix2是一个上三角矩阵。此外,Matrix2 是矩阵 Matrix1 的转置。

正定矩阵的因式分解示例:

需注意示例中输出矩阵值的含义存在差异:若值显示为整数(如 0 或 1 ),则该元素值即为该特定数值;若数值显示为浮点数(如 0.0 或 1.0 ),则该值由算子计算得出。

注意

MatrixTypeMatrixTypeMatrixTypeMatrixTypematrixTypematrix_type = 'symmetric'"symmetric""symmetric""symmetric""symmetric""symmetric"'positive_definite'"positive_definite""positive_definite""positive_definite""positive_definite""positive_definite" 时,输入 Matrix 的上三角部分必须包含该矩阵的相关信息。矩阵的严格下三角部分不会被引用。对于 MatrixTypeMatrixTypeMatrixTypeMatrixTypematrixTypematrix_type = 'tridiagonal'"tridiagonal""tridiagonal""tridiagonal""tridiagonal""tridiagonal",仅使用输入 Matrix 的主对角线、超对角线和次对角线。矩阵的其他部分不予引用。如果输入 Matrix 的被引用部分不符合指定类型,则会引发异常。

执行信息

参数

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

输入矩阵的矩阵句柄。

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

输入矩阵的类型。

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

值列表: 'general'"general""general""general""general""general", 'positive_definite'"positive_definite""positive_definite""positive_definite""positive_definite""positive_definite", 'symmetric'"symmetric""symmetric""symmetric""symmetric""symmetric", 'tridiagonal'"tridiagonal""tridiagonal""tridiagonal""tridiagonal""tridiagonal"

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

带有输出矩阵 1 的矩阵句柄。

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

带有输出矩阵 2 的矩阵句柄。

结果

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

可能的前趋

create_matrixcreate_matrixCreateMatrixCreateMatrixCreateMatrixcreate_matrix

可能的后继

get_full_matrixget_full_matrixGetFullMatrixGetFullMatrixGetFullMatrixget_full_matrix, get_value_matrixget_value_matrixGetValueMatrixGetValueMatrixGetValueMatrixget_value_matrix

替代

orthogonal_decompose_matrixorthogonal_decompose_matrixOrthogonalDecomposeMatrixOrthogonalDecomposeMatrixOrthogonalDecomposeMatrixorthogonal_decompose_matrix, solve_matrixsolve_matrixSolveMatrixSolveMatrixSolveMatrixsolve_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.

模块

基础