DMUG-Archiv 2007

Frühere   Chronologischer Index   Spätere
Vorherige   Thematischer Index   Nächste

Re: Seltsames Verhalten von NonlinearRegress/FindFit

Hallo,

eingangs ein Tipp: Ich würde nieeeeeeeeee e als Variable nehmen, da man nie weiß, ob Mathematica iregendwann meint, es sei die Eulerzahl.

\[ExponentialE]^(-12.5 (-0.5+a)^2)

und

\[ExponentialE]^(-12.5 (-0.5+e)^2)

sind halt verdammt ähnlich.

Fast jede Lösungsalgorithmus eines Optimierungsproblem (hier das Minimum der Summe der Fehlerquadrate zu finden) lässt sich durch ein Gegenbeispiel aus dem Tritt bringen. So hier auch. Woher soll der Algorithmus wissen, dass ausgerechnet für donorpos das Optimum bei 10^-17 liegt, also bei fast Null, bei den anderen drei Parameter bei -100 und +150 oder +80.

Ein Gradient muss irgendwie dahinführen, oder man wählt ein anderes Verfahren, aber das wählt man ja weil der Mensch weiß dass Gradientenverfahren hier nicht weiterhelfen. Die Gradienten sind in diem Beispiel meist Null oder sehr sehr klein.

Es gibt eben kein superoptimales Suchverfahren, das immer funktioniert. Also muss man dem Verfahren durch gute Startwerte auf die Sprünge helfen: Warum auch nicht?

Die letzte Frage versteh ich nicht.

Peter Klamser

Frank Küster schrieb:
Hallo,

FindFit findet im unten angehängten Beispiel ein mir absolut nicht
erklärliches lokales Minimum, wenn man keine Startwerte in der Nähe des
korrekten Minimums angibt.  Es ist in der Praxis kein Problem, vor jedem
Fit halbautomatisiert einen Schätzwert zu gewinnen, aber ich wüsste doch
gerne, wie es dazu kommt.
Die Funktion ist übrigens eine "aus dem wirklichen Leben", ich habe
nicht versucht ob das Problem auch mit einfacheren, etwa
nicht-abschnittsweise definierten auch auftritt.  Bitte stört euch nicht
am Namen "Lognormal", er hat nichts mit einer Log-Normalverteilung zu
tun, hat sich aber so in gewissen Kreisen (Chromatographie/
Spektroskopie) etabliert).

Außerdem hätte ich dann noch eine Frage:

Wenn eine Funktion abschnittsweise definiert ist
(LogNormalLeftTail[a_]:=...) und man den Ausdruck LogNormalLeftTail[x]
ausgeben lässt, wird immer nur ein Fall ausgegeben, aber mit Klammer
davor und der Bedingung hintendran.  Kann man das verändern - entweder
soll alles ausgegeben werden, oder nur der erste Term ohne Klammer und
Bedingung.

Danke im Voraus, Frank

------------------------------------------------------------------------



Antworten:
Verweise:
Frühere   Chronologischer Index   Spätere
Vorherige   Thematischer Index   Nächste

DMUG DMUG-Archiv, http://www.mathematica.ch/archiv.html