Lektion 5: Formeln auf Arrays
Baue das Muster „Pendelwelle“ in Python und lerne dabei:
- eine physikalische Formel, auf ein ganzes Array angewendet
- np.round und print für eine schnelle Kontrolle
- mehrere Diagramme nebeneinander mit plt.subplots
- f-Strings
- Phase: wo in seiner Schwingung ein Pendel gerade ist
Erst ansehen
Läuft nach einem Klick von YouTube.
"""Pendulum wave: 24 pendulums making 51, 52, ... 74 swings in 60 seconds.
Run: python pendulum-wave.py (needs: pip install numpy matplotlib)
"""
import numpy as np
import matplotlib.pyplot as plt
plt.style.use("dark_background")
g, cycle = 9.81, 60.0 # gravity in m/s^2, seconds until they are back in step
n = np.arange(51, 75) # swings per cycle, one more for each pendulum
period = cycle / n
length = g * (period / (2 * np.pi)) ** 2 # small swings: T = 2 pi sqrt(L / g)
print("lengths in cm:", np.round(length * 100, 1))
fig, axes = plt.subplots(1, 4, figsize=(12, 4), sharey=True)
for ax, t in zip(axes, [0, 15, 20, 30]):
swing = np.cos(2 * np.pi * t / period) # where each bob is, from -1 to 1
ax.scatter(swing, np.arange(len(n)), c=swing, cmap="cool", s=40)
ax.set_title(f"t = {t} s")
ax.set_xlim(-1.2, 1.2)
ax.axis("off")
plt.show()
# Try: t = 60 s (or 75, 80, 90): the same pictures again, as every count is whole
Kein Python auf diesem Computer? Das Notebook führt dasselbe Skript, die Übungen und die Lösungen in deinem Browser aus, in Google Colab. Das Notebook ist auf Englisch.
Zeile für Zeile
n = np.arange(51, 75)Die 24 Zahlen der Schwingungen pro Minute: 51, 52, … 74.
period = cycle / nDie Periode jedes Pendels: 60 Sekunden geteilt durch seine Zahl.
length = g * (period / (2 * np.pi)) ** 2Die Pendelformel für kleine Ausschläge T = 2π√(L / g), nach der Länge L aufgelöst.
fig, axes = plt.subplots(1, 4, figsize=(12, 4), sharey=True)Eine Abbildung mit vier Diagrammen nebeneinander; die Schleife füllt ein Diagramm pro Zeitpunkt.
swing = np.cos(2 * np.pi * t / period)Wo jedes Pendelgewicht zur Zeit t ist, von −1 bis 1: nach t / period Schwingungen der Kosinus von so vielen vollen Drehungen.
ax.set_title(f"t = {t} s")Ein f-String setzt den Wert von t in den Titel ein.
Probier es selbst
Wie lang sind das längste und das kürzeste Pendel?
Hinweis
Das Skript gibt die Längen aus.
Lösung
34,4 cm für 51 Schwingungen pro Minute, 16,3 cm für 74.
Füge den Zeitpunkt t = 12 s hinzu. In wie viele Gruppen teilt sich die Reihe?
Hinweis
Du brauchst ein fünftes Diagramm: plt.subplots(1, 5) und [0, 12, 15, 20, 30].
Lösung
In fünf: Bei 12 s, einem Fünftel der Minute, liegen Nachbarn ein Fünftel einer Schwingung auseinander.
Mach 30 Pendel daraus.
Hinweis
Ändere das Ende von np.arange.
Lösung
n = np.arange(51, 81) ergibt 30 Zahlen, von 51 bis 80.
Quiz
Lernkarten
Lies die Vorderseite, sag dir die Rückseite vor, dann öffne die Karte.
plt.subplots(1, 4)
Eine Abbildung und vier Diagramme (axes) in einer Reihe, um eins nach dem anderen darauf zu zeichnen.
f"t = {t} s"
Ein f-String: Der Wert von t kommt an die Stelle von {t}.
Pendelperiode
Für kleine Ausschläge T = 2π√(L / g): viermal länger heißt halb so schnell.
Phase
Wo ein Pendel innerhalb seiner Schwingung ist; hier der Kosinus von 2π·t / T.
np.round(x, 1)
Rundet jede Zahl eines Arrays auf eine Nachkommastelle.