Simulation Doppelpendel < Mechanik < Physik < Naturwiss. < Vorhilfe
|
Hallo,
ich würde gerne das ebene Doppelpendel simulieren, d.h. die beiden generalisierten Koordinaten (phi1 und phi2) jeweils in Abhängigkeit von t in einem Diagramm darstellen, und vllt eine Animation mit eingeblendeter Bahnkurve. Am Besten mit einstellbaren Randbedingungen, also Pendellängen, Massen sowie Startwinkel.
Leider habe ich so gut wie keine Erfahrung mit Matlab/Simulink etc...
Von daher erstmal die Frage, wie kompliziert mein Vorhaben ist und wie ich am besten in das Problem einsteige.
|
|
|
|
Status: |
(Antwort) fertig | Datum: | 15:11 Sa 10.11.2012 | Autor: | Kroni |
Hallo,
das Problem setzt sich ja aus mehreren Aspekten zusammen.
Was man technisch machen muss, waere [wenn man die Loesung
des gekoppelten Pendels analytisch nicht kennt, was ja zB so waere,
wenn man die Kleinwinkelnaeherung nicht machen moechte] eine Differen-
tialgleichung zu loesen.
D.h. im Prinzip muss man die Gleichung
[mm] $\dot{\vec{A}} [/mm] = L [mm] \vec{A}$
[/mm]
loesen, wobei $L$ eine passende Matrix ist, die die Physik festlegt.
Dazu gibt es dann z.B. die 'Runge-Kutta-Methode'. Die kann man in
jeder beliebigen Sprache selbst programmieren. Oder aber, man sucht
sich eine Sprache aus, die, wenn man die Matrix $L$ bereitstellt und
den Vektor [mm] $\vec{A}$ [/mm] der Anfangswerte, den Rest selbststaendig
erledigt.
D.h. man muss sich da ueberlegen, ob man es selbst schreibt [und damit
die freie Auswahl hat an Programmiersprachen], oder sich schon eine
Sprache aussucht, die eine passende Routine dafuer hat.
Dann gibt es nochmal zwei Moeglichkeiten, was das 'interaktive' Plotten
angeht [d.h. deine Animation].
Entweder, man sucht sich eine Sprache aus, die schon von Bord aus Plot-Routinen
mit sich bringt [Python koennte sowas machen, bin mir da aber nicht
so ganz sicher - vielleicht ginge auch Octave oder so]. Dann kann man
die Plots direkt interaktiv machen und dann anschliessend direkt
im Programm mit den Parametern spielen [was wahrscheinlich das
beste ist].
Oder aber, man waehlt eine beliebige Sprache aus, schreibt die Daten
aus dem Programm heraus, und plottet die dann mit einem zweiten
Programm [z.B. gnuplot]. Dann kann man damit viele einzelen Plots
generieren und dann mit einem entsprechenden Programm [z.B. ffmpeg] ein Video
daraus machen. Das ist aber natuerlich sehr umstaendlich, wenn man
gleichzeitig noch ein bisschen an den Parametern des Systems herum-
spielen moechte [denn dann muesste ja fuer jedes Parameter-Set ein neues
Video gemacht werden...]
Im Prinzip, wenn man sich mal fuer einen der moeglichen Wege entschieden
hat [sprich eine Sprache sich herausgesucht hat], ist das Vorhaben zwar
natuerlich nicht trivial, aber sicher nicht zu kompliziert.
LG
Kroni
|
|
|
|
|
Hallo!
Ach, Animationen kann bereits gnuplot als GIF erzeugen, wenngleich das nicht das eleganteste Format ist.
Im Prinzip kann man die Aufgabe in einem ersten Schritt recht einfach angehen, auch ohne die Differentialgleichungen.
Ein einfacher Ansatz für eine einzelne MAsse in karthesischen Kooridnaten: Man braucht Beschleunigung a, Geschwindigkeit v und Ort x und füllt diese Variablen mit den Anfangswerten. Dann:
1.: Berechnung des Ortes, an dem sich die Masse nach der Zeit dt befindet:
x=x+v*dt
2.: Berechnung der Geschwindigkeit, die die Masse nach dieser Zeit hat:
v=v+a*dt
3.: Berechnung der Beschleunigung aus der Kraft, die am neuen Ort wirkt, z.B. Federpendel:
a=F/m = -D*x/m
Die Schritte 1-3 werden dann beliebig oft wiederholt, und die Werte wie vergangene Zeit (aufaddiertes dt) und ort in ne Datei geschrieben.
Wichtig ist, die Schrittweite dt nicht zu groß zu wählen, aber auch ein zu kleiner Wert ist wegen der Rechenzeit nicht gut.
Das beschriebene ist ein sehr einfacher Ansatz, der meiner Meinung nach aber ziemlich gut nachvollziehbar ist und zum "spielen" einläd. Man kann sich nun komplexere Ansätze und Lösungen ausdenken, die besser sind (stabiler, größeres dt und damit weniger Rechenzeit erforderlich etc.), aber das hier funktioniert für Schwingungen schonmal recht gut.
|
|
|
|
|
Bietet nicht Simulink auch die Möglichkeit dynamische Systeme zu simulieren?
Wäre vllt. die einfachste Art das Problem anzugehn, was meint ihr?
|
|
|
|
|
Status: |
(Antwort) fertig | Datum: | 23:54 So 11.11.2012 | Autor: | leduart |
Hallo
Wenn du mit simulink gut umgehen kannst warum probierst du es nicht einfach aus?
wenn du ne fertige lösung suchst_
hier z.B
gruß leduart
|
|
|
|
|
Status: |
(Frage) reagiert/warte auf Reaktion | Datum: | 19:25 Mo 12.11.2012 | Autor: | BunDemOut |
Ich habe jetzt versucht das Ganze via Simscape zu lösen, aber irgendwie will das nicht. Also es tut sich garnichts wenn ich auf "Simulate" klicke.... Muss dazu sagen, dass ich noch nie mit Simulink gearbeitet habe, habe deshalb alles eher intuitiv gemacht... (was anscheinend falsch ist...)
Hier mal das .mdl-File:
https://rapidshare.com/files/2680799557/Doppelpendel.mdl
|
|
|
|
|
Status: |
(Antwort) fertig | Datum: | 23:50 Mo 12.11.2012 | Autor: | leduart |
Hallo
wenn du noch nie mit dem Programm gearbeitet hast solltest du erst was einfacheres damit machen! freier Fall? schiefer Wurf?
bewegung mit v=const
Gruss leduart
|
|
|
|
|
Habe auch versucht das mathematische Pendel zu modellieren, selbes Problem. Mich würde es also schon weiterbringen, wenn man mir sagen würde wo ich einen Fehler gemacht habe...
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 15:59 Mi 14.11.2012 | Autor: | leduart |
Hallo
ich glaube nicht,dass du hier einen Experten für simulink findest. such dir jemand, der damit schon umgehen kann, für die meisten >Programmiersprachen gibt es Tutorials im netz, oder Beispielprogramme oder user-blogs.
Gruss leduart
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 18:13 Mi 14.11.2012 | Autor: | BunDemOut |
Dein Post hörte sich bisschen so an, als hättest du Ahnung davon. ;)
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 02:20 Do 15.11.2012 | Autor: | matux |
$MATUXTEXT(ueberfaellige_frage)
|
|
|
|