Das Doppelpendel
Ein nicht-lineares Problem
»Zwei starre gekoppelte Pendel«
Numerisch gelöst und animiert
mit dem
»Werkzeugkasten SciLab«
Prolog
Als ich in den siebziger Jahren des letzten Jahrtausends Physik studierte, stanzte ich Fortran-Code in Lochkarten – unvergessen ist mir ein 'berechnetes GOTO' in einer Übungsaufgabe. Als Ergebnis erhielt man am nächsten Tag aber nur einen Haufen Zahlen. Die Veranschaulichung von physikalischen Vorgängen war (fast) nur im Experiment möglich.
Anfang der achtziger Jahren hatte dann jeder Physiker einen Commodore C64. Ich wollte mir den Schmetterlingseffekt veranschaulichen, der bei nicht-linearen Differentialgleichungen auftritt: Eine nur kleine Änderung bei den Anfangsbedingungen kann dabei zu einem ganz anderen Lösungsverhalten führen.
Ich programmierte zunächst in Assembler und Forth, in Pascal setzte ich dann das Runge-Kutta-Verfahren zur Lösung von Differentialgleichungen um und spendierte dem Ganzen - dank dem Kleinod C64 - eine graphische Ausgabe. Ich haderte jedoch mit dem Speicherplatz (64K).
Ein extra für 200 DM gekaufter Compiler von Data-Becker sollte Abhilfe schaffen und eine 'Segmentierung' erlauben, aber genau diese Compiler-Eigenschaft war nur ein Werbeversprechen und funktionierte nicht.
Dem C64 folgte (leider) bald ein Atari, ein an sich vorzüglicher Rechner im Macintosh-Stil, das Software-Angebot war aber insgesamt ärmlich und meist von dürftiger Qualität, der PC war bereits der große Konkurrent. Für die Textverarbeitung benutzte ich das famose 'Signum', für andere Dinge gab es auf dem schwarzen Markt einen Macintosh-Emulator. Ein Compiler war nicht im Angebot.
Heute dagegen gibt es großartige Werkzeuge, die noch nicht einmal etwas kosten, etwa »LibreOffice«, mit dem ich diese Zeilen und die mathematischen Formeln schreibe oder aber den MatLab-Nachbau »SciLab«.
Ich habe mir das starre Doppelpendel ausgesucht, um ein kleines physikalischen Problem zu lösen und zu veranschaulichen.
Das Problem
Zwei Kugeln mit den Massen m1 und m2 sowie zwei Stangen der Längen l1 und l2 sollen ein schwingendes System bilden, das zwei Freiheitsgrade hat.
Es soll hier nur die Schwerkraft wirken, die Corioliskraft, die durch die Erdrotation hervorgerufen wird, und die Reibungskräfte, die etwa durch die Luft entstehen, werden vernachlässigt.
Das Problem wird als ebenes Problem behandelt – obwohl es durchaus spannend wäre, die Bewegungsvielfalt in drei Dimensionen zu betrachten.

Die physikalische Algorithmik
Die Newtonschen Bewegungsgleichungen in einem zweidimensionalen kartesischen Koordinatensystem (x,y) lassen sich schnell aufstellen, denn es wirkt auf die Massen m1 und m2 allein die konstante Schwerkraft der Stärke g in die negative y-Richtung. Das Pendel schwingt daher in einer fixen Ebene.
Die beiden Massen werden als Punktmassen behandelt und die beiden Verbindungsstangen als starr und masselos.


Die kartesischen Koordinaten der Punktmassen erfüllen mit der Konstanz der Längen der Verbindungsstangen zwei Zwangsbedingungen, das Problem hat daher nur zwei Freiheitsgrade:

Als generalisierte Koordinaten zur Beschreibung der beiden Freiheitsgrade werden die Auslenkwinkel Θ1 und Θ2 verwendet:


Die kinetische Energie T ergibt ich wie folgt aus den Geschwindigkeiten:


Die potentielle Energie V ist:

Ich leite die Bewegungsgleichungen mithilfe des Lagrange-Formalismus ab. Die beiden Bewegungsgleichungen ergeben sich aus der Lagrange-Funktion und den Lagrangeschen Gleichungen:
Die Lagrange-Funktion L ist einfach die Differenz aus kinetischer und potentieler Energie:

Aus der Lagrange-Funktion erhält man die Bewegungsgleichungen durch fleißiges Ableiten mithilfe der Lagrangeschen Gleichungen:

Und hier sind sie in voller Schönheit, die beiden Bewegungsgleichungen:

Die mathematische Numerik
Um die Lösungsmaschine SciLab einsetzen zu können, werden in einem ersten Schritt die beiden Differentialgleichnugen zweiter Ordnung in vier Differentialgleichungen erster Ordnung umgewandelt.
Dazu werden zwei neue Variablen eingeführt, der Schritt wird hier aber nicht vorgeführt:

