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

fminsearch

 

monchhichi
Forum-Newbie

Forum-Newbie


Beiträge: 3
Anmeldedatum: 06.12.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 06.12.2008, 14:11     Titel: fminsearch
  Antworten mit Zitat      
Huhu ich hab ein riesen Problem,
meine Aufgabe ist es gefundene Startparameter mithilfe der Funktion fminsearch zu optimieren.
Dazu habe ich 2 DGL´s, die ich dann mit diesen Parametern laufen lassen soll.
Wie fminsearch grundlegend funktioniert ist mir ja klar, aber für mein Problem kann ich das irgenwie nicht anwenden...
Sad
ich hab im i.net folgendes gefunden:
"function myfun
T_mess = []; % hier müssen deine Messwerte rein
t_mess = []; % hier die Zeitpunkte deiner Messungen

p0 = [A0 B0 C0 TU0]; % hier die entsprechenden Startwerte für die Parameter eingeben;

p = fminsearch(@lsg,p0);

function fehler = lsg(p0)

T0 = ; % hier den Ausgangspunkt von T eingeben (Anfangsbedingung)

[T_sim,t_sim] = ode15(@dgl,t_mess,T0,[],p);

fehler = sum(sum(T_mess-T_sim).^2); % Berechnen der Fehlerquadratsumme
end

function dT_TUdt = dgl(t,x,p)

T = x;
dTdt = -p(1)*(T^4-p(4)^4)-p(2)*(T-p(4))-p(3)+p(4);
dT_TUdt = dTdt-p(4);

end
"
da ich aber 2 DGl´s hab funktioniert das irgendwie auch nicht....
Hoffendlich kann mir wer helfen.
Schönen Nikolaus euch allen!
Private Nachricht senden Benutzer-Profile anzeigen


samsa10
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 50
Anmeldedatum: 10.12.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 12.12.2008, 19:35     Titel:
  Antworten mit Zitat      
Hallo,

Ich verstehe leider nicht worum es geht - (was soll minimiert werden, die Differentialgleichung wirst du ja lösen...oder), vielleicht kenne ich mich da auch zu wenig aus.
Aber falls es helfen sollte, mit dem Befehl
Code:
kann man auch Differentialgleichungs-systeme lösen.

Grüße
Private Nachricht senden Benutzer-Profile anzeigen
 
David
Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 24.03.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 12.06.2009, 12:53     Titel:
  Antworten mit Zitat      
Hallo, ich habe ein ähnliches Problem und komme mit dem fminsearch nicht so ganz klar.
Ich habe folgendes einfaches System von Differentialgleichungen im M-file:
Code:

function dy = rigid(t,y)
dy = zeros(2,1);
dy(1)=1/1.5*18*P*(y(2) - y(1));
dy(2)=1/3.5*18*P*(y(1) - y(2));
 


Hier gefällt ihm schon das 'P' nicht - wie definiere ich das denn?
Außerdem habe ich meine Datensätze:
Code:

t=[0 5 10 20 30 41 50 60 70 90]';
y(1)=[7.6376 7.098 6.7067 5.881 5.5344 4.9612 4.7144 4.3017 4.087 3.5559]';
y(2)=[0.92282 0.98507 1.1025 1.2763 1.4473 1.5931 1.6905 1.7807 1.826 2.002]';
 


Wenn ich mir ein 'P' ausdenke kann ich alles plotten und natürlich könnte ich jetzt versuchen das 'P' so anzugleichen, bis ich zufrieden bin. Ganz große Idee...

Wie wende ich hier die Idee mit dem fminsearch an??? Das ist mir leider völlig schleierhaft.
Ich wäre sehr dankbar,wenn mir jemand helfen könnte. Leider konnte ich auch mit den 'Hilfen' von Matlab wenig anfangen.

Gruß
David
Private Nachricht senden Benutzer-Profile anzeigen
 
David
Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 24.03.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 16.06.2009, 14:26     Titel:
  Antworten mit Zitat      
So, ich bin jetzt schon relativ weit glaube ich gekommen, aber an einer Stelle hapert es noch.
Zunächst mal habe ich meine Datensätze:
Code:
t=[0 5 10 20 30 41 50 60 70 90]';
yGin=[7.6376 7.098 6.7067 5.881 5.5344 4.9612 4.7144 4.3017 4.087 3.5559]';
yGout=[0.92282 0.98507 1.1025 1.2763 1.4473 1.5931 1.6905 1.7807 1.826 2.002]';

Dann habe ich die dgl als m-file:
Code:
function dy = rigid(t,y,p)
dy = zeros(2,1);
dy(1)=1/1.5*18*p*(y(2) - y(1));
dy(2)=1/3.5*18*p*(y(1) - y(2));

Die kann ich z.B. so lösen:
Code:
y_0=[8 1];
p=[0.001];
[t,y] = ode45(@rigid,[0 90],y_0,[],p)

Jetzt möchte ich die Anpassung der Werte an meine Messwerte machen und habe dazu folgendes m-file geschrieben:
Code:
function obj = odefitfundd(t,y,a)
p=a(1);
y_0=[a(2) a(3)];
[TOUT,YOUT] = ode45(@rigid,[0 90],y_0,[],p);
obj = sum(sum(y(???)-YOUT).^2);

Dann könnte ich es "optimieren" durch
Code:
fminsearch(@(a) odefitfundd(t,y,a),[0.0014 7.9 0.7])
ans =
    0.0013    8.6466    0.7229

Das ist aber doch sicher Unfug, weil ich "y-YOUT" optimiere, ich müsste aber irgendwie ([yGin yGout]-YOUT) optimieren. Das will er aber nicht. Wie kann ich Matlab das denn verständlich machen - kann mir da jemand helfen? Das wäre super!

Gruß
David
Private Nachricht senden Benutzer-Profile anzeigen
 
Lucia
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 55
Anmeldedatum: 19.03.09
Wohnort: ---
Version: R2008b
     Beitrag Verfasst am: 16.06.2009, 14:53     Titel:
  Antworten mit Zitat      
Hallo David, damit YOUT und [yGin,yGout] so verglichen werden können, sollten TOUT und t übereinstimmen, also so:
Code:
function obj = odefitfundd(t,y,a)
p=a(1);
y_0=[a(2) a(3)];
[TOUT,YOUT] = ode45(@rigid,t,y_0,[],p);
obj = sum(sum(y-YOUT).^2);

Dann kann man mit
Code:
y=[yGin yGout]
fminsearch verwenden wie von dir beschrieben. Viele Grüße! Lucia
Private Nachricht senden Benutzer-Profile anzeigen
 
David
Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 24.03.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 16.06.2009, 15:24     Titel:
  Antworten mit Zitat      
Ja, das war alles!!!
Super - vielen Dank!
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.