tinowagner.com // Blog

Dies und das.
  • Blog
  • Projekte
  • Gästebuch
  • Impressum

Untermenü

  • Archiv
  • Kategorien

    • Allgemein
    • Bilder
    • Fundstücke
    • OS & Apps
      • Gimp
      • Linux
      • Mac
    • Physik
    • Programmieren
      • Web-Dev
    • Sprache
  •  

    Januar 2009
    M D M D F S S
    « Aug    
     1234
    567891011
    12131415161718
    19202122232425
    262728293031  
  • Neueste Artikel

    • Powerbook und Lower Memory Slot
    • Möge es doppel-pendeln!
    • Lebendiger Apfelsaft
    • Was ein Häkchen werden will, muß sich beizeiten krümmen.
    • Erste Hilfe für Bilder
  • Neueste Kommentare

    • John zu Theorieprüfung bestanden!
    • tuxu zu Möge es doppel-pendeln!
    • Basti zu Möge es doppel-pendeln!
    • Antoniaa Cute zu Möge es doppel-pendeln!
    • tinowagner.com // Blog » Archiv » Erste Hilfe für Bilder zu Nützliches zu GIMP
  • Archive

    • August 2008
    • April 2008
    • Oktober 2007
    • März 2005
    • Februar 2005
    • Januar 2005
    • Dezember 2004
    • September 2004
    • August 2004
  • Blogroll

    • Nicole Schönfelder
  • Meta

    • Anmelden
    • Artikel als RSS
    • Kommentare-RSS
    • WordPress.org

Archiv der Kategorie ‘Physik‘

Möge es doppel-pendeln! 02Apr08

Die Semesterferien neigen sich dem Ende zu, und nach all der Prüfungszeit wollte ich mal wieder was programmieren. Doch was? Nun, ich glaube ein Physikstudent sollte zumindest einmal in seinem Leben eine Simulation eines Doppelpendels programmieren ;) Es ist nicht nur schön anzusehen, sondern auch als wohl einfachstes chaotisches System ein physikalisch interessanter Fall.

Die Herleitung der Bewegungsgleichungen ist dank zwei Semestern theoretischer Physik und Lagrange II nicht schwer, wird aber auch bei Eric Weisstein’s World Of Physics sehr schön beschrieben. 

Die dort hergeleiteten Gleichungen sind

M l_1 \ddot \phi_1 + m_2 l_2 \ddot \phi_2 \cos (\phi_1 - \phi_2) + m_2 l_2 \dot \phi^2_2 \sin (\phi_1 - \phi_2) + M g \sin \phi_1 = 0

m_2 l_2 \ddot \phi_2 + m_2 l_1 \ddot \phi_1 \cos (\phi_1 - \phi_2) - m_2 l_1 \dot \phi^2_1 \sin (\phi_1 - \phi_2) + m_2 g \sin \phi_2 = 0

mit M = m_1 + m_2  als Gesamtmasse.

Bleibt noch das Problem sie zu lösen. Analytisch ist das aber ohne Näherung nicht möglich. (Schon das einfache Fadenpendel läßt sich analytisch nur für kleine Winkel exakt lösen!)

Also numerisch.

Angefangen mit Python und dem Rechenpaket SciPy habe ich also ein Einfach- und ein Doppelpendel nebeneinander aufgehängt. (Für die Grafkausgabe OpenGL und Pyglet)

Das gekoppelte Differentialgleichungssystem 2. Ordnung muß man hierbei zur numerischen Lösung in ein Differentialgleichungssystem 1. Ordnung umformen, damit die Integrationsroutinen aus SciPy anwendbar sind. Aber das ist zum Glück immer möglich.

Weil es aber langweilig ist, eine fertige Funktion zu nutzen, habe ich auch diese Routinen noch umgesetzt. Genauer gesagt drei verschiedene: das Euler-Verfahren, das klassische Runge-Kutta-Verfahren mit fester Schrittweite und das Runge-Kutta-Verfahren nach Dormand und Prince mit einer sich anpassenden Schrittweite, wie es in Numerical Recipes beschrieben ist.

Doppelpendel

Lange Rede, kurzer Sinn. Den Python-Code gibt’s hier: klick. Ausführen mit „python -O simulation.py“.

Zur Ausführung wird, wie gesagt, weiterhin das Modul Pyglet benötigt. In ode.py findet sich die Implementation der ODE-Integrationsroutinen. Um die Pendelparameter zu ändern, liefere ich eine einfaches und schnell zusammengeschustertes Widget-Toolkit mit, das das Unterfenster erzeugt.

Da ich aber auch mal wieder was mit Java machen wollte, habe ich das Doppelpendel noch mit Java, NetBeans und JOGL (OpenGL-Binding für Java) umgesetzt. „umgesetzt“ heißt hierbei, daß ich den Code nahezu 1:1 von meinem ursprünglichen Python-Code übersetzt habe. Die Java-Simulation läuft etwas schneller und dank Java Web Start kann ich hier auch einen Link bieten, um sich das ganze sofort anzuschauen.

Den Quelltext gibt’s natürlich auch.

Tags: Java, ODE, Pendel, Physik, Python
Kategorie Physik, Programmieren | 3 Kommentare »


tinowagner.com // Blog is proudly powered by WordPress | WPD
Beiträge (RSS) und Kommentare (RSS)