invert_matrix_modT_invert_matrix_modInvertMatrixModInvertMatrixMod (Operator)

Name

invert_matrix_modT_invert_matrix_modInvertMatrixModInvertMatrixMod — Invertiert eine Matrix.

Signatur

invert_matrix_mod( : : MatrixID, MatrixType, Epsilon : )

Herror T_invert_matrix_mod(const Htuple MatrixID, const Htuple MatrixType, const Htuple Epsilon)

void InvertMatrixMod(const HTuple& MatrixID, const HTuple& MatrixType, const HTuple& Epsilon)

void HMatrix::InvertMatrixMod(const HString& MatrixType, double Epsilon) const

void HMatrix::InvertMatrixMod(const char* MatrixType, double Epsilon) const

void HMatrix::InvertMatrixMod(const wchar_t* MatrixType, double Epsilon) const   (Nur Windows)

static void HOperatorSet.InvertMatrixMod(HTuple matrixID, HTuple matrixType, HTuple epsilon)

void HMatrix.InvertMatrixMod(string matrixType, double epsilon)

Beschreibung

Der Operator invert_matrix_modinvert_matrix_modInvertMatrixModInvertMatrixModInvertMatrixMod berechnet die Inverse der Matrix MatrixMatrixMatrixMatrixmatrix. Die Eingabematrix wird mit dem Ergebnis überschrieben. Zugriff auf die Elemente der Matrix ist z.B. mit dem Operator get_full_matrixget_full_matrixGetFullMatrixGetFullMatrixGetFullMatrix möglich.

Die Inverse wird berechnet, wenn EpsilonEpsilonEpsilonEpsilonepsilon = 0 ist. Der Matrixtyp wird über MatrixTypeMatrixTypeMatrixTypeMatrixTypematrixType gewählt. Zur Verfügung stehen 'general'"general""general""general""general" für allgemeine, 'symmetric'"symmetric""symmetric""symmetric""symmetric" für symmetrische, 'positive_definite'"positive_definite""positive_definite""positive_definite""positive_definite" für symmetrisch positiv definite, 'tridiagonal'"tridiagonal""tridiagonal""tridiagonal""tridiagonal" für tridiagonale Matrizen, '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" für permutierte obere, '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" für permutierte untere Dreiecksmatrizen.

Die Pseudoinverse wird berechnet, wenn EpsilonEpsilonEpsilonEpsilonepsilon > 0 gesetzt ist. Alle Singulärwerte, die während der Berechnung entstehen und kleiner als EpsilonEpsilonEpsilonEpsilonepsilon * 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 MatrixTypeMatrixTypeMatrixTypeMatrixTypematrixType = 'general'"general""general""general""general" gesetzt werden.

Bemerkung: Die relative Genauigkeit der Gleitkommarepräsentation des genutzten Datentyps (double) ist EpsilonEpsilonEpsilonEpsilonepsilon = 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.

Achtung

Wird MatrixTypeMatrixTypeMatrixTypeMatrixTypematrixType = 'symmetric'"symmetric""symmetric""symmetric""symmetric", 'positive_definite'"positive_definite""positive_definite""positive_definite""positive_definite" oder 'upper_triangular'"upper_triangular""upper_triangular""upper_triangular""upper_triangular" gewählt, so muss der obere Dreiecksteil der Eingabematrix MatrixMatrixMatrixMatrixmatrix die relevante Information der Matrix beinhalten. Der exakt untere Teil der Matrix wird nicht verwendet. Wird MatrixTypeMatrixTypeMatrixTypeMatrixTypematrixType = 'lower_triangular'"lower_triangular""lower_triangular""lower_triangular""lower_triangular" gewählt, so muss der untere Dreiecksteil der Eingabematrix MatrixMatrixMatrixMatrixmatrix die relevante Information der Matrix beinhalten. Der exakt obere Teil der Matrix wird nicht verwendet. Wird MatrixTypeMatrixTypeMatrixTypeMatrixTypematrixType = 'tridiagonal'"tridiagonal""tridiagonal""tridiagonal""tridiagonal" gesetzt, wird nur die Hauptdiagonale und die beiden Nebendiagonalen der Eingabematrix MatrixMatrixMatrixMatrixmatrix genutzt. Die anderen Teile der Matrix werden nicht verwendet. Wenn der verwendete Teil der Eingabematrix MatrixMatrixMatrixMatrixmatrix nicht vom spezifizierten Typ ist, wird eine Fehlerbehandlung durchgeführt.

invert_matrix_modinvert_matrix_modInvertMatrixModInvertMatrixModInvertMatrixMod verändert den Inhalt einer bereits bestehenden Matrix.

Ausführungsinformationen

Dieser Operator modifiziert den Zustand des folgenden Eingabeparameters:

Während der Ausführung dieses Operators muss der Zugriff auf den Wert dieses Parameters synchronisiert werden, wenn er über mehrere Threads hinweg verwendet wird.

Parameter

MatrixIDMatrixIDMatrixIDMatrixIDmatrixID (input_control, Zustand wird modifiziert)  matrix HMatrix, HTupleHTupleHtuple (handle) (IntPtr) (HHandle) (handle)

Matrix Handle der Eingabematrix.

MatrixTypeMatrixTypeMatrixTypeMatrixTypematrixType (input_control)  string HTupleHTupleHtuple (string) (string) (HString) (char*)

Der Matrixtyp der Eingabematrix.

Defaultwert: 'general' "general" "general" "general" "general"

Werteliste: 'general'"general""general""general""general", 'lower_triangular'"lower_triangular""lower_triangular""lower_triangular""lower_triangular", 'permuted_lower_triangular'"permuted_lower_triangular""permuted_lower_triangular""permuted_lower_triangular""permuted_lower_triangular", 'permuted_upper_triangular'"permuted_upper_triangular""permuted_upper_triangular""permuted_upper_triangular""permuted_upper_triangular", 'positive_definite'"positive_definite""positive_definite""positive_definite""positive_definite", 'symmetric'"symmetric""symmetric""symmetric""symmetric", 'tridiagonal'"tridiagonal""tridiagonal""tridiagonal""tridiagonal", 'upper_triangular'"upper_triangular""upper_triangular""upper_triangular""upper_triangular"

EpsilonEpsilonEpsilonEpsilonepsilon (input_control)  real HTupleHTupleHtuple (real) (double) (double) (double)

Inversiontype.

Defaultwert: 0.0

Wertevorschläge: 0.0, 2.2204e-16

Ergebnis

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

Vorgänger

create_matrixcreate_matrixCreateMatrixCreateMatrixCreateMatrix

Nachfolger

get_full_matrixget_full_matrixGetFullMatrixGetFullMatrixGetFullMatrix, get_value_matrixget_value_matrixGetValueMatrixGetValueMatrixGetValueMatrix

Alternativen

invert_matrixinvert_matrixInvertMatrixInvertMatrixInvertMatrix

Siehe auch

transpose_matrixtranspose_matrixTransposeMatrixTransposeMatrixTransposeMatrix, transpose_matrix_modtranspose_matrix_modTransposeMatrixModTransposeMatrixModTransposeMatrixMod

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