Verfasst am: 20.04.2011, 15:56
Titel: Parameteridentifikation mit lsqcurvefit
Hallo,
ich soll die Parameter einer Gleichung bestimmen, die einen Relaxationsvorgang in einem Werkstoff beschreibt. Nachdem ich jetzt den ganzen Tag versucht habe, mich mit der Matlab Hilfe durchzukämpfen und ich zu keinem sinnvollen Ergebnis gekommen bin, hoffe ich, dass mir hier jemand helfen kann.
Ich habe mir zunächst ein m-File geschrieben, das die Funktion beschreibt:
Code:
function F=myfun(x,tdata)
F=x(1)+x(2).*log(tdata);
F=(125^(1-x(1))+(x(1)-1)*x(2)*70000.*tdata).^(1/(1-x(1)));
Nachfolgend das Skript, in dem ich versucht habe, die gesuchten Parameter x(1) und x(2) der Funktion mit lsqcurvefit herauszufinden. Mein Problem ist, dass ich bei den Startwerten keine richtige Ahnung habe, ob diese in einem plausiblen Bereich liegen.
Das Programm gibt mir mit diesen Eingaben zwar eine Regressionskurve aus, allerdings ist diese nicht plausibel und kommt der echten Kurve nicht im Geringsten nahe. Habe ich eine Chance, ohne genauere Startwerte eine plausible Lösung zu bekommen? Oder muss ich zu einer anderen Methode greifen, um das Problem zu lösen? Wenn ich den ersten Startwert in der Klammer von x0 um Faktor 10 erhöhe, kann Matlab überhaupt nicht mehr rechnen und bringt folgende Fehlermeldung.
Das Programm gibt mir mit diesen Eingaben zwar eine Regressionskurve aus, allerdings ist diese nicht plausibel und kommt der echten Kurve nicht im Geringsten nahe. Habe ich eine Chance, ohne genauere Startwerte eine plausible Lösung zu bekommen?
kommt auf deine Fitfunktion und deine Daten an. Bist du dir sicher das man mit der Funktion die Daten beschreiben kann? In myfun stehen ja schon zwei Funktionen. Welche ist denn die richtige? Vielleicht kannst du ja mal ein Bild mit Daten + Fit posten.
Vl noch eine Frage zu deinem Problem. Willst du IDENTIFIZIEREN oder OPTIMIEREN? Das ist ein mMn ein grundlegender Unterschied und soweit mein Kentnissstand reicht kann Matlab "nur" optimieren.
Zu den Anfangswerten würde ich sagen, dass du auf jedenfall sinnvolle Grenzen eingeben musst um ein plausibles Ergebniss zu bekommen. Haben die Parameter x1 und x2 einen physikalischen Hintergrund (ist stark zu vermuten wenn du Materialien beschreiben willst)?
Danke erstmal für die Antworten. Das in der function ist natürlich Schwachsinn. Habe ich leider übersehen. Es zählt die zweite Funktion, also F=(125...
Und ja, die Parameter x(1) und x(2) haben einen physikalischen Hintergrund. Ich bekomme es mit der curvefitting toolbox schon hin, die Funktion sehr schön anzunähern, allerdings hilft es mir nichts, die Funktion mit einer Fourier-Reihe anzunähern (das Ergebnis wäre hier sehr gut), da dies nicht physikalisch begründbar ist. Außerdem kann ich so die Parameter schlecht ermitteln.
@Thomas84: Die Gleichung ist so aus der Literatur entnommen, demnach müsste sich die Funktion schon so beschreiben lassen.
Mein Ziel ist es, die unbekannten Parameter herauszubekommen. Dazu soll die Funktion bestmöglich angenähert werden. Was ist denn der Unterschied zwischen Identifizierung und Optimierung? Ich bin zu wenig mathematisch bewandert, um diese Frage zu klären. Meiner Meinung nach soll die Funktion optimiert werden. Die optimierten Parameter sollen dann mein Ergebnis sein.
Anbei noch ein Plot der Funktion, von der ich die Parameter bestimmen soll. Einen Fit bekomme ich momentan gar nicht mehr hin..
geht die Formel evtl davon aus, dass bei t=0 angefangen wird? Ich würde von tdata mal sicherheitshalber tdata(1) abziehen, außer diese 2600 ist logisch begründbar.
Um die Anfangsparameter zu schätzen, würde ich versuchen, dieses Gleichungssystem nach x(1) und x(2) zu lösen:
Ausgehend davon sollten sich die Parameter besser optimieren lassen.
Grüße,
Harald
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.