Name
decompose_matrixdecompose_matrixDecomposeMatrixdecompose_matrixDecomposeMatrixDecomposeMatrix — Zerlegt eine Matrix.
Der Operator decompose_matrixdecompose_matrixDecomposeMatrixdecompose_matrixDecomposeMatrixDecomposeMatrix zerlegt die quadratische
Eingabematrix MatrixMatrixMatrixMatrixMatrixmatrix, die durch das Matrix Handle
MatrixIDMatrixIDMatrixIDMatrixIDMatrixIDmatrixID gegeben ist. Die Ergebnisse werden in zwei
generierten Matrizen Matrix1Matrix1Matrix1Matrix1Matrix1matrix1 und Matrix2Matrix2Matrix2Matrix2Matrix2matrix2
gespeichert und deren Matrix Handles Matrix1IDMatrix1IDMatrix1IDMatrix1IDMatrix1IDmatrix1ID und
Matrix2IDMatrix2IDMatrix2IDMatrix2IDMatrix2IDmatrix2ID werden zurückgegeben. Zugriff auf die
Elemente der Matrizen ist z.B. mit dem Operator
get_full_matrixget_full_matrixGetFullMatrixget_full_matrixGetFullMatrixGetFullMatrix möglich.
Der Typ der Eingabematrix MatrixMatrixMatrixMatrixMatrixmatrix kann über den Parameter
MatrixTypeMatrixTypeMatrixTypeMatrixTypeMatrixTypematrixType gewählt werden. Die folgenden Werte stehen zur
Verfügung: 'general'"general""general""general""general""general" für allgemeine, 'symmetric'"symmetric""symmetric""symmetric""symmetric""symmetric"
für symmetrische, 'positive_definite'"positive_definite""positive_definite""positive_definite""positive_definite""positive_definite" für symmetrisch
positiv definite und 'tridiagonal'"tridiagonal""tridiagonal""tridiagonal""tridiagonal""tridiagonal" für tridiagonale
Matrizen.
Wenn MatrixTypeMatrixTypeMatrixTypeMatrixTypeMatrixTypematrixType = 'general'"general""general""general""general""general" oder
'tridiagonal'"tridiagonal""tridiagonal""tridiagonal""tridiagonal""tridiagonal" gewählt ist, wird eine LU Zerlegung
(Lower/Upper) der Form
MatrixMatrixMatrixMatrixMatrixmatrix = Matrix1Matrix1Matrix1Matrix1Matrix1matrix1 * Matrix2Matrix2Matrix2Matrix2Matrix2matrix2
vorgenommen. Die Ausgabematrix Matrix1Matrix1Matrix1Matrix1Matrix1matrix1 ist eine
untere Dreiecksmatrix mit Einheitsdiagonalelementen, deren Zeilen
vertauscht sind. Die Ausgabematrix Matrix2Matrix2Matrix2Matrix2Matrix2matrix2 ist eine obere
Dreiecksmatrix.
Ist MatrixTypeMatrixTypeMatrixTypeMatrixTypeMatrixTypematrixType = 'symmetric'"symmetric""symmetric""symmetric""symmetric""symmetric" gesetzt, wird eine
UDU^T Zerlegung (Upper/Diagonal/Upper) verwendet. Sie hat die Form
Hierbei ist die Ausgabematrix Matrix1Matrix1Matrix1Matrix1Matrix1matrix1 eine obere
Dreiecksmatrix, deren Zeilen vertauscht sind. Die Ausgabematrix
Matrix2Matrix2Matrix2Matrix2Matrix2matrix2 ist eine symmetrische Blockdiagonalmatrix mit
1 x 1 und 2 x 2 Blöcken auf der
Hauptdiagonalen.
Eine Cholesky Zerlegung wird berechnet, wenn MatrixTypeMatrixTypeMatrixTypeMatrixTypeMatrixTypematrixType =
'positive_definite'"positive_definite""positive_definite""positive_definite""positive_definite""positive_definite" gesetzt ist. Die Zerlegung hat die Form
MatrixMatrixMatrixMatrixMatrixmatrix = Matrix1Matrix1Matrix1Matrix1Matrix1matrix1 * Matrix2Matrix2Matrix2Matrix2Matrix2matrix2
wobei die Ausgabematrix Matrix1Matrix1Matrix1Matrix1Matrix1matrix1 eine untere Dreiecksmatrix
und Ausgabematrix Matrix2Matrix2Matrix2Matrix2Matrix2matrix2 eine obere Dreiecksmatrix
ist. Außerdem ist die Matrix Matrix2Matrix2Matrix2Matrix2Matrix2matrix2 die Transponierte der
Matrix Matrix1Matrix1Matrix1Matrix1Matrix1matrix1.
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.
Wird MatrixTypeMatrixTypeMatrixTypeMatrixTypeMatrixTypematrixType = 'symmetric'"symmetric""symmetric""symmetric""symmetric""symmetric" oder
'positive_definite'"positive_definite""positive_definite""positive_definite""positive_definite""positive_definite" gewählt, so muss der obere
Dreiecksteil der Eingabematrix MatrixMatrixMatrixMatrixMatrixmatrix die relevante
Information der Matrix beinhalten. Der exakt untere Teil der Matrix
wird nicht verwendet. Wird MatrixTypeMatrixTypeMatrixTypeMatrixTypeMatrixTypematrixType = 'tridiagonal'"tridiagonal""tridiagonal""tridiagonal""tridiagonal""tridiagonal"
gesetzt, wird nur die Hauptdiagonale und die beiden Nebendiagonalen
der Eingabematrix MatrixMatrixMatrixMatrixMatrixmatrix genutzt. Die anderen Teile der
Matrix werden nicht verwendet. Wenn der verwendete Teil der
Eingabematrix MatrixMatrixMatrixMatrixMatrixmatrix nicht vom spezifizierten Typ ist,
wird eine Fehlerbehandlung durchgeführt.
- Multithreading-Typ: reentrant (läuft parallel zu nicht-exklusiven Operatoren).
- Multithreading-Bereich: global (kann von jedem Thread aufgerufen werden).
- Wird ohne Parallelisierung verarbeitet.
Matrix Handle der Eingabematrix.
Matrixtyp der Eingabematrix.
Defaultwert:
'general'
"general"
"general"
"general"
"general"
"general"
Werteliste: '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"
Matrix Handle mit der Ausgabematrix 1.
Matrix Handle mit der Ausgabematrix 2.
Sind die Parameterwerte korrekt, dann liefert
decompose_matrixdecompose_matrixDecomposeMatrixdecompose_matrixDecomposeMatrixDecomposeMatrix den Wert 2 (H_MSG_TRUE). Gegebenenfalls wird eine
Fehlerbehandlung durchgeführt.
create_matrixcreate_matrixCreateMatrixcreate_matrixCreateMatrixCreateMatrix
get_full_matrixget_full_matrixGetFullMatrixget_full_matrixGetFullMatrixGetFullMatrix,
get_value_matrixget_value_matrixGetValueMatrixget_value_matrixGetValueMatrixGetValueMatrix
orthogonal_decompose_matrixorthogonal_decompose_matrixOrthogonalDecomposeMatrixorthogonal_decompose_matrixOrthogonalDecomposeMatrixOrthogonalDecomposeMatrix,
solve_matrixsolve_matrixSolveMatrixsolve_matrixSolveMatrixSolveMatrix
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.
Foundation