MF_safeSolve MD_safeSolve ME_safeSolve
Funktion"sicheres" Lösen eines linearen Gleichungs-Systems MA * X = B; im Falle singulärer Systeme wird eine einzige Lösung aus dem unendlichen Lösungsraum ausgewählt
Syntax C/C++#include <MFstd.h>
int MF_safeSolve( fVector X, fMatrix MA, fVector B, ui len );
C++ MatObj#include <OptiVec.h>
void vector<T>::safeSolve( const matrix<T>& MA, const vector<T>& B );
Pascal/Delphiuses MFstd;
function MF_safeSolve( X:fVector; MA:fMatrix; B:fVector; len:UIntSize ):Integer;
BeschreibungMF_safeSolve ist ähnlich MF_solve mit dem Unterschied, daß, falls es keine eindeutige Lösung des linearen Gleichungssystems gibt (also die LU-Faktorisierung fehlschlägt), mittels Singulärwert-Zerlegung (SVD) wenigstens eine Lösung aus dem unendlichen Lösungsraum gefunden wird. Man beachte, daß das Problem singulärer linearer Gleichungssysteme nicht etwa ist, daß es keine Lösung gäbe, sondern daß diese Systeme im Gegenteil unter-determiniert sind und eine unendliche Zahl von Lösungen besitzen. Mit anderen Worten, es können ein oder mehrere Elemente des Lösungsvektors willkürlich gewählt werden. Genau dies tut MF_safeSolve, und zwar in der Weise, daß der Lösungsvektor mit der kleinsten Euclid-schen Norm (s. VF_Euclid) bestimmt wird.

Ein Rückgabewert von 0 zeigt an, daß eine eindeutige Lösung gefunden wurde (d.h. Erfolg über LUD); 1 zeigt eine Lösung über SVD, und -1 wird in dem sehr seltenen Fall zurückgegeben, daß auch SVD fehlschlägt.

QuerverweisMF_solve,   Kap. 10

MatrixLib Inhaltsverzeichnis  OptiVec Home