Mittelstufe · Pendelwelle

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.py
"""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

  1. n = np.arange(51, 75)

    Die 24 Zahlen der Schwingungen pro Minute: 51, 52, … 74.

  2. period = cycle / n

    Die Periode jedes Pendels: 60 Sekunden geteilt durch seine Zahl.

  3. length = g * (period / (2 * np.pi)) ** 2

    Die Pendelformel für kleine Ausschläge T = 2π√(L / g), nach der Länge L aufgelöst.

  4. 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.

  5. 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.

  6. ax.set_title(f"t = {t} s")

    Ein f-String setzt den Wert von t in den Titel ein.

Probier es selbst

  1. 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.

  2. 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.

  3. 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

1. Warum sind bei 60 s alle Pendel wieder im Takt?
2. Was bewirkt sharey=True?
3. T = 2π√(L / g), nach L aufgelöst, ist…
4. Mit t = 15 ergibt f"t = {t} s"…
5. Bei 30 s liegen Nachbarn eine halbe Schwingung auseinander. Was siehst du?

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.

Diese Lernkarten auf einer eigenen Seite →