Wie schnell lädt ein Download gerade?
Die Änderungsrate sagt, wie schnell sich eine Größe ändert, etwa Megabyte pro Sekunde bei einem Download. Wer sie aus Messwerten schätzen kann, sieht, ob etwas schneller oder langsamer wird.
Ein Dateimanager zeigt Ihnen nur, wie viele Megabyte schon da sind. Die Geschwindigkeit zu einem Zeitpunkt müssen Sie selbst aus zwei Messwerten schätzen.
Am Ende dieser Lektion
Notiz
Ich kann aus Zahlen schätzen, wie schnell sich etwas an einer Stelle ändert.
Schlüsselwörter
| Begriff | Was er bedeutet |
|---|---|
| Änderungsrate | wie stark sich ein Wert pro Schritt ändert |
| Steigung | die Änderungsrate einer Geraden |
| Differenzenquotient | der Unterschied der Werte geteilt durch den Unterschied der Stellen |
| Schrittweite | der kleine Abstand h zwischen zwei Stellen |
| Ableitung | die Änderungsrate an einer einzelnen Stelle |
Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.
Änderungsrate heißt: Unterschied geteilt durch Unterschied
Die Änderungsrate vergleicht zwei Messungen. Sie teilen, um wie viel sich der Wert geändert hat, durch die Zeit, die dafür verging.
Bei einer geraden Linie ist diese Zahl überall gleich. Sie heißt dann Steigung. Bei einer Kurve hängt die Zahl davon ab, welche zwei Punkte Sie wählen.
Beispiel: ein Download, gemessen alle 2 Sekunden
| Sekunde | Geladene Megabyte | Zuwachs seit der letzten Messung | Rate in Megabyte pro Sekunde |
|---|---|---|---|
| 0 | 0 | ||
| 2 | 4 | 4 | 4 geteilt durch 2 = 2 |
| 4 | 16 | 12 | 12 geteilt durch 2 = 6 |
| 6 | 36 | 20 | 20 geteilt durch 2 = 10 |
Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.
Der Differenzenquotient schätzt die Steigung an einem Punkt
Sie wollen die Geschwindigkeit genau bei Sekunde 3, nicht über ein ganzes Intervall. Dazu messen Sie bei 3 und bei 3 + h, mit einem kleinen Schritt h.
Die Formel heißt Differenzenquotient: (f(3 + h) - f(3)) / h. Je kleiner h, desto näher liegen Sie an der Geschwindigkeit genau bei 3. Der Wert, dem er sich nähert, heißt Ableitung.
Den Schritt h immer kleiner machen
def geladen(t):
return t ** 2 # Megabyte nach t Sekunden
def differenzenquotient(f, x, h):
return (f(x + h) - f(x)) / h
for h in [1, 0.1, 0.01, 0.001]:
print("h =", h, ":", round(differenzenquotient(geladen, 3, h), 4))
# Ändern Sie die 3 in 5. Welche Zahl erwarten Sie am Ende?
Die Rate zwischen 3 und 3,1 Sekunden
docker exec jupyter python3 -c "print(round((3.1**2 - 3**2) / 0.1, 3))"Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.
Die Funktion wird als Argument übergeben
Im Code steht differenzenquotient(f, x, h) für jede Funktion. Sie geben f einfach beim Aufruf mit, ohne Klammern: differenzenquotient(geladen, 3, 0.1).
So schreiben Sie die Schätzung einmal und nutzen sie für jede Kurve. Genau das tun die Aufgaben dieses Moduls.
Ein häufiger Fehler
Warnung
Viele denken, je kleiner h, desto genauer das Ergebnis. Das stimmt nur bis etwa 0,00000001. Danach ziehen Sie fast gleiche Zahlen voneinander ab, und Rundungsfehler des Rechners überwiegen. Wählen Sie h klein, aber nicht winzig.
Wenn h zu klein wird
def quadrat(x):
return x ** 2
for h in [0.001, 0.00000001, 0.000000000001, 1e-15, 1e-16]:
schaetzung = (quadrat(3 + h) - quadrat(3)) / h
print("h =", h, ":", schaetzung)
# Die wahre Steigung ist 6. Ab welchem h wird die Schätzung schlechter?
Beidseitige Nachbarn machen die Schätzung genauer
Statt nur nach vorn zu schauen, nehmen Sie den Wert davor und den Wert danach. Die Steigung zwischen den beiden Nachbarn passt meist besser zur Stelle in der Mitte.
Die Bibliothek NumPy bietet beides. np.diff bildet die Unterschiede nebeneinander, np.gradient die Steigung mit beiden Nachbarn.
Die Raten zwischen den Messungen mit NumPy
docker exec jupyter python3 -c "import numpy as np; x = np.array([0, 2, 4, 6]); y = x ** 2; print(np.diff(y) / np.diff(x))"Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.
Die Steigung an jeder Messstelle mit NumPy
docker exec jupyter python3 -c "import numpy as np; x = np.array([0.0, 2.0, 4.0, 6.0]); print(np.gradient(x ** 2, x))"Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.