MF_nonlinfit_... MD_nonlinfit_... ME_nonlinfit_...
MF_nonlinfitwW_... MD_nonlinfitwW_... ME_nonlinfitwW_...
..._autoDeriv
..._getFOM
..._getBestValues
..._getTestRun
..._getTestPar
..._getTestDir
..._stop
FunktionHilfsfunktionen für MF_nonlinfit und MF_nonlinfitwW
Syntax C/C++#include <MFstd.h>
void MF_nonlinfit_autoDeriv( fMatrix dZdAi, ui htZ, ui lenZ, fVector X, fVector Y, unsigned ipar, fVector A, MF_NONLINFITWORKSPACE *ws );
float MF_nonlinfit_getFOM( MF_NONLINFITWORKSPACE *ws );
void MF_nonlinfit_getBestValues( fVector ABest, MF_NONLINFITWORKSPACE *ws );
unsigned MF_nonlinfit_getTestRun( MF_NONLINFITWORKSPACE *ws );
unsigned MF_nonlinfit_getTestPar( MF_NONLINFITWORKSPACE *ws );
int MF_nonlinfit_getTestDir( MF_NONLINFITWORKSPACE *ws );
void MF_nonlinfit_stop( MF_NONLINFITWORKSPACE *ws );

  (identidsche Syntax für die MF_nonlinfitwW_...-Funktionen)
C++ MatObj#include <OptiVec.h>
void matrix<T>::nonlinfit_getFOM( MF_NONLINFITWORKSPACE *ws );
void vector<T>::Mnonlinfit_getBestValues( MF_NONLINFITWORKSPACE *ws );
unsigned matrix<T>::nonlinfit_getTestPar( MF_NONLINFITWORKSPACE *ws );
unsigned matrix<T>::nonlinfit_getTestRun( MF_NONLINFITWORKSPACE *ws );
void matrix<T>::nonlinfit_stop( MF_NONLINFITWORKSPACE *ws );

  (identische Syntax für die nonlinfitwW_...-Funktionen)
Pascal/Delphiuses MFnlfit;
procedure MF_nonlinfit_autoDeriv( dZdAi:fMatrix; htZ, lenZ:UIntSize; X, Y:fVector; ipar:UInt; A:fVector; ws:PMF_NONLINFITWORKSPACE );
function MF_nonlinfit_getFOM( ws: PMF_NONLINFITWORKSPACE ): Single;
procedure MF_nonlinfit_getBestValues( BestValues: fVector; ws: PMF_NONLINFITWORKSPACE );
function MF_nonlinfit_getTestRun( ws: PMF_NONLINFITWORKSPACE ): UInt;
function MF_nonlinfit_getTestPar( ws: PMF_NONLINFITWORKSPACE ): UInt;
function MF_nonlinfit_getTestDir( ws: PMF_NONLINFITWORKSPACE ): Integer;
procedure MF_nonlinfit_stop( ws: PMF_NONLINFITWORKSPACE );

  (identidsche Syntax für die MF_nonlinfitwW_...-Funktionen)
BeschreibungMF_nonlinfit_autoDeriv differenziert eine benutzerdefinierte Modell-Funktion z=f(x, y) nach deren Parametern aipar. Die Modell-Funktion, die differenziert werden soll, ist diejenige, die in demselben Aufruf an MF_nonlinfit übergeben wurde.

Die folgenden Funktionen gestatten es, den Fortgang nicht-linearer Anpassungs-Operationen zu verfolgen. Sie können entweder aus der benutzerdefinierten Modell-Funktion heraus oder - bei Multithread-Anwendungen - auch aus einem zweiten Thread heraus aufgerufen werden.
MF_nonlinfit_getFOM gibt den besten bislang erzielten Anpassungstest-Wert (c2 oder, für robuste Fits, |c|) zurück. Ruft man diese Funktion auf, bevor MF_nonlinfit die Chance hatte, c2 erstmalig zu berechnen, so wird -1.0 zurückgegeben.

MF_nonlinfit_getBestValues speichert den besten bislang gefundenen Parametersatz A in dem als Argument angeforderten Vektor ABest.

MF_nonlinfit_getTestDir liefert die Test-Richtung (+1 für aufwärts, -1 für abwärts) während "Ausbruchsversuchen" aus eventuellen lokalen Optima, die andernfalls das Erreichen des globalen Optimums verhindern würden (LevelOfMethod > 3 in VF_setNonlinfitOptions spezifiziert).

MF_nonlinfit_getTestPar gibt den Index des gerade bezüglich "Ausbruchs" getesteten Parameters zurück.

MF_nonlinfit_getTestRun liefert den Index des aktuellen "Ausbruchstest"-Durchlaufes. Für jeden angepaßten Parameter wird ein Testdurchlauf durchgeführt. Die Reihenfolge, in der die Parameter geprüft werden, wird intern so festgelegt, dass die sensitivsten Parameter zuerst an die Reihe kommen.

MF_nonlinfit_stop sorgt dafür, dass MF_nonlinfit seinen aktuellen Levenberg-Marquardt- oder Downhill-Simplex-Zyklus beendet, die Ausgabe-Parameter auf den besten Stand bringt und zur aufrufenden Funktion zurückkehrt. Auf diese Weise können überlange Anpassungs-Sitzungen (insbesondere solche mit "Ausbruchs"-Versuchen) ohne Datenverluste abgebrochen werden.

QuerverweisKap. 13

MatrixLib Inhaltsverzeichnis  OptiVec Home