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

ode45 und fminsearch

 

stiffi
Forum-Anfänger

Forum-Anfänger


Beiträge: 41
Anmeldedatum: 13.07.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 13.07.2011, 16:30     Titel: ode45 und fminsearch
  Antworten mit Zitat      
Hallo zusammen,

ich bin sowohl ein MATLAB- als auch ein Forumneuling.
In meiner Masterarbeit muss ich ein Differenzialgleichungssystem entwickeln und lösen, was ja mit den ode-Solvern kein Problem darstellt.

Da das entwickelte Modell einige Konstanten enthält, sollen diese mit Hilfe eines Verfahrens zur nichtlinearen Regression (fminsearch) an Messdaten angeglichen werden.

Nun meine prinzipielle Frage:
Wieviele m.-files benötige ich hierzu?
Zur Lösung der Differenzialgleichungen benötigte ich bisher 2.
Muss ich ein zusätzliches m.file hinzufügen, um fminsearch ausführen zu können?

Hat jemand evtl. ein einfaches Programmierbeispiel für die Verwendung von fminsearch zusammen mit einem ode-Solver?

Ich bedanke mich für Eure Hilfe (,auf die ich dringend angewiesen bin Embarassed ).

viele Grüße
Stiffi
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.492
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 13.07.2011, 18:10     Titel:
  Antworten mit Zitat      
Hallo,

z.B. hier
http://www.gomatlab.de/konstantenbe.....hlight,ode45+fmincon.html

fmincon (Optimization Toolbox) liefert typischerweise schneller/bessere Ergebnisse als fminsearch.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
stiffi
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 41
Anmeldedatum: 13.07.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 13.07.2011, 21:23     Titel:
  Antworten mit Zitat      
Hi,

toll, dass du mir so schnell behilflich sein konntest. ich schau mir deinen vorschlag an und hoffe, dass ich das umsetzen kann Confused

Die optimization toolbox bekomme ich auch demnächst.
Die enthält auch die Funktion lsqnonlin, die in Publikationen meistens für diesen Zweck verwendet wird.
Weiß zufällig jemand, was der Vorteil von lsqnonlin ist, oder hat Erfahrungen damit?

Danke nochmal an Harald und alle anderen hilfsbereiten MATLABsachkundigen.

Gruß Stiffi
Private Nachricht senden Benutzer-Profile anzeigen
 
Bijick
Ehrenmitglied

Ehrenmitglied



Beiträge: 914
Anmeldedatum: 18.06.07
Wohnort: Nürnberg
Version: R2006b, R2008b
     Beitrag Verfasst am: 14.07.2011, 06:39     Titel:
  Antworten mit Zitat      
Hallo Stiffi,

1. die Anzahl der m-files ist sehr variabel, je nach deinem Programmierstil. Ich packe gern alles in eine Datei und arbeite insbesondere bei einer Optimierung nur noch mit "nested functions". Dazu findest Du auch hier im Forum einiges. Wenn Du lieber mit vielen m-files arbeitest, kannst Du Dein Programm natürlich auf beliebig viele Unterfunktionen aufteilen. Prinzipiell geht beides.

2. lsqnonlin ist ein Least-Squares-Verfahren für nichtlineare Gleichungen. Ein großes Anwendungsgebiet des Verfahrens sind Parameterschätzungen. Schau Dir doch schon mal die Online-Hilfe dazu an.

3. fmincon würde ich nicht unbedingt mit einem ode-Solver zusammen verwenden, da die Lösung der ODE ja nicht stetig von den Eingabewerten abhängen muss (von differenzierbar ganz zu schweigen). Die Stärke von fmincon liegt aber in der Verwendung von Gradienteninformation zur Bestimmung der Lösung. (In der Praxis funktioniert es meist trotzdem gut, aber in einer wissenschaftlichen Arbeit kann man in Erklärungsnot kommen, warum man gerade diese Kombination wählt!)

Herzliche Grüße
Bijick
_________________

>> why
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
stiffi
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 41
Anmeldedatum: 13.07.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 14.07.2011, 10:48     Titel:
  Antworten mit Zitat      
Hey Harald,

der Code, den du verlinkt hast funktioniert echt prima.
Zumindest bei einem Testfile mit simplen und wenigen odes.
Bin schon gespannt, wie das mit meinem Modell harmoniert.
Danke nochmal!

Eine Frage hätte ich noch:
Code:

%%% Optimierungsroutine fminsearch %%%
function lsq=minimize(par)
global x0 Messwerte tspan

%Lösung des DGL-Systems mit Startwerten alpha1, alpha2, beta1, beta2
[t,x] = ode45(@nature,tspan,x0,' ',par);
%Bewertungskriterium (wird immer minimiert!)aus der Fehlerquadratsumme
lsq = sum(abs(x(:,1)-Messwerte(:,2)))+sum(abs(x(:,2)-Messwerte(:,3)));
 


In der letzten Zeile (lsq=...) wird die Abweichung der Messergebnisse von den Simulationsergebnissen berechnet. Müssen diese Abweichungen nicht quadriert werden? Oder haldelt es sich hier nicht um eine LSQ-Methode?

Auch dir vielen Dank Bijick. Ich hab jetzt zwei m.files verwendet.
Ich hoffe lsq funktioniert dann auch problemlos. Wink

Danke nochmal!

Gruß Stiffi
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.492
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 14.07.2011, 11:56     Titel:
  Antworten mit Zitat      
Hallo,

wenn du die Fehlerquadrate mit fminsearch/fmincon minimieren möchtest, musst du natürlich auch quadrieren. Also .^2 statt abs.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
stiffi
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 41
Anmeldedatum: 13.07.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 14.07.2011, 12:28     Titel:
  Antworten mit Zitat      
Hi,

ok danke nochmal!
Ich überleg mir noch, was da sinnvoller ist.

LG Stiffi
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.