Verfasst am: 04.01.2011, 10:43
Titel: koppeln von Differentialgleichungssysteme
Hallo Zusammen!
Also ich habe folgendes Problem:
Als erstes betrachtete ich eine Kugelfeder die fällt und sich dann einpendelt bis sie ruhig liegt. Man hat also eine Differentialgleichung 2. Ordnung diese transformierte ich in ein System 2 , 1.Ordnung und löste sie mit ode45.
Nun betrachte ich einen Stab mit 2 Kugelfedern an je einem Ende -> also 2 Differentialgleichungen 2.Ordnung für die Translation des Stabschwerpunktes und die Rotation um den Schwerpunkt. Somit hätte ich auch 2 Systeme von Differentialgleichunge 1.Ordnung (wie oben). Wie kann ich diese beiden Systeme in Matlab, bzw. mit dem ode45 koppeln?
du hast dann 2*2=4 Differentialgleichungen, deren rechte Seiten interagieren. Das kannst du aber in ode45 einfach reinschreiben.
Für mehr Informationen bitte die konkrete DGL posten.
Grüße,
Harald
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 04.01.2011, 11:46
Titel:
Also die beiden Differentialgleichungen sind: (ein Punkt neben der variable bedeutet Ableitung nach der Zeit (was normal der Punkt darüber wer geht aber nicht zum schreiben also y.. ist a die beschleunigung))
m*y.. = F1 + F2 - m*g (F1 Kraft auf die erste Feder, F2 Kraft auf die zweite Feder, m Masse des Stabes, g Erdbeschleunigung)
mit Fi = ki*(Ri-hi) - Di*h.i
wobei k,D Feder und Dämpfungskonstante
hi die Höhe der jeweiligen Feder 1,2 vom Boden.
hi ergibt sich ja dann wiederum aus der geometrischen Beziehung
h1= y-d1*sin(phi),
h2= y+d2*sin(phi)
d sind die Abstände zum Schwerpunkt, y die Höhe des Schwerpunktes über dem Boden und phi der Winkel des Stabes gegenüber der x Achse. (ich weiß eine Skizze wäre von Vorteil habe aber leider keinen Scanner zur Hand)
die zweite Differentialgleichung wäre:
I*phi.. = (F2*d2 - F1*d1)*cos(phi)
I.. Trägheit des Stabes
Diese habe ich in 2 Systeme transformiert und das wäre ja dann einfach ode vom ersten System und ode vom zweiten da die aber voneinander abhängen weiß ich nicht wie ich dass in ein ode hineinpacke.
Die Funktion nimmt x entgegen und muss dann die entsprechenden Ableitungen zurückgeben.
Grüße,
Harald
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 04.01.2011, 14:05
Titel:
Danke hat super geklappt !!!
mfg
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 04.01.2011, 14:17
Titel:
Ich hätte da noch eine weitere Frage:
Kann man neben Zeit, Startwerte und Argumente auch noch odeset optionen übergeben?
bis jetzt habe ich nur ode45(@func,tspan,init und dann die übergabe Argumente wie Federkonstante und Dämpfungskonstante usw. möchte aber die Genauigkeit erhöhen.
bis jetzt hab ich es nur gefunden als (@func,t,y0,options) wenn ich nach meinen argumenten jedoch noch options anhänge kommt immer ein Fehler?
das Problem sind die zusätzlichen Parameter c,m,r,D,g. Sachen zum Probieren:
- funktioniert es ohne options? (ich nehme an: ja)
- funktioniert es, wenn du options vor c setzt?
- nimmt die DGL-Funktion diffGL.m auch die entsprechenden Parameter entgegen?
Ich würde empfehlen, die zusätzlichen Parameter über ein anonymous function handle zu übergeben, sieht dann so aus:
also mit deiner Codezeile funktionierts einwandfrei ! die anderen Punkte habe ich schon vorher probiert aber ohne Erfolg... danke vielmals!
- ohne options funktionierts mit dem Zusatz, dass man vor die Argumente noch einmal die Startbedinung y1 hinschreib (also
(@diffGL,tspan,parameter,y1,c,m,r,D..)
keine Ahnung warum das notwendig ist) mit deiner Zeile ist das auch nicht mehr notwendig
-vor's c geschrieben brachte auch eine Fehlermeldung
die Variante, die du zunächst versucht hast, stammt aus einer Zeit, als es noch keine (anonymous) function handles gab. Es ist definitiv besser, das in der von mir gezeigten Form zu machen.
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.