Verfasst am: 22.07.2015, 14:26
Titel: Unterschiedliche Fitting Ergebnisse mit CurveFitting-Toolbox
Hallo,
ich habe zwei Formeln, welche ich beide mit der Curvefitting Toolbox optimieren will.
aus Messunge habe ich und .
berechnet sich aus , mit der Selben Formel lassen sich auch die beiden zu optimierenden Formeln ineinander umrechnen!
Wenn ich das Ganze nun optimiere bekomme ich für die Parameter a1 - a3 der ersten Formel andere Werte als für die Paramter a1 - a3 der zweiten Formel. Prinzipiell hätte ich erwartet dass beide Optimierungen auf das selbe Ergebnis kommen. Dem ist aber nicht so.
Spätestens beim Vergleich des Goodness of fit hätte ich erwartet, dass beide Optimierungen sozusagen gleich gut sind, d.h. das "rsquare" und "adjrsquare" aus den beiden gof gleich sind.
Anders ausgedrückt hätte ich erwartet, dass nach der Methode der kleinsten Quadrate beide Optimierungen den Minimumfehler (im gof: sse und rmse) finden.
Setze ich nun aber die nach der zweiten Formel optimierten Parameter in die erste Formel ein, wird der Fehler (bzw. sse und rsme) noch kleiner, also wäre dies eine bessere Optimierung.
Lege ich nun den initial point (starting point) für die erst Optimierung gleich den optimierten Parametern der zweiten Formel so erhalte ich als Ergebnis trotzdem wieder das Ergebnis dass ich auch vorher hatte. Somit würde ich eine falsche Wahl des starting points ausschließen.
Ich bin ratlos was hier das Problem sein könnte. Ich denke vielleicht dass es mir auch helfen würde wenn ich wüste wie genau matlab die Optimierung macht bzw. welche Berechnungen dazu durchgeführt werden.
Kann mir da jemand weiterhelfen oder Tips geben was ich noch versuchen könnte?
danke, ich habe beispielsweise die Standardwerte für "TolFun" schon erhöht, sodass die Optimierung in der Tat etwas länger läuft, jedoch hat das nichts geholfen. Bei den Parametern ändert sich dann so gut wie nichts mehr, nur noch ein paar Nachkommastellen welche mich wirklich nicht mehr interessieren. Und die Paramter unterscheiden sich trotzdem noch vor dem Komma.
Würden sich die Paramter irgendwo hinter dem Komma unterscheiden, wäre das ok, dann würde ich das darauf schieben dass Matlab das Ganze vermutlich numerisch berechnet.
Was meinst du genau mit mehr Infos? Welche Infos benötigst du?
Ich benutze zum einen "lsqcurvefit" aus der Optimization Toolbox und zum Anderen habe ich es auch schon mit der "custom Equation" Funktion aus der Curve-Fitting-Toolbox probiert. (Da beide nach der Methode der kleinsten Quadrate optimieren, ist es auch logisch dass lsqcurvefit und die custom equation die selben ergebnisse liefern).
In sofern reicht es wenn wir hier nur über lsqcurvefit reden.
Code:
%% lsqcurvefit-Funkction: Optimierung nach R
ydata = R_mess;
xdata(:,1) = d_mess;
xdata(:,2) = I_mess;
% function handle
OppenlanderStokes = @(a,xdata)(a(1)+(a(2).*xdata(:,1)))./(xdata(:,2).^a(3))
% Define Initial point a0 as original OS-values
a0 = [20; 0.5; 0.88];
Die Ergebnisse lauten hierbei:
a =
16.0824
0.3147
0.8092
Wie gesagt, U_mess und R_mess kann man genauso wie die Oppenlander-Stokes Formel mit dem selben Gesetz in einander umrechnen.
Warum kommen dabei nicht die Selben Ergebnisse für a heraus?
Wenn deine Formeln stimmen (ich vermisse irgendwie U/I), liegts an unterschiedlichen Startwerten. Sind ja die selben Zahlen für verschiedene physikalische Größen.
_________________
Ich hasse es wenn die Leute Fragen stellen, man dann versucht sich Mühe zu geben, und diejenigen ihren Thread nie wieder besuchen...
I ist im code xdata(:,2).
U und R sind hier mit OppenlanderStokes bezeichnet, wobei man entweder anhand der Beschriftung oder anhand der Formeln (Exponent am Ende der Formel) erkennen kann was die Formel für U bzw. für R ist.
Aber die Startwerte sind doch bei beiden die selben, nämlich: [20; 0,5; 0,88]
Sind ja die selben Zahlen für verschiedene physikalische Größen.
Sorry aber aussagekräftige Variablennamen wären echt hilfreich.
_________________
Ich hasse es wenn die Leute Fragen stellen, man dann versucht sich Mühe zu geben, und diejenigen ihren Thread nie wieder besuchen...
Einstellungen und Berechtigungen
Du kannst Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen. Du kannst Dateien in diesem Forum posten Du kannst Dateien in diesem Forum herunterladen
MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.