decompose_matrix
— Zerlegt eine Matrix.
decompose_matrix( : : MatrixID, MatrixType : Matrix1ID, Matrix2ID)
Der Operator decompose_matrix
zerlegt die quadratische
Eingabematrix Matrix
, die durch das Matrix Handle
MatrixID
gegeben ist. Die Ergebnisse werden in zwei
generierten Matrizen Matrix1
und Matrix2
gespeichert und deren Matrix Handles Matrix1ID
und
Matrix2ID
werden zurückgegeben. Zugriff auf die
Elemente der Matrizen ist z.B. mit dem Operator
get_full_matrix
möglich.
Der Typ der Eingabematrix Matrix
kann über den Parameter
MatrixType
gewählt werden. Die folgenden Werte stehen zur
Verfügung: 'general' für allgemeine, 'symmetric'
für symmetrische, 'positive_definite' für symmetrisch
positiv definite und 'tridiagonal' für tridiagonale
Matrizen.
Wenn MatrixType
= 'general' oder
'tridiagonal' gewählt ist, wird eine LU Zerlegung
(Lower/Upper) der Form
Matrix
= Matrix1
* Matrix2
vorgenommen. Die Ausgabematrix Matrix1
ist eine
untere Dreiecksmatrix mit Einheitsdiagonalelementen, deren Zeilen
vertauscht sind. Die Ausgabematrix Matrix2
ist eine obere
Dreiecksmatrix.
Ist MatrixType
= '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
1 x 1 und 2 x 2 Blöcken auf der
Hauptdiagonalen.
Eine Cholesky Zerlegung wird berechnet, wenn MatrixType
=
'positive_definite' gesetzt ist. Die Zerlegung hat die Form
Matrix
= Matrix1
* Matrix2
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
.
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 MatrixType
= 'symmetric' oder
'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 MatrixType
= '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.
MatrixID
(input_control) matrix →
(handle)
Matrix Handle der Eingabematrix.
MatrixType
(input_control) string →
(string)
Matrixtyp der Eingabematrix.
Defaultwert: 'general'
Werteliste: 'general' , 'positive_definite' , 'symmetric' , 'tridiagonal'
Matrix1ID
(output_control) matrix →
(handle)
Matrix Handle mit der Ausgabematrix 1.
Matrix2ID
(output_control) matrix →
(handle)
Matrix Handle mit der Ausgabematrix 2.
Sind die Parameterwerte korrekt, dann liefert
decompose_matrix
den Wert 2 (H_MSG_TRUE). Gegebenenfalls wird eine
Fehlerbehandlung durchgeführt.
get_full_matrix
,
get_value_matrix
orthogonal_decompose_matrix
,
solve_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.
Foundation