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

verkoppelte DGL mit ode45

 

Zaungast

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 16.01.2010, 04:27     Titel: verkoppelte DGL mit ode45
  Antworten mit Zitat      
Hallo zusammen!

Hab ein kleineres Problem mit dem Lösen eines DGL-Problems: Ich habe einmal eine first-order-DGL xdot = f(t, x) sowie ein second-order Systems mit zdot = g(t,z,y,x) und ydot = h(t,z).

D.h. x wird im DGL-System innerhalb einer nichtlinearen Funktion verwendet. Ich hab die Sachen implementiert und wollte alles mit einem ode45-Aufruf lösen.

Code:

% funktion wurde vereinfacht
% A = [x, z, y]
% f notier hier die nichtlineare Funktion in Abhängigkeit von x, z.B. tan(x)
function Ret = DGLSys(t, A, flag, c)

xdot = c * A(1);
zdot = (c - A(3)) * A(2) - f(A(1));
ydot = c * A(2);

Ret = [xdot; zdot; ydot];
end;
 


wenn ich darauf mit entsprechenden Anfangswerten einen solver anwende und mir die Kurvenverläufe z.B. von x und xdot plotten lassen, dann passen diese Verläufe nicht zusammen.

Ich hatte einmal meinen Code so modifiziert, dass die nichtlineare funktion keinen Einfluss hatte und siehe da, die Verläufe passten wieder.

Irgendjemand eine Idee, wie man das Problem lösen kann? Kann ich das überhaupt in einer Funktion lösen? Muss ich ja fast, oder?

schonmal vielen Dank!
Zaungast


Harald
Forum-Meister

Forum-Meister


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

ob die "rechte Seite" der DGL linear oder nichtlinear ist, ist eigentlich vollkommen egal.
Kommen irgendwelche Warnungen / Meldungen?
Was du sonst machen kannst:
- Ist die Lösung von Anfang an falsch, oder läuft sie erst allmählich weg?
- im ersteren Fall: Überprüfen, ob die "rechte Seite" korrekt implementiert ist.
- im letzteren Fall: Toleranz über die options (odeset) runtersetzen und/oder einen anderen Löser, z.B. ode23s einsetzen.

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

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 16.01.2010, 14:45     Titel: erledigt
  Antworten mit Zitat      
Hallo Harald,

erstmal vielen dank für deine Antwort. Ich habe heute meine Funktionen mal auf den skalaren Fall umgeschrieben und mit Schleifen gearbeitet. Ist zwar nicht schön, aber seitdem passt es mit den Funktionsverläufen wieder.

Bin wohl irgendwo mit den ganzen Vektoren und Matrizen durcheinander gekommen. War ja auch schon ziemlich spät gestern Wink

also: Thema erledigt!

Danke...
 
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.