Syntax C/C++ | #include <MFstd.h>
void MF_SVsolve( fVector X, fMatrix MU, fMatrix MV, fVector W, fVector B, ui htA, ui lenA );
void MF_SVsolvewEdit( fVector X, fMatrix MU, fMatrix MV, fVector W, fVector B, ui htA, ui lenA, float thresh ); |
C++ MatObj | #include <OptiVec.h>
void vector<T>::SVsolve( const matrix<T>& MU, const matrix<T>& MV, const vector<T>& W, const vector<T>& B );
void vector<T>::SVsolvewEdit( const matrix<T>& MU, const matrix<T>& MV, const vector<T>& W, const vector<T>& B, T thresh ); |
Pascal/Delphi | uses MFstd;
procedure MF_SVsolve( X:fVector; MU, MV:fMatrix; W, B:fVector; htA, lenA:UIntSize );
procedure MF_SVsolvewEdit( X:fVector; MU, MV:fMatrix; W, B:fVector; htA, lenA:UIntSize; thresh:Single ); |
|
Beschreibung | MF_SVsolve löst ein lineares Gleichungssystem, das zuvor mittels MF_SVdecompose faktorisiert wurde. Dieser Prozeß wird auch als Singulärwert-Rücksubstitution bezeichnet. In dieser Funktion wird zunächst W in der Weise editiert, dass alle Elemente unter einer gewissen Schwelle gleich 0 gesetzt werden. Bei der anschließenden Rücksubstitution, die Divisionen durch die Elemente of W vornimmt, werden die Ergebnisse aller Divisionen durch Wi = 0 gleich 0 (anstelle von Unendlich) gesetzt und hierdurch die Dimension des zugrundeliegenden Gleichungssystems reduziert. Die voreingestellte Standard-Editierschwelle kann mittels MF_SVDsetEdit geändert werden. Falls man es vorzieht, W selbst zu inspizieren und zu editieren, bevor man MF_SVsolve aufruft, sollte MF_SVDsetEdit mit dem Argument 0.0 aufgerufen werden, um die automatische Dimensions-Reduktion auszuschalten. Da MF_SVDsetEdit nicht fiber-sicher ist, sollte diese Funktion nicht verwendet werden, um verschiedene Schwellenwerte für verschiedene Aufrufe von MF_SVsolve usw. einzustellen. Anstatt wiederholt den Standard-Wert zu ändern, gebrauche man vielmehr die "wEdit"-Varianten von MF_SVsolve usw., also MF_SVsolvewEdit, MF_solveBySVDwEdit und MF_safeSolvewEdit.
Die Parameter htA und lenA beziehen sich auf die ursprüngliche, an MF_SVdecompose übergebene Matrix MA. Die Dimensionen der an MF_SVsolve übergebenen Matrizen und Vektoren ergeben sich wie folgt:
sizeB = htA;
sizeX = htU = max( lenA, htA );
sizeW = lenU = htV = lenV = lenA; |
|