decompose_matrixT_decompose_matrixDecomposeMatrixDecomposeMatrixdecompose_matrix (Operator)

Name

decompose_matrixT_decompose_matrixDecomposeMatrixDecomposeMatrixdecompose_matrix — Zerlegt eine Matrix.

Signatur

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   ( Nur Windows)

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]

Beschreibung

Der Operator decompose_matrixdecompose_matrixDecomposeMatrixDecomposeMatrixdecompose_matrix zerlegt die quadratische Eingabematrix Matrix, die durch das Matrix Handle MatrixIDMatrixIDMatrixIDmatrixIDmatrix_id gegeben ist. Die Ergebnisse werden in zwei generierten Matrizen Matrix1 und Matrix2 gespeichert und deren Matrix Handles Matrix1IDMatrix1IDMatrix1IDmatrix1IDmatrix_1id und Matrix2IDMatrix2IDMatrix2IDmatrix2IDmatrix_2id werden zurückgegeben. Zugriff auf die Elemente der Matrizen ist z.B. mit dem Operator get_full_matrixget_full_matrixGetFullMatrixGetFullMatrixget_full_matrix möglich.

Der Typ der Eingabematrix Matrix kann über den Parameter MatrixTypeMatrixTypeMatrixTypematrixTypematrix_type gewählt werden. Die folgenden Werte stehen zur Verfügung: 'general'"general""general""general""general" für allgemeine, 'symmetric'"symmetric""symmetric""symmetric""symmetric" für symmetrische, 'positive_definite'"positive_definite""positive_definite""positive_definite""positive_definite" für symmetrisch positiv definite und 'tridiagonal'"tridiagonal""tridiagonal""tridiagonal""tridiagonal" für tridiagonale Matrizen.

Wenn MatrixTypeMatrixTypeMatrixTypematrixTypematrix_type = 'general'"general""general""general""general" oder 'tridiagonal'"tridiagonal""tridiagonal""tridiagonal""tridiagonal" gewählt ist, wird eine LU Zerlegung (Lower/Upper) der Form vorgenommen. Die Ausgabematrix Matrix1 ist eine untere Dreiecksmatrix mit Einheitsdiagonalelementen, deren Zeilen vertauscht sind. Die Ausgabematrix Matrix2 ist eine obere Dreiecksmatrix.

Beispiel für die Zerlegung einer allgemeinen Matrix:

Beispiel für die Zerlegung einer tridiagonalen Matrix:

Ist MatrixTypeMatrixTypeMatrixTypematrixTypematrix_type = 'symmetric'"symmetric""symmetric""symmetric""symmetric" gesetzt, wird eine UDU^T Zerlegung (Upper/Diagonal/Upper) verwendet. Sie hat die Form Hierbei ist die Ausgabematrix Matrix1 eine obere Dreiecksmatrix, deren Zeilen vertauscht sind. Die Ausgabematrix Matrix2 ist eine symmetrische Blockdiagonalmatrix mit und Blöcken auf der Hauptdiagonalen.

Beispiel für die Zerlegung einer symmetrischen Matrix:

Eine Cholesky Zerlegung wird berechnet, wenn MatrixTypeMatrixTypeMatrixTypematrixTypematrix_type = 'positive_definite'"positive_definite""positive_definite""positive_definite""positive_definite" gesetzt ist. Die Zerlegung hat die Form wobei die Ausgabematrix Matrix1 eine untere Dreiecksmatrix und Ausgabematrix Matrix2 eine obere Dreiecksmatrix ist. Außerdem ist die Matrix Matrix2 die Transponierte der Matrix Matrix1.

Beispiel für die Zerlegung einer positiv definiten Matrix:

Es ist zu beachten, dass in den Beispielen Unterschiede in der Bedeutung der Werte in den Ausgabematrizen zu finden sind: Wenn ein Wert als ganze Zahl dargestellt ist, z.B. 0 oder 1, ist der Wert dieses Elements per Definition dieser bestimmte Wert. Wenn der Wert als Gleitpunktzahl dargestellt ist, z.B. 0.0 oder 1.0, ist der Wert von dem Operator berechnet worden.

Achtung

Wird MatrixTypeMatrixTypeMatrixTypematrixTypematrix_type = 'symmetric'"symmetric""symmetric""symmetric""symmetric" oder 'positive_definite'"positive_definite""positive_definite""positive_definite""positive_definite" gewählt, so muss der obere Dreiecksteil der Eingabematrix Matrix die relevante Information der Matrix beinhalten. Der exakt untere Teil der Matrix wird nicht verwendet. Wird MatrixTypeMatrixTypeMatrixTypematrixTypematrix_type = 'tridiagonal'"tridiagonal""tridiagonal""tridiagonal""tridiagonal" gesetzt, wird nur die Hauptdiagonale und die beiden Nebendiagonalen der Eingabematrix Matrix genutzt. Die anderen Teile der Matrix werden nicht verwendet. Wenn der verwendete Teil der Eingabematrix Matrix nicht vom spezifizierten Typ ist, wird eine Fehlerbehandlung durchgeführt.

Ausführungsinformationen

Parameter

MatrixIDMatrixIDMatrixIDmatrixIDmatrix_id (input_control)  matrix HMatrix, HTupleHHandleHTupleHtuple (handle) (IntPtr) (HHandle) (handle)

Matrix Handle der Eingabematrix.

MatrixTypeMatrixTypeMatrixTypematrixTypematrix_type (input_control)  string HTuplestrHTupleHtuple (string) (string) (HString) (char*)

Matrixtyp der Eingabematrix.

Default: 'general' "general" "general" "general" "general"

Werteliste: 'general'"general""general""general""general", 'positive_definite'"positive_definite""positive_definite""positive_definite""positive_definite", 'symmetric'"symmetric""symmetric""symmetric""symmetric", 'tridiagonal'"tridiagonal""tridiagonal""tridiagonal""tridiagonal"

Matrix1IDMatrix1IDMatrix1IDmatrix1IDmatrix_1id (output_control)  matrix HMatrix, HTupleHHandleHTupleHtuple (handle) (IntPtr) (HHandle) (handle)

Matrix Handle mit der Ausgabematrix 1.

Matrix2IDMatrix2IDMatrix2IDmatrix2IDmatrix_2id (output_control)  matrix HMatrix, HTupleHHandleHTupleHtuple (handle) (IntPtr) (HHandle) (handle)

Matrix Handle mit der Ausgabematrix 2.

Ergebnis

Sind die Parameterwerte korrekt, dann liefert decompose_matrixdecompose_matrixDecomposeMatrixDecomposeMatrixdecompose_matrix den Wert 2 ( H_MSG_TRUE) . Gegebenenfalls wird eine Fehlerbehandlung durchgeführt.

Vorgänger

create_matrixcreate_matrixCreateMatrixCreateMatrixcreate_matrix

Nachfolger

get_full_matrixget_full_matrixGetFullMatrixGetFullMatrixget_full_matrix, get_value_matrixget_value_matrixGetValueMatrixGetValueMatrixget_value_matrix

Alternativen

orthogonal_decompose_matrixorthogonal_decompose_matrixOrthogonalDecomposeMatrixOrthogonalDecomposeMatrixorthogonal_decompose_matrix, solve_matrixsolve_matrixSolveMatrixSolveMatrixsolve_matrix

Literatur

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.

Modul

Foundation