MF_inv MD_inv ME_inv
MCF_inv MCD_inv MCE_inv
FunktionMatrix-Inversion
Syntax C/C++#include <MFstd.h>
int MF_inv( fMatrix MInv, fMatrix MA, ui len );
int MF_invwEdit( fMatrix MInv, fMatrix MA, ui len, float thresh );
int MCF_invwEdit( cfMatrix MInv, cfMatrix MA, ui len, float thresh );
C++ MatObj#include <OptiVec.h>
void matrix<T>::inv( const matrix<T>& MA );
void matrix<T>::invwEdit( const matrix<T>& MA, T thresh );
Pascal/Delphiuses MFstd;
function MF_inv( MInv, MA:fMatrix; len:UIntSize ):Integer;
function MF_invwEdit( MInv, MA:fMatrix; len:UIntSize; thresh:Single ):Integer;
function MCF_invwEdit( MInv, MA:cfMatrix; len:UIntSize; thresh:Single ):Integer;
BeschreibungDie Inverse der Matrix MA wird in MInv gespeichert. Falls MA nicht regulär ist, also nicht invertiert werden kann, erzeugt MF_inv eine Fehlermeldung. Intern wird die Inversion über LU-Faktorisierung mit partieller Pivotisierung durchgeführt.

Um ein Scheitern der Invertierung zu verhindern, kann ein Minimalwert für die Pivotisierung festgelegt werden. Standardmäßig ist diese Pivot-Editierung ausgeschaltet. Um sie für alle Aufrufe von MF_LUdecompose sowie den auf LU-Zerlegung basierenden Funktionen MF_inv und MF_solve einzuschalten, kann MF_LUDsetEdit aufgerufen werden. Da diese Methode nicht fiber-sicher ist, sollte sie aber nicht angewandt werden, um bei verschiedenen Aufrufen von MF_LUdecompose, MF_inv oder MF_solve verschiedene Minimalwerte einzustellen. Zu diesem Zweck dient vielmehr die Funktion MF_invwEdit, die die gewünschte Editier-Schwelle als zusätzliches Argument thresh übernimmt.
Der Rückgabewert von MF_inv und MF_invwEdit zeigt an, ob die Invertierung erfolgreich war:
 
RückgabewertBedeutung
0Matrix MA ist regulär und konnte erfolgreich invertiert werden
1Matrix MA ist singulär; Ergebnis MInv komplett unbrauchbar
2Matrix MA (nahezu) singulär; konnte nur durch Pivot-Editierung invertiert werden; ob das Ergebnis brauchbar ist, hängt von der spezifischen Anwendung ab

Um zu prüfen, ob MF_inv erfolgreich war, kann in Single-Thread-Programmen auch MF_LUDresult aufgerufen werden, deren Rückgabewert FALSE (0) sein wird, wenn MA fehlerfrei und ohne Pivot-Editierung invertiert werden konnte, und TRUE (1) für eine singuläre Eingabe-Matrix MA. Da in Multithread-Programmen ggf. nicht klar ist, auf welche Instanz von MF_inv sich MF_LUDresult bezieht, sollte hier nicht MF_LUDresult aufgerufen, sondern immer nur der Rückgabewert von MF_inv überprüft werden.

RückgabewertEin Code 0, 1 oder 2; siehe oben
QuerverweisKap. 10

MatrixLib Inhaltsverzeichnis  OptiVec Home