Das Umsetzen der mathematischen Gleichungen in SciLab-Code ist handwerkliche Kleinarbeit.
Die Dateien des SciLab-Codes habe ich in ein Verzeichnis gesteckt und zu einer zip-Datei gepackt. Den Scilab-Code mit etwas Mathematik habe ich zudem in einer PDF-Datei zusammengefasst. Sie können sich diese hier bei Interesse herunterladen:
Im Scilab-Code werden erst alle Punkte berechnet, 10 bis 15 Punkte in der Sekunde - dann wird gezeichnet.
Die Ausgaben in das Grafik-Fenster von SciLab habe ich mit dem netten Werkzeug CamStudio zu avi-Videos mitgeschnitten. Der 'Miro Video Converter' erzeugt aus den avi-Dateien Filmchen im kompakteren WebM-Format.
Der SciLab-Code tut in etwa, was er soll, er wird aber keinen Schönheitspreis erhalten. Die Anfangsbedingungen sind in blauer Schrift hervorgehoben.
Ein Hinweis: Unter den Demos, die mit dem Werkzeugkasten Scilab einherkommen, gibt es auch ein sehr hübsches 10-fach-Pendel zu bestaunen. Allerdings ist hier zum Erstellen des Quellcodes ein weiteres Werkzeug, Maple, vorgeschaltet worden und es wird Fortran-Code erzeugt, der erst noch kompiliert werden muss; der Fortran-Compiler dazu muss als zusätzliches Werkzeug installiert werden.
Die Beispiel-Videos
Nur 10 bis 15 Bilder sind es pro Sekunde in den Videos - mein kleiner Rechner war zu lahm für den SciLab-Code, der ja interpretiert wird.
Die Filmchen liegen im WebM-Format mit jeweils unterschiedlichen Anfangsbedingungen vor.
Bitte benutzen Sie die eingeblendeten Steuerelemente, gegebenenfalls auch die rechte Maustaste und das Kontextmenü, um die Filme zu starten.
Mein Doppelpendel schwingt mit den nachfolgend aufgeführten Längen und Massen; die anfänglichen Auslenkungswinkel Φi(0) und Winkelgeschwindigkeiten dΦi(0)/dt=ωi(0) der Massen sind oberhalb der Videos aufgeführt; bei einigen Videos habe ich auch die Massen variiert, die stehen dann unterhalb der Videos.
l1 = 1,0 m |
l2 = 0,5 m |
m1 = 1,0 kg |
m2 = 0,5 kg |

Ein kleiner pendeltechnischer Hinweis:
Die Pendelmassen sollen hier Vollkreise ausführen können.
| Θ1(0) = 30° | Θ2(0) = 30° | ω1(0) = 0 rad/s | ω2(0) = 0 rad/s |
Nur ein leichtes Schwingen
- hin und her -
fast wie ein Pendel ...
| Θ1(0) = 0° | Θ2(0) = 0° | ω1(0) = 0 rad/s | ω2(0) = 1 rad/s |
Ein stehender Propeller ...
- quasi am Stock
sich drehend
| Θ1(0) = 50° | Θ2(0) = -50° | ω1(0) = 0 rad/s | ω2(0) = 0 rad/s |
Es zappelt arg hin und her
- und macht dann doch so
eben einen Überschlag
| Θ1(0) = 50° | Θ2(0) = -50° | ω1(0) = 1 rad/s | ω2(0) = 1 rad/s |
Ein elegantes Schwingen
- sehr harmonisch -
mit Überschlägen
| Θ1(0) = 50° | Θ2(0) = -50° | ω1(0) = 1 rad/s | ω2(0) = 1,5 rad/s |
Ein überstürzter Start
- dann mehr tänzelnd -
mit schönen Saltos
| Θ1(0) = 50° | Θ2(0) = -50° | ω1(0) = 10 rad/s | ω2(0) = 9,5 rad/s |
Ein großes Kreisen
mit heftigen Innensaltos
und gelassenem Schwingen
| Θ1(0) = 0° | Θ2(0) = 0° | ω1(0) = -4 rad/s | ω2(0) = 4 rad/s |
Bei aller Mühe
- es bleibt doch nicht
beim Innenkreiseln
| Θ1(0) = 0° | Θ2(0) = 0° | ω1(0) = 5 rad/s | ω2(0) = 6,25 rad/s |
Ein schönes Innenrollen
- Schafft er es oder nicht,
den großen Überschlag?
| Θ1(0) = 0° | Θ2(0) = 0° | ω1(0) = 20 rad/s | ω2(0) = 24,7 rad/s |
Das große Kreisen,
der Kleine folgt,
ob er will oder nicht
| Θ1(0) = 0° | Θ2(0) = 0° | ω1(0) = 20 rad/s | ω2(0) = 22,5 rad/s |
Das große Kreisen,
der Kleine propellert,
der Große kreist
| Θ1(0) = 80° | Θ2(0) = 80° | ω1(0) = 0 rad/s | ω2(0) = 0 rad/s |
Die untere Kugel ist nun
ein Stückchen leichter
m1 = 5 kg | m2 = 0,5 kg
| Θ1(0) = 80° | Θ2(0) = 80° | ω1(0) = 0 rad/s | ω2(0) = 0 rad/s |
Die obere Kugel ist
nun die leichtere
m1 = 0,5 kg | m2 = 5 kg
| Θ1(0) = 179° | Θ2(0) = 181° | ω1(0) = 0 rad/s | ω2(0) = 0 rad/s |
m1 = 5 kg | m2 = 5 kg
Beide Kugeln beginnen den
Fall von fast ganz oben
| Θ1(0) = 181° | Θ2(0) = 180° | ω1(0) = 0 rad/s | ω2(0) = 0 rad/s |
m1 = 5 kg | m2 = 5 kg
Die eine Kugel ist ganz oben
die andere fast ganz oben