VF_multiNonlinfit_... VD_multiNonlinfit_... VE_multiNonlinfit_...
VF_multiNonlinfitwW_... VD_multiNonlinfitwW_... VE_multiNonlinfitwW_...
..._autoDeriv
..._getFOM
..._getFOMDetail
..._getBestValues
..._getTestRun
..._getTestPar
..._getTestDir
..._stop
FunktionHilfs- und Überwachungs-Funktionen für VF_multiNonlinfit und VF_multiNonlinfitwW
Syntax C/C++#include <MFstd.h>
void VF_multiNonlinfit_autoDeriv( fVector dYdAi, fVector X, ui size, unsigned ipar, unsigned iexperiment, fVector A, VF_NONLINFITWORKSPACE *ws );
float VF_multiNonlinfit_getFOM( VF_NONLINFITWORKSPACE *ws );
void VF_multiNonlinfit_getFOMDetail( fVector FOMDetail, VF_NONLINFITWORKSPACE *ws );
void VF_multiNonlinfit_getBestValues( fVector ABest, VF_NONLINFITWORKSPACE *ws );
int VF_multiNonlinfit_getTestDir( VF_NONLINFITWORKSPACE *ws );
unsigned VF_multiNonlinfit_getTestPar( VF_NONLINFITWORKSPACE *ws );
unsigned VF_multiNonlinfit_getTestRun( VF_NONLINFITWORKSPACE *ws );
void VF_multiNonlinfit_stop( VF_NONLINFITWORKSPACE *ws );

  (identische Syntax für die VF_multiNonlinfitwW_... Funktionen)
Pascal/Delphiuses VFmnlfit;
procedure VF_multiNonlinfit_autoDeriv( dYdAi, X:fVector; size:UIntSize; ipar, iex:UInt; ws:PVF_NONLINFITWORKSPACE );
function VF_multiNonlinfit_getFOM( ws:PVF_NONLINFITWORKSPACE ): Single;
procedure VF_multiNonlinfit_getFOMDetail( FOMDetail:fVector; ws:PVF_NONLINFITWORKSPACE );
procedure VF_multiNonlinfit_getBestValues( BestValues: fVector; ws:PVF_NONLINFITWORKSPACE );
function VF_multiNonlinfit_getTestDir( ws:PVF_NONLINFITWORKSPACE ): Integer;
function VF_multiNonlinfit_getTestPar( ws:PVF_NONLINFITWORKSPACE ): UInt;
function VF_multiNonlinfit_getTestRun( ws:PVF_NONLINFITWORKSPACE ): UInt;
procedure VF_multiNonlinfit_stop( ws:PVF_NONLINFITWORKSPACE );

  (identische Syntax für die VF_multiNonlinfitwW_...-Funktionen)
BeschreibungVF_multiNonlinfit_autoDeriv differenziert eine benutzerdefinierte Modell-Funktion y=f(x) nach deren Parametern aipar. Sämtliche von VF_multiNonlinfit_autoDeriv benötigten Informationen (Modell-Funktion, Puffer-Speicher usw.) werden über den Zeiger auf den in der aktuellen VF_multiNonlinfit-Operation verwendeten VF_NONLINFITWORKSPACE mitgeteilt.

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.
VF_multiNonlinfit_getFOM gibt den besten bislang erzielten Anpassungstest-Wert (c2 oder, für robuste Fits, |c|) zurück. Ruft man diese Funktion auf, bevor VF_multiNonlinfit die Chance hatte, c2 erstmalig zu berechnen, so wird -1.0 zurückgegeben.

VF_multiNonlinfit_getFOMDetail speichert die auf die einzelnen Experimente bezogenen Anpassungstest-Werte (c2iex oder, für robuste Fits, |ciex|) in dem als Argument übernommenen Vektor FOMDetail. Die Summe dieser einzelnen c2iex oder |ciex| -Werte ist das beste bislang erhaltene c2 (oder |c|), wie von VF_multiNonlinfit_getFOM zurückgegeben.

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

VF_multiNonlinfit_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).

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

VF_multiNonlinfit_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.

VF_multiNonlinfit_stop sorgt dafür, dass VF_multiNonlinfit 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 Datenverlust abgebrochen werden.

QuerverweisKap. 13

MatrixLib Inhaltsverzeichnis  OptiVec Home