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

ein weiteres lsqcurvefit-Problem

 

unicat
Forum-Newbie

Forum-Newbie


Beiträge: 1
Anmeldedatum: 19.06.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 19.06.2014, 16:27     Titel: ein weiteres lsqcurvefit-Problem
  Antworten mit Zitat      
Hallo zusammen,

ich bin nur sporadischer Matlab Nutzer und habe ein Problem, eine Funktion in Matlab mittels lsqcurfefit anzupassen.
Bei einem einfachen Beispiel aus der Hilfe hat der Funktionsaufruf bereits funktioniert. Bei meiner komplizierten Funktion mit Integral (über trapz) und exp bekomme ich eine Fehlermeldung, die ich nicht verstehe.

"Error using snls (line 180)
Finite difference Jacobian at initial point contains
Inf or NaN values. lsqcurvefit cannot continue."

Meine Messdaten habe ich mit xdata und ydata bezeichnet. F ist die mit Hilfe von xdata berechnete Funktion die ich an ydata anpassen möchte und x sind die zu optimierende Parameter.

Code:
par.NA    = 6.022e23;                                       % 1/mol
par.kB    = 1.381e-23;                                      % J/K
ydata = [-188.2 -100.9 -40.7 -14.7 8.3];                    % B /cm^3/mol from experiment
xdata = [145 200 300 400 600];                              % T /K from experiment
n     = 100;                                                % number of points
rmin  = 1.5e-10;  
rmax  = 1.5e-9;
par.r=  linspace(rmin,rmax,n-1);
[x,resnorm] = lsqcurvefit(@myfun,x0,xdata,ydata);

 


Die Funktion sieht folgendermaßen aus:
Code:

function F=myfun(x,xdata)

global par

par.phi  =  4*x(1) .*((x(2)./par.r).^12 - (x(2)./par.r).^6);       %LJ-Pot

for i=1:5
F(i) = 2*pi*par.NA*trapz(par.r,(1-exp(-par.phi./(par.kB*xdata(i)))).*par.r.^2)*1e6;
end
 


An utopischen Startwerten kann es eigentlich nicht liegen.
Hier F mit den Startwerten berechnet (F0) im Vergleich zu den experimentellen Daten:
Code:

F0 =  -184.0244 -104.1768  -44.6141  -18.3268    5.3856
ydata =  -188.2000 -100.9000  -40.7000  -14.7000    8.3000
 


Da ich mich nicht mit der Numerik auskenne, die hinter dem Optimierungsalgorithmus der kleinsten Fehlerquadrate steckt, hoffe ich, dass mir jemand aus dem Forum einen Tipp geben oder bei der Fehlersuche helfen kann.

Danke für alle Antworten!
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 - 2025 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.