solve_matrix — Berechnet die Lösung eines Gleichungssystems.
solve_matrix( : : MatrixLHSID, MatrixLHSType, Epsilon, MatrixRHSID : MatrixResultID)
Der Operator solve_matrix berechnet die Lösung eines
linearen Gleichungssystems oder eines linearen Kleinsten-Quadrate
Problems. Die Eingabematrizen MatrixLHS und
MatrixRHS sind durch die Matrix Handles
MatrixLHSID und MatrixRHSID gegeben. Die Anzahl
der Zeilen der Matrizen MatrixLHS und MatrixRHS
müssen identisch sein. Der Operator gibt das Matrix Handle
MatrixResultID der Matrix MatrixResult zurück.
Zugriff auf die Elemente der Matrix ist z.B. mit dem Operator
get_full_matrix möglich.
Für lineare Gleichungssysteme werden die Gleichungen
gelöst. Hierfür muss die Matrix MatrixLHS quadratisch und
der Parameter Epsilon 0 sein. Der Matrixtyp der
Matrix MatrixLHS kann über den Parameter
MatrixLHSType 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, '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:
MatrixLHSType = 'positive_definite',
Epsilon = 0
Für ein lineares Kleinste-Quadrate Problem oder die Wahl
Epsilon ungleich 0 muss die Matrix MatrixLHS
nicht quadratisch sein. Die Kleinste-Quadrate Lösung wird mittels
einer Singulärwertzerlegung der Matrix MatrixLHS durch
Minimieren von
berechnet. Alle Singulärwerte, die kleiner als Epsilon
dem größten Singulärwert sind, werden 0 gesetzt.
Für diese Werte wird keine interne Division vorgenommen um einer
Division durch 0 vorzubeugen. Ebenfalls darf die Matrix
MatrixLHS in diesem Fall einen Rangdefekt aufweisen. Als
Matrixtyp muss MatrixLHSType = 'general' gewählt
werden.
Beispiel:
MatrixLHSType = 'general',
Epsilon = 2.2204e-16
Bemerkung: Die relative Genauigkeit der Gleitkommarepräsentation
des genutzten Datentyps (double) ist Epsilon = 2.2204e-16.
Wird MatrixLHSType = 'symmetric',
'positive_definite' oder 'upper_triangular'
gewählt, so muss der obere Dreiecksteil der Eingabematrix
MatrixLHS die relevante Information der Matrix beinhalten.
Der exakt untere Teil der Matrix wird nicht verwendet. Wird
MatrixLHSType = 'lower_triangular' gewählt, so muss
der untere Dreiecksteil der Eingabematrix MatrixLHS die
relevante Information der Matrix beinhalten. Der exakt obere
Teil der Matrix wird nicht verwendet. Wird MatrixLHSType =
'tridiagonal' gesetzt, wird nur die Hauptdiagonale und
die beiden Nebendiagonalen der Eingabematrix MatrixLHS
genutzt. Die anderen Teile der Matrix werden nicht verwendet.
Wenn der verwendete Teil der Eingabematrix MatrixLHS nicht
vom spezifizierten Typ ist, wird eine Fehlerbehandlung
durchgeführt.
MatrixLHSID (input_control) matrix → (handle)
Matrix Handle der Eingabematrix der linken Seite.
MatrixLHSType (input_control) string → (string)
Der Matrixtyp der Eingabematrix der linken Seite.
Default: 'general'
Werteliste: 'general', 'lower_triangular', 'permuted_lower_triangular', 'permuted_upper_triangular', 'positive_definite', 'symmetric', 'tridiagonal', 'upper_triangular'
Epsilon (input_control) real → (real)
Lösungstyp und Grenze zum Setzen der Singulärwerte zu 0.
Default: 0.0
Wertevorschläge: 0.0, 2.2204e-16
MatrixRHSID (input_control) matrix → (handle)
Matrix Handle der Eingabematrix der rechten Seite.
MatrixResultID (output_control) matrix → (handle)
Neues Matrix Handle mit der Lösung.
Sind die Parameterwerte korrekt, dann liefert solve_matrix
den Wert 2 (
H_MSG_TRUE)
. Gegebenenfalls wird eine Fehlerbehandlung
durchgeführt.
get_full_matrix,
get_value_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