Aufgaben
Lösung zu Aufgabe 3.1
Wir vergleichen die Ausgabe der beiden Programme, wenn wir 6 Dezimalstellen ausgeben lassen. Dabei erkennt man, dass sich das Ergebnis für die Standardabweichung unterscheidet.
Ergebnis mit der for
-Schleife:
Mittelwert: <T> = 2.006000 s
Standardabweichung: sigma = 0.034383 s
Mittlerer Fehler: Delta T = 0.010873 s
Ergebnis mit NumPy:
Mittelwert: <T> = 2.006000 s
Standardabweichung: sigma = 0.032619 s
Mittlerer Fehler: Delta T = 0.010315 s
Ein manuelles Nachrechnen mit der Gleichung
\[ \sigma = \sqrt{\frac{1}{n-1}\sum\limits_{i=1}^n
\big( x_i - \langle x \rangle \big)^2}
\]
zeigt, dass das Ergebnis der Rechnung mit der for
-Schleife
korrekt ist und das Ergebnis von Numpy um einen Faktor \[
\sqrt{\frac{n-1}{n}} = \sqrt{\frac{9}{10}} = 0.9486833 \] vom korrekten Wert
abweicht.
Groessen/Loesungen/standardabweichung_mod.py
"""Berechnung des Mittelwerts, der Standardabweichung und des
mittleren Fehlers des Mittelwertes.
Modifzierte Version, die viele Dezimalstellen ausgibt. """
import math
import numpy as np
# Gemessene Schwingungsdauern [s].
T = np.array([2.05, 1.99, 2.06, 1.97, 2.01,
2.00, 2.03, 1.97, 2.02, 1.96])
# Anzahl der Messwerte.
n = T.size
# Berechne den Mittelwert.
mittel = 0
for x in T:
mittel += x
mittel /= n
# Berechne die Standardabweichung.
sigma = 0
for x in T:
sigma += (x - mittel) ** 2
sigma = math.sqrt(sigma / (n - 1))
# Berechne den mittleren Fehler des Mittelwertes.
delta_T = sigma / math.sqrt(n)
print(f'Mittelwert: = {mittel:.6f} s')
print(f'Standardabweichung: sigma = {sigma:.6f} s' )
print(f'Mittlerer Fehler: Delta T = {delta_T:.6f} s')
Groessen/Loesungen/standardabweichung_numpy_mod.py
"""Berechnung des Mittelwerts, der Standardabweichung und des
mittleren Fehlers des Mittelwertes mithilfe von numpy.
Modifzierte Version, die viele Dezimalstellen ausgibt. """
import math
import numpy as np
# Gemessene Schwingungsdauern [s].
T = np.array([2.05, 1.99, 2.06, 1.97, 2.01,
2.00, 2.03, 1.97, 2.02, 1.96])
# Berechne die drei gesuchten Kenngrößen.
mittel = np.mean(T)
sigma = np.std(T)
delta_T = sigma / math.sqrt(T.size)
print(f'Mittelwert: = {mittel:.6f} s')
print(f'Standardabweichung: sigma = {sigma:.6f} s' )
print(f'Mittlerer Fehler: Delta T = {delta_T:.6f} s')