Für lineare Gleichungssysteme werden die Gleichungen
MatrixLHSMatrixLHSMatrixLHSMatrixLHSmatrixLHSmatrix_lhs * MatrixResultMatrixResultMatrixResultMatrixResultmatrixResultmatrix_result = MatrixRHSMatrixRHSMatrixRHSMatrixRHSmatrixRHSmatrix_rhs
gelöst. Hierfür muss die Matrix MatrixLHSMatrixLHSMatrixLHSMatrixLHSmatrixLHSmatrix_lhs quadratisch und
der Parameter EpsilonEpsilonEpsilonEpsilonepsilonepsilon 0 sein. Der Matrixtyp der
Matrix MatrixLHSMatrixLHSMatrixLHSMatrixLHSmatrixLHSmatrix_lhs kann über den Parameter
MatrixLHSTypeMatrixLHSTypeMatrixLHSTypeMatrixLHSTypematrixLHSTypematrix_lhstype 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, 'upper_triangular'"upper_triangular""upper_triangular""upper_triangular""upper_triangular""upper_triangular" für obere,
'permuted_upper_triangular'"permuted_upper_triangular""permuted_upper_triangular""permuted_upper_triangular""permuted_upper_triangular""permuted_upper_triangular" für permutierte obere,
'lower_triangular'"lower_triangular""lower_triangular""lower_triangular""lower_triangular""lower_triangular" für untere und
'permuted_lower_triangular'"permuted_lower_triangular""permuted_lower_triangular""permuted_lower_triangular""permuted_lower_triangular""permuted_lower_triangular" für permutierte untere
Dreiecksmatrizen.
Für ein lineares Kleinste-Quadrate Problem oder die Wahl
EpsilonEpsilonEpsilonEpsilonepsilonepsilon ungleich 0 muss die Matrix MatrixLHSMatrixLHSMatrixLHSMatrixLHSmatrixLHSmatrix_lhs
nicht quadratisch sein. Die Kleinste-Quadrate Lösung wird mittels
einer Singulärwertzerlegung der Matrix MatrixLHSMatrixLHSMatrixLHSMatrixLHSmatrixLHSmatrix_lhs durch
Minimieren von
||MatrixRHSMatrixRHSMatrixRHSMatrixRHSmatrixRHSmatrix_rhs - MatrixLHSMatrixLHSMatrixLHSMatrixLHSmatrixLHSmatrix_lhs * MatrixResultMatrixResultMatrixResultMatrixResultmatrixResultmatrix_result||
berechnet. Alle Singulärwerte, die kleiner als EpsilonEpsilonEpsilonEpsilonepsilonepsilon
* 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
MatrixLHSMatrixLHSMatrixLHSMatrixLHSmatrixLHSmatrix_lhs in diesem Fall einen Rangdefekt aufweisen. Als
Matrixtyp muss MatrixLHSTypeMatrixLHSTypeMatrixLHSTypeMatrixLHSTypematrixLHSTypematrix_lhstype = 'general'"general""general""general""general""general" gewählt
werden.
Wird MatrixLHSTypeMatrixLHSTypeMatrixLHSTypeMatrixLHSTypematrixLHSTypematrix_lhstype = 'symmetric'"symmetric""symmetric""symmetric""symmetric""symmetric",
'positive_definite'"positive_definite""positive_definite""positive_definite""positive_definite""positive_definite" oder 'upper_triangular'"upper_triangular""upper_triangular""upper_triangular""upper_triangular""upper_triangular"
gewählt, so muss der obere Dreiecksteil der Eingabematrix
MatrixLHSMatrixLHSMatrixLHSMatrixLHSmatrixLHSmatrix_lhs die relevante Information der Matrix beinhalten.
Der exakt untere Teil der Matrix wird nicht verwendet. Wird
MatrixLHSTypeMatrixLHSTypeMatrixLHSTypeMatrixLHSTypematrixLHSTypematrix_lhstype = 'lower_triangular'"lower_triangular""lower_triangular""lower_triangular""lower_triangular""lower_triangular" gewählt, so muss
der untere Dreiecksteil der Eingabematrix MatrixLHSMatrixLHSMatrixLHSMatrixLHSmatrixLHSmatrix_lhs die
relevante Information der Matrix beinhalten. Der exakt obere
Teil der Matrix wird nicht verwendet. Wird MatrixLHSTypeMatrixLHSTypeMatrixLHSTypeMatrixLHSTypematrixLHSTypematrix_lhstype =
'tridiagonal'"tridiagonal""tridiagonal""tridiagonal""tridiagonal""tridiagonal" gesetzt, wird nur die Hauptdiagonale und
die beiden Nebendiagonalen der Eingabematrix MatrixLHSMatrixLHSMatrixLHSMatrixLHSmatrixLHSmatrix_lhs
genutzt. Die anderen Teile der Matrix werden nicht verwendet.
Wenn der verwendete Teil der Eingabematrix MatrixLHSMatrixLHSMatrixLHSMatrixLHSmatrixLHSmatrix_lhs nicht
vom spezifizierten Typ ist, wird eine Fehlerbehandlung
durchgeführt.
Ausführungsinformationen
Multithreading-Typ: reentrant (läuft parallel zu nicht-exklusiven Operatoren).
Multithreading-Bereich: global (kann von jedem Thread aufgerufen werden).
Sind die Parameterwerte korrekt, dann liefert solve_matrixsolve_matrixSolveMatrixSolveMatrixSolveMatrixsolve_matrix
den Wert TRUE. Gegebenenfalls wird eine Fehlerbehandlung
durchgeführt.
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.