C.2 Simulation mit Tabellenkalkulation

Profis schreiben ihre Simulationen in Programmcode. In diesem Kapitel zeigen wir dir, wie du einfache Physiksimulationen auch schon mit einer Tabellenkalkulation (engl. spreadsheet) – ganz ohne Programmierkenntnisse – durchführen kannst (Bild C.6).

Bewegungssimulation mit einer Tabellenkalkulation auf einem Notebook

Bild C.6: Bewegungssimulation mit einer Tabellenkalkulation auf einem Notebook

Bekannte Tabellenkalkulationen wie Calc oder Excel sind Teile von Office-Paketen und auf den meisten Computern bereits installiert. Falls nicht, kannst du kostenlos LibreOffice herunterladen und installieren.

Auch das kostenlose Mathematikprogramm GeoGebra besitzt eine Tabellenansicht, in dem du Simulationen, ähnlich wie hier gezeigt, durchführen kannst.

C.2.1 Tabellenblatt einrichten

Als einfaches Beispiel wollen wir den freien Fall eines Körpers von einem \(100\;\mathrm{m}\) hohen Turms simulieren. Dabei vernachlässigen wir vorerst den Luftwiderstand.

Starte deine Tabellenkalkulation und – falls nötig – erstelle ein neues Tabellenblatt. In Bild C.7 siehst du ein Beispiel, wie du den Kopf des Tabellenblattes für eine Bewegungssimulation gestalten kannst.

Tabellenblatt einrichten

Bild C.7: Tabellenblatt einrichten

Ein Tabellenblatt besteht aus Zellen, die in Spalten (A, B, C,…) und Zeilen (1, 2, 3,…) angeordnet sind. In jede Zelle kannst du Text oder Zahlen schreiben. Zahlen, mit denen du später rechnen willst, müssen in einer einzelnen Zelle stehen! Daher haben wir die Einheit immer nach dem Wert in eine separate Zelle geschrieben. Werte für die Konstanten, Anfangsbedingungen und Genauigkeit kannst du später anpassen, ohne die Formeln im Rest des Tabellenblatts noch einmal ändern zu müssen.

In einer Tabellenkalkulation kannst du jeder Zelle eigene Namen geben, damit du sie in den Berechnungen leichter verwenden kannst. Die Namen, die wir gewählt haben, siehst du vor dem Ist-gleich-Zeichen. Einen Namen vergibst du, indem du zunächst die Zelle markierst und dann den gewünschten Namen in das Namensfeld (Feld links über der Tabelle) einträgst. Wählst du in Zukunft die Zelle aus, erscheint dort nicht mehr die Zellenkoordinaten (zum Beispiel C4), sondern der neu vergebene Name (hier g).

C.2.2 Simulationsspalten vorbereiten

Für jede der Größen, die sich während der Simulation ändert, müssen wir eine eigene Spalte vorsehen (Bild C.8).

Spalten vorbereiten und Anfangswerte eintragen

Bild C.8: Spalten vorbereiten und Anfangswerte eintragen

Zunächst füllen wir die Zeile mit den Anfangswerten aus. Wir lassen unsere Simulation immer zum Zeitpunkt null beginnen, daher tragen wir in diese Zelle null ein. Die Werte für Anfangsgeschwindigkeit (v_0) und Anfangsort (s_0) übernehmen wir aus dem Kopf des Tabellenblattes. Beginnt ein Zelleneintrag mit einem Ist-Gleich-Zeichen (=), wird ihr Inhalt ausgewertet (Zahlen aus anderen Zellen übernommen und berechnet).

C.2.3 Musterzeile ausfüllen

Jetzt kommt der wichtigste Teil der Simulation – das Ausfüllen der Musterzeile. In der Musterzeile legen wir fest, wie die Werte für den nächsten Zeitschritt aus den Werten des vorherigen Zeitschritts (Zeile darüber) berechnet werden. Dazu benötigen wir die Formeln für Bewegungssimulationen und müssen sie in die „Sprache“ der Tabellenkalkulation übersetzen. Zum Beispiel heißt \(\Delta t\) bei uns dt. Plus- (+) und Minus-Zeichen (-) werden auch in den Formeln in einer Tabellenkalkulation für die Addition und die Subtraktion verwendet. Das Symbol für die Multiplikation ist aber der Stern (*) und für die Division der Schrägstrich (/, engl. slash), den du mit der Tastenkombination Umschalt-7 erzeugen kannst. In Bild C.9 siehst du die Formel für den nächsten Zeitwert.

Formeln in die Spalten der Musterzeile eintragen.

Bild C.9: Formeln in die Spalten der Musterzeile eintragen.

Hier die Zusammenfassung der Musterzeile:

  • Musterzelle Zeit (B17): =B16+dt (addiere zum letzten Zeitwert den Zeitschritt dt)
  • Musterzelle Geschwindigkeit (C17): =C16+(-g)*dt (addiere zum letzten Geschwindigkeitswert C16 die Geschwindigkeitsänderung -g*dt)
  • Musterzelle Ort (D17): =D16+C17*dt (addiere zum letzten Ortswert D16 die Ortsänderung C17*dt)

Beachte, dass in jeder Zelle der Musterzeile mit dem Wert aus der darüberliegenden Zelle beginnt. Das muss so sein, weil dir die Gleichungen (C.1) nur etwas über die Änderung der Werte aussagen!

Bemerkungen:

  • Die Geschwindigkeit ist negativ, weil die Beschleunigung nach unten zeigt; die Fallbeschleunigung also negativ genommen werden muss.
  • Der Ortswert wird kleiner, weil die Geschwindigkeit nach unten gerichtet ist.
  • Normalerweise sind alle Werte eines Tabellenblatts in schwarzer Schrift. Du kannst aber das Format für Zellen so einstellen, dass negative Zahlen rot eingefärbt werden. Das macht es leichter, bei den vielen Zahlenwerten den Überblick zu behalten.

C.2.4 Kopierte Zeilen

Um die Werte für die folgenden Zeitschritte zu erhalten, müssen die Formeln auf die Zeilen darunter übertragen werden. Dafür haben Tabellenkalkulation eine Funktion die sich „Autoausfüllen“ nennt und mit deren Hilfe du das Kopieren sehr einfach erledigen kannst. Das geniale dabei: Die Zellbezüge in Formeln werden dabei automatisch angepasst!

Anwenden der Funktion „Autoausfüllen“

Bild C.10: Anwenden der Funktion „Autoausfüllen“

Das Autoausfüllen funktioniert bei allen Tabellenkalkulationen gleich:

  1. Markiere zunächst alle Zellen der Musterzeile, die du übertragen möchtest.
  2. Ziele mit dem Mauszeiger auf das kleine Quadrat rechts unten am Auswahlrahmen (Bild C.10, links).
  3. Ziehe den Auswahlrahmen mit gedrückter linker Maustaste nach unten und die Formel wird „intelligent“ kopiert (Bild C.10, rechts).

C.2.5 Ende der Simulation

Der Vorgang endet, wenn der Körper den Boden erreicht. Erzeuge mit der Autoausfüllen-Funktion so viele Zeilen, bis der Wert für den Ort kleiner null wird (Bild C.11).

Ende der Simulation

Bild C.11: Ende der Simulation

Die Antwort auf die ursprüngliche Frage nach der Falldauer kannst du in der Zeitspalte ablesen. Zwischen den Zeitpunkten \(4{,}4\;\mathrm{s}\) und \(4{,}6\;\mathrm{s}\) trifft der Körper auf dem Boden auf.

Bei dieser einfachen Bewegung wäre eine Simulation nicht nötig gewesen. Ein freier Fall ohne Luftwiderstand entspricht einer gleichmäßig beschleunigten Bewegung. Im Rechenbeispiel zur Fallbewegung hast du gesehen, wie sich die Falldauer direkt berechnen lässt. Bei einer Turmhöhe von \(100\;\mathrm{m}\) ergibt die Rechnung eine Fallzeit von \(4{,}51\ldots\;\mathrm{s}\). Unsere Simulation liefert also ein recht gutes Ergebnis.

Links:

C.2.6 Diagramme

Um das Ergebnis der Simulation anschaulicher zu gestalten, kannst du die Zahlen auch in einem Diagramm darstellen lassen. Möchtest du das Orts-Zeit-Diagramm des Vorganges, markiere die Spalten Zeit und Ort (unzusammenhängende Bereiche kannst du üblicherweise mit gedrückter Steuerungstaste auswählen). Mit den ausgewählten Werten erzeuge jetzt ein Diagramm mit dem Diagrammtyp „X-Y-Diagramm“. Lässt du die Punkte durch eine Kurve verbinden, kannst du ziemlich genau den Zeitpunkt ablesen, wann der Körper in unserer Simulation den Boden erreicht (Bild C.12): \(t\approx 4{,}5\;\mathrm{s}\).

Zusammenfassung der berechneten Werte in einem Orts-Zeit-Diagramm

Bild C.12: Zusammenfassung der berechneten Werte in einem Orts-Zeit-Diagramm

Vorsicht: Tabellenkalkulation passen die Achsen nach dem Zahlenmaterial automatisch an. Erstellst du zum Beispiel eine Simulation für eine zweidimensionale Bewegung und lässt dir den Ort in x- und y-Richtung in einem Diagramm darstellen, ist das Achsenverhältnis im Allgemeinen nicht 1:1. Die Bahnkurve wird im Diagramm daher gestaucht oder gestreckt dargestellt. Leider besitzen Tabellenkalkulationen keine einfache Möglichkeit, das Achsenverhältnis einzustellen.

Links:

C.2.7 Bocksprung-Verfahren

Das Bocksprung-Verfahren hast du schon kennengelernt. Es ist eine Methode, um genauere Ergebnisse bei einer Simulation zu erhalten. Dabei werden Ort und Geschwindigkeit um einen halben Zeitschritt versetzt berechnet.

(a) Euler-Verfahren und (b) Bocksprung-Verfahren

Bild C.13: (a) Euler-Verfahren und (b) Bocksprung-Verfahren

Am besten beginnst du mit deinem Tabellenblatt für den freien Fall ohne Luftwiderstand. Öffne das Dokument und speichere es unter einem anderen Namen („speichern unter…“) ab, zum Beispiel sim-free-fall-leapfrog. Für die Simulation nach dem Bocksprung-Verfahren müssen wir nur den anfänglichen Wert für die Geschwindigkeit ändern, alle anderen Formeln bleiben gleich. Die Formel für den Anfangswert der Geschwindigkeit (Zelle C16) lautet dann nicht mehr v_0, sondern v_0 + (-g) * dt/2 (Geschwindigkeit einen halben Zeitschritt später) (Bild C.13, Änderungen sind fett hervorgehoben).

Beachte: Alle angezeigten Geschwindigkeitswerte „gehören“ jetzt nicht mehr zu dem in der Spalte Zeit angezeigten Zeitpunkt, sondern zu einem halben Zeitschritt später.

Links:

C.2.8 Veränderliche Kraft

Körper fallen auf der Erdoberfläche im Allgemeinen nicht mit derselben Beschleunigung. Grund dafür ist der Luftwiderstand in der Atmosphäre. Als Beispiel für eine Simulation mit veränderlicher Kraft wollen wir mit einer Tabellenkalkulation das Verhalten eines fallenden Körpers mit Luftwiderstand simulieren. Als Körper nehmen wir eine homogene Kugel mit dem Radius \(r=0{,}1\;\mathrm{m}\) (\(10\;\mathrm{cm}\)). Betrachten wir eine „Styropor“-Kugel (Expandiertes Polystyrol, EPS) finden wir in den Datenblättern eine Dichte von rund \(\rho=20\;\mathrm{kg/m^3}\) und damit eine Masse von \(m=0{,}083\ldots\;\mathrm{kg}\). Die Strömungswiderstandskraft ist abhängig von:

  • Luftwiderstandsbeiwert (für eine Kugel findest du in der Literatur den Wert \(c_\mathrm{w}=0{,}45\))
  • angeströmte Querschnittsfläche (hier eine Kreisfläche mit \(A=2\pi\cdot r^2=0{,}031\ldots\;\mathrm{m^2}\))
  • Dichte der Luft (rund \(\rho_0=1{,}29\;\mathrm{kg/m^3}\) bei Normalbedingungen)
  • der momentanen Geschwindigkeit des Körpers durch die Luft

Diese Parameter müssen zusätzlich in das Tabellenblatt aufgenommen werden und die entsprechenden Zellennamen vergeben werden (Bild C.14).

Tabellenblatt zur Simulation freier Fall mit Luftwiderstand

Bild C.14: Tabellenblatt zur Simulation freier Fall mit Luftwiderstand

Im Gegensatz zu der Simulation zum freien Fall ohne Luftwiderstand ist die Beschleunigung jetzt nicht mehr konstant und muss in jedem Zeitschritt aus der Kraft neu berechnet werden. Das Tabellenblatt muss entsprechend um zwei Spalte erweitert werden: eine für die Kraft und eine für die Beschleunigung (Bild C.15).

  • Die Summe aus Gewichtskraft (4.4.1, \(F_\text{G} = -m\cdot g\)) und Strömungswiderstandskraft (\(F_\text{R}=-\frac{1}{2}\cdot c_\text{w}\cdot A\cdot \rho\cdot |v|\cdot v\)) ergibt die aktuelle Kraft (=(-m*g)+(-0,5*c_w*A*rho*ABS(E20)*E20))
  • Die aktuelle Beschleunigung berechnest du aus dem Quotienten aus der aktuellen Kraft und der Masse (\(F/m\), also =C20/m)
Tabellenblatt zur Simulation freier Fall mit Luftwiderstand

Bild C.15: Tabellenblatt zur Simulation freier Fall mit Luftwiderstand

Jetzt folgt wieder das Ausfüllen der Musterzeile und das Kopieren der Zeilen mit der Autoausfüllen-Funktion.

Im Orts-Zeit-Diagramm (Bild C.16) der fertigen Simulation, kannst du erkennen, dass die Kurve schon nach kurzer Fallzeit gerade verläuft – der Körper sich dort gleichförmig mit konstanter Geschwindigkeit (seiner Endgeschwindigkeit, engl. terminal velocity) bewegt. Gewichtskraft und Strömungswiderstandskraft sind dann entgegengesetzt gleich groß und heben einander auf.

Orts-Zeit-Diagramm der berechneten Werte für den Fall mit Luftwiderstand

Bild C.16: Orts-Zeit-Diagramm der berechneten Werte für den Fall mit Luftwiderstand

Wiederholst du die Simulation mit einer gleich großen Kugel aus Eisen (\(m=32{,}98\ldots\;\mathrm{kg}\)) kannst du erkennen, dass die Kugel den Boden erreicht, bevor sie die Endgeschwindigkeit erreichen kann.

Links: