KlassenKlassenKlassenKlassen | | | | Operatoren

decompose_matrixdecompose_matrixDecomposeMatrixdecompose_matrixDecomposeMatrixDecomposeMatrix (Operator)

Name

decompose_matrixdecompose_matrixDecomposeMatrixdecompose_matrixDecomposeMatrixDecomposeMatrix — Zerlegt eine Matrix.

Signatur

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

Herror decompose_matrix(const Hlong MatrixID, const char* MatrixType, Hlong* Matrix1ID, Hlong* Matrix2ID)

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

Herror decompose_matrix(const HTuple& MatrixID, const HTuple& MatrixType, Hlong* Matrix1ID, Hlong* Matrix2ID)

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

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

void HOperatorSetX.DecomposeMatrix(
[in] VARIANT MatrixID, [in] VARIANT MatrixType, [out] VARIANT* Matrix1ID, [out] VARIANT* Matrix2ID)

IHMatrixX* HMatrixX.DecomposeMatrix(
[in] BSTR MatrixType, [out] IHMatrixX*Matrix2ID)

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

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

Beschreibung

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.

Achtung

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.

Parallelisierung

Parameter

MatrixIDMatrixIDMatrixIDMatrixIDMatrixIDmatrixID (input_control)  matrix HMatrix, HTupleHTupleHMatrix, HTupleHMatrixX, VARIANTHtuple (integer) (IntPtr) (Hlong) (Hlong) (Hlong) (Hlong)

Matrix Handle der Eingabematrix.

MatrixTypeMatrixTypeMatrixTypeMatrixTypeMatrixTypematrixType (input_control)  string HTupleHTupleHTupleVARIANTHtuple (string) (string) (HString) (char*) (BSTR) (char*)

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"

Matrix1IDMatrix1IDMatrix1IDMatrix1IDMatrix1IDmatrix1ID (output_control)  matrix HMatrix, HTupleHTupleHMatrix, HTupleHMatrixX, VARIANTHtuple (integer) (IntPtr) (Hlong) (Hlong) (Hlong) (Hlong)

Matrix Handle mit der Ausgabematrix 1.

Matrix2IDMatrix2IDMatrix2IDMatrix2IDMatrix2IDmatrix2ID (output_control)  matrix HMatrix, HTupleHTupleHMatrix, HTupleHMatrixX, VARIANTHtuple (integer) (IntPtr) (Hlong) (Hlong) (Hlong) (Hlong)

Matrix Handle mit der Ausgabematrix 2.

Ergebnis

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

Vorgänger

create_matrixcreate_matrixCreateMatrixcreate_matrixCreateMatrixCreateMatrix

Nachfolger

get_full_matrixget_full_matrixGetFullMatrixget_full_matrixGetFullMatrixGetFullMatrix, get_value_matrixget_value_matrixGetValueMatrixget_value_matrixGetValueMatrixGetValueMatrix

Alternativen

orthogonal_decompose_matrixorthogonal_decompose_matrixOrthogonalDecomposeMatrixorthogonal_decompose_matrixOrthogonalDecomposeMatrixOrthogonalDecomposeMatrix, solve_matrixsolve_matrixSolveMatrixsolve_matrixSolveMatrixSolveMatrix

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


KlassenKlassenKlassenKlassen | | | | Operatoren