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
Diffrentialgleichungen 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.
Das Problem
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 sind:
Die kartesischen Koordinaten erfüllen
die zwei Zwangsbedingungen:
Das Problem hat daher nur zwei Freiheitsgrade.
Als generalisierte Koordinaten werden die Auslenkwinkel
Θ1 und Θ2 verwendet.
Die kinetische Energie T ergibt sich 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 nach den Formeln:
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 beiden Dateien des SciLab-Codes habe ich in ein Verzeichnis gesteckt und in eine zip-Datei gepackt;
Sie können sie sich hier 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.
Um nun einige Beispiel-Videos
10 bis 15 Bilder sind es nur pro Sekunde -
mein kleiner Rechner ist zu lahm (?) für den SciLab-Code, der ja interpretiert wird.
Die Filmchen liegen im WebM-Format
mit jeweils unterschiedliche Anfangsbedingungen vor.
Bitte benutzen Sie die eingeblendeten Steuerelemente,
gegebenenfalls auch die rechte Maustaste und
das Kontextmenü, um die Filme zu starten ...
Das Problem
l1 = 1,0 m
l2 = 0,5 m
m1 = 1,0 kg
m2 = 0,5 kg
Ein kleiner Hinweis:
Das untere Pendel soll hier - aller Materie zum Trotz -
einen Vollkreis ausführen können.
Nur ein leichtes Schwingen
- hin und her -
fast wie ein Pendel ...
| Θ1(0) = 30° | Θ2(0) = 30° | v1(0) =
0 m/s | v2(0) = 0 m/s |
Ein stehender Propeller ...
- quasi am Stock
sich drehend ...
| Θ1(0) = 0° | Θ2(0) = 0° |
v1(0) = 0 m/s | v2(0) = 1 m/s |
Es zappelt arg hin und her
- und macht dann doch so
eben einen Überschlag ...
| Θ1(0) = 50° | Θ2(0) = -50° |
v1(0) = 0 m/s | v2(0) = 0 m/s |
Ein elegantes Schwingen
- sehr harmonisch -
mit Überschlägen ...
| Θ1(0) = 50° | Θ2(0) = -50° |
v1(0) = 1 m/s | v2(0) = 1 m/s |
Ein überstürzter Start
- dann mehr tänzelnd -
mit schönen Saltos ...
| Θ1(0) = 50° | Θ2(0) = -50° |
v1(0) = 1 m/s | v2(0) = 1,5 m/s |
Ein großes Kreisen
mit heftigen Innensaltos
und gelassenem Schwingen
| Θ1(0) = 50° | Θ2(0) = -50° |
v1(0) = 10 m/s | v2(0) = 9,5 m/s |
Bei aller Mühe
- es bleibt doch nicht
beim Innenkreiseln ...
| Θ1(0) = 0° | Θ2(0) = 0° |
v1(0) = -4 m/s | v2(0) = 4 m/s |
Ein schönes Innenrollen
- Schafft er es oder nicht,
den großen Überschlag?
| Θ1(0) = 0° | Θ2(0) = 0° |
v1(0) = 5 m/s | v2(0) = 6,25 m/s |
Das große Kreisen,
der Kleine folgt,
ob er will oder nicht ...
| Θ1(0) = 0° | Θ2(0) = 0° |
v1(0) = 20 m/s | v2(0) = 24,7 m/s |
Das große Kreisen,
der Kleine propellert,
der Große kreist ...
| Θ1(0) = 0° | Θ2(0) = 0° |
v1(0) = 20 m/s | v2(0) = 22,5 m/s |
Die untere Kugel ist nun
ein Stückchen leichter
m1 = 5 kg | m2 = 0,5 kg ...
| Θ1(0) = 80° | Θ2(0) = 80° |
v1(0) = 0 m/s | v2(0) = 0 m/s |
Die obere Kugel ist
nun die leichtere
m1 = 0,5 kg | m2 = 5 kg ...
| Θ1(0) = 80° | Θ2(0) = 80° |
v1(0) = 0 m/s | v2(0) = 0 m/s |
m1 = 5 kg | m2 = 5 kg
Beide Kugeln beginnen den
Fall von fast ganz oben ...
| Θ1(0) = 179° | Θ2(0) = 181° |
v1(0) = 0 m/s | v2(0) = 0 m/s |
m1 = 5 kg | m2 = 5 kg
Die eine Kugel ist ganz oben
die andere fast ganz oben ...
| Θ1(0) = 181° | Θ2(0) = 180° |
v1(0) = 0 m/s | v2(0) = 0 m/s |
Beiträge
Werkzeug Numerik
SciLab
Werkzeug Video
CamStudio
Webgerüst
impress
Foliensatz
Bernd Ragutt
Erstellt
Im Winter 2012/13
Geändert
28.02.2018
Benutze die Leertaste oder die Pfeiltasten,
um zu navigieren ...