| Operatoren |
invert_matrix_mod — Invertiert eine Matrix.
invert_matrix_mod( : : MatrixID, MatrixType, Epsilon : )
Der Operator invert_matrix_mod berechnet die Inverse der Matrix Matrix. Die Eingabematrix wird mit dem Ergebnis überschrieben. Zugriff auf die Elemente der Matrix ist z.B. mit dem Operator get_full_matrix möglich.
Die Inverse wird berechnet, wenn Epsilon = 0 ist. Der Matrixtyp wird über MatrixType gewählt. Zur Verfügung stehen 'general' für allgemeine, 'symmetric' für symmetrische, 'positive_definite' für symmetrisch positiv definite, 'tridiagonal' für tridiagonale Matrizen, 'upper_triangular' für obere, 'permuted_upper_triangular' für permutierte obere, 'lower_triangular' für untere und 'permuted_lower_triangular' für permutierte untere Dreiecksmatrizen.
Beispiel 1:
/ 1.0 3.0 3.0 \
Matrix = | 4.0 5.0 6.0 |
\ 5.0 5.0 7.0 /
MatrixType = 'general' Epsilon = 0
/ -1.25 1.50 -0.75 \
-> Matrix = | -0.50 2.00 -1.50 |
\ 1.25 -2.50 1.75 /
Beispiel 2:
/ 1.0 3.0 3.0 \
Matrix = | 0 2.0 6.0 |
\ 0 0 10.0 /
MatrixType = 'upper_triangular' Epsilon = 0
/ 1.00 -1.50 0.60 \
-> Matrix = | 0 0.50 -0.30 |
\ 0 0 0.10 /
Beispiel 3:
/ 1.0 3.0 3.0 \
Matrix = | 0 0 10.0 |
\ 0 2.0 6.0 /
MatrixType = 'permuted_upper_triangular' Epsilon = 0
/ 1.00 -1.50 0.60 \
-> Matrix = | 0 0.50 -0.30 |
\ 0 0 0.10 /
Die Pseudoinverse wird berechnet, wenn Epsilon > 0 gesetzt ist. Alle Singulärwerte, die während der Berechnung entstehen und kleiner als Epsilon * dem größten Singulärwert sind, werden auf 0 gesetzt. Für diese Werte wird keine interne Division vorgenommen um einer Division durch 0 vorzubeugen. Als Matrixtyp muss MatrixType = 'general' gesetzt werden.
Beispiel:
/ 3.0 1.0 -2.0 5.0 \
Matrix = | -5.0 7.0 2.0 -6.0 |
\ -9.0 -4.0 1.0 4.0 /
MatrixType = 'general' Epsilon = 2.2204e-16
/ -0.0021 -0.0482 -0.0813 \
| 0.1435 0.1137 -0.0137 |
-> Matrix = | -0.0519 -0.0015 0.0028 |
\ 0.1518 0.0056 0.0526 /
Bemerkung: Die relative Genauigkeit der Gleitkommarepräsentation des genutzten Datentyps (double) ist Epsilon = 2.2204e-16.
Es ist ebenfalls zu beachten, dass in den Beispielen Unterschiede in der Bedeutung der Werte in den Ausgabematrizen zu finden sind: Die Ergebnisse der Elemente sind per Definition ein bestimmter Wert, wenn dieser als ganze Zahl dargestellt ist, z.B. 0 oder 1. Der Wert ist berechnet, wenn er als Gleitpunktzahl dargestellt ist, z.B. 0.0 oder 1.0.
Wird MatrixType = 'symmetric', 'positive_definite' oder 'upper_triangular' 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 = 'lower_triangular' gewählt, so muss der untere Dreiecksteil der Eingabematrix Matrix die relevante Information der Matrix beinhalten. Der exakt obere 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.
invert_matrix_mod verändert den Inhalt einer bereits bestehenden Matrix.
Matrix Handle der Eingabematrix.
Der Matrixtyp der Eingabematrix.
Defaultwert: 'general'
Werteliste: 'general', 'lower_triangular', 'permuted_lower_triangular', 'permuted_upper_triangular', 'positive_definite', 'symmetric', 'tridiagonal', 'upper_triangular'
Inversiontype.
Defaultwert: 0.0
Wertevorschläge: 0.0, 2.2204e-16
Sind die Parameterwerte korrekt, dann liefert invert_matrix_mod den Wert 2 (H_MSG_TRUE). Gegebenenfalls wird eine Fehlerbehandlung durchgeführt.
get_full_matrix, get_value_matrix
transpose_matrix, transpose_matrix_mod
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
| Operatoren |