WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Unterschiedliche Fitting Ergebnisse mit CurveFitting-Toolbox

 

JoernS
Forum-Anfänger

Forum-Anfänger


Beiträge: 27
Anmeldedatum: 20.05.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 22.07.2015, 15:26     Titel: Unterschiedliche Fitting Ergebnisse mit CurveFitting-Toolbox
  Antworten mit Zitat      
Hallo,

ich habe zwei Formeln, welche ich beide mit der Curvefitting Toolbox optimieren will.

R_n = \frac{a1 + a2*d_n}{I_n^a3}

U_n = (a1 + a2*d_n)*I_n^{1-a3}

aus Messunge habe ich U_n, I_n und d_n.
R_n berechnet sich aus R_n = \frac{U_n}{I_n}, 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 und Gruß Jörn
Private Nachricht senden Benutzer-Profile anzeigen


Andy386
Forum-Guru

Forum-Guru


Beiträge: 485
Anmeldedatum: 24.06.09
Wohnort: ---
Version: 7.1/8
     Beitrag Verfasst am: 29.07.2015, 09:28     Titel:
  Antworten mit Zitat      
So ganz pauschal würde ich sagen: Lass den Optimierer weiter optimieren!
Oder nimm einen anderen Ansatz.

Wenn du konkreteres willst, müsstest du noch mehr Infos geben.
_________________

Ich hasse es wenn die Leute Fragen stellen, man dann versucht sich Mühe zu geben, und diejenigen ihren Thread nie wieder besuchen...
Private Nachricht senden Benutzer-Profile anzeigen
 
JoernS
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 27
Anmeldedatum: 20.05.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 29.07.2015, 11:39     Titel:
  Antworten mit Zitat      
Hallo Andy386,

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?

Gruß Jörn
Private Nachricht senden Benutzer-Profile anzeigen
 
Andy386
Forum-Guru

Forum-Guru


Beiträge: 485
Anmeldedatum: 24.06.09
Wohnort: ---
Version: 7.1/8
     Beitrag Verfasst am: 30.07.2015, 09:14     Titel:
  Antworten mit Zitat      
Code zum Nachvollziehen.
Oder Angaben über die verwendeten Optimierungsmethoden.
_________________

Ich hasse es wenn die Leute Fragen stellen, man dann versucht sich Mühe zu geben, und diejenigen ihren Thread nie wieder besuchen...
Private Nachricht senden Benutzer-Profile anzeigen
 
JoernS
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 27
Anmeldedatum: 20.05.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 03.08.2015, 08:35     Titel:
  Antworten mit Zitat      
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];

options = optimoptions('lsqcurvefit','Algorithm','trust-region-reflective','TolFun',1e-5);

% calculate OS-values
[a,resnorm] = lsqcurvefit(OppenlanderStokes,a0,xdata,ydata,[],[],options)


Die Ergebnisse lauten hierbei:
a =
18.5090
0.4507
0.8431


Code:
%% lsqcurvefit-Funkction: Optimierung nach U
ydata = U_mess;
xdata(:,1) = d_mess;
xdata(:,2) = I_mess;

% function handle
OppenlanderStokes = @(a,xdata)(a(1)+(a(2).*xdata(:,1)))./(xdata(:,2).^(a(3)-1))

% Define Initial point a0 as original OS-values
a0 = [20; 0.5; 0.88];

options = optimoptions('lsqcurvefit','Algorithm','trust-region-reflective','TolFun',1e-6);

% calculate OS-values
[a,resnorm] = lsqcurvefit(OppenlanderStokes,a0,xdata,ydata)


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?

Danke und Gruß Jörn
Private Nachricht senden Benutzer-Profile anzeigen
 
Andy386
Forum-Guru

Forum-Guru


Beiträge: 485
Anmeldedatum: 24.06.09
Wohnort: ---
Version: 7.1/8
     Beitrag Verfasst am: 04.08.2015, 09:52     Titel:
  Antworten mit Zitat      
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...
Private Nachricht senden Benutzer-Profile anzeigen
 
JoernS
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 27
Anmeldedatum: 20.05.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 04.08.2015, 10:20     Titel:
  Antworten mit Zitat      
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]
Private Nachricht senden Benutzer-Profile anzeigen
 
Andy386
Forum-Guru

Forum-Guru


Beiträge: 485
Anmeldedatum: 24.06.09
Wohnort: ---
Version: 7.1/8
     Beitrag Verfasst am: 04.08.2015, 14:17     Titel:
  Antworten mit Zitat      
Andy386 hat Folgendes geschrieben:
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...
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

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
.





 Impressum  | Nutzungsbedingungen  | Datenschutz | FAQ | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2024 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks

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.