Lekcja 5: Wzory na tablicach
Zbuduj w Pythonie wzór „Fala wahadeł” i po drodze naucz się:
- wzór fizyczny zastosowany do całej tablicy
- np.round i print do szybkiego sprawdzenia
- kilka wykresów obok siebie z plt.subplots
- f-stringi
- faza: w którym miejscu wahnięcia jest wahadło
Najpierw obejrzyj
Film gra z YouTube po kliknięciu.
"""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
Nie masz Pythona na tym komputerze? Notatnik uruchamia ten sam skrypt, zadania i odpowiedzi w przeglądarce, w Google Colab. Notatnik jest po angielsku.
Linijka po linijce
n = np.arange(51, 75)24 liczby wahnięć na minutę: 51, 52, … 74.
period = cycle / nOkres każdego wahadła: 60 sekund podzielone przez jego liczbę wahnięć.
length = g * (period / (2 * np.pi)) ** 2Wzór na wahadło przy małych wychyleniach, T = 2π√(L / g), rozwiązany względem długości L.
fig, axes = plt.subplots(1, 4, figsize=(12, 4), sharey=True)Jedna figura z czterema wykresami obok siebie; pętla wypełnia jeden wykres na każdą chwilę.
swing = np.cos(2 * np.pi * t / period)Gdzie jest każdy ciężarek w chwili t, od −1 do 1: po t / okres wahnięć, cosinus tylu pełnych obrotów.
ax.set_title(f"t = {t} s")f-string wstawia wartość t do tytułu.
Twoja kolej
Jak długie są najdłuższe i najkrótsze wahadło?
Podpowiedź
Skrypt wypisuje długości.
Odpowiedź
34,4 cm dla 51 wahnięć na minutę, 16,3 cm dla 74.
Dodaj chwilę t = 12 s. Na ile grup dzieli się rząd?
Podpowiedź
Potrzebujesz piątego wykresu: plt.subplots(1, 5) i [0, 12, 15, 20, 30].
Odpowiedź
Na pięć: po 12 s, jednej piątej minuty, sąsiednie wahadła dzieli jedna piąta wahnięcia.
Zrób 30 wahadeł.
Podpowiedź
Zmień koniec np.arange.
Odpowiedź
n = np.arange(51, 81) daje 30 liczb, od 51 do 80.
Quiz
Fiszki
Przeczytaj przód, powiedz sobie, co jest z tyłu, potem otwórz kartę.
plt.subplots(1, 4)
Figura i cztery wykresy (osie) w jednym rzędzie, do rysowania po kolei.
f"t = {t} s"
f-string: wartość t trafia w miejsce {t}.
Okres wahadła
Przy małych wychyleniach T = 2π√(L / g): cztery razy dłuższe znaczy dwa razy wolniejsze.
Faza
Miejsce wahadła w jego wahnięciu; tutaj cosinus z 2π·t / T.
np.round(x, 1)
Zaokrągla każdą liczbę tablicy do jednego miejsca po przecinku.