Aufgaben

Lösung zu Aufgabe 4.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.

Download    Groessen/Loesungen/standardabweichung_mod.py

"""Berechnung von Fehlergrößen.

Das Programm berechnet den Mittelwert, die Standardabweichung
und den Fehler des Mittelwertes, indem die entsprechenden
Definitionen mithilfe von for-Schleifen implementiert werden.

Das Programm wurde so modifiziert, dass eine größere Anzahl
von Dezimalstellen ausgegeben wird.
"""

import math
import numpy as np

# Gemessene Schwingungsdauern [s].
messwerte = 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 = messwerte.size

# Berechne den Mittelwert.
mittelwert = 0
for x in messwerte:
    mittelwert += x
mittelwert /= n

# Berechne die Standardabweichung.
standardabw = 0
for x in messwerte:
    standardabw += (x - mittelwert) ** 2
standardabw = math.sqrt(standardabw / (n - 1))

# Berechne den mittleren Fehler des Mittelwertes.
fehler = standardabw / math.sqrt(n)

print(f'Mittelwert:             = {mittelwert:.6f} s')
print(f'Standardabweichung:  sigma = {standardabw:.6f} s')
print(f'Mittlerer Fehler:  Delta T = {fehler:.6f} s')

Download    Groessen/Loesungen/standardabweichung_numpy_mod.py

"""Berechnung von Fehlergrößen mithilfe von NumPy.

Das Programm berechnet den Mittelwert, die Standardabweichung
und den Fehler des Mittelwertes mithilfe der entsprechenden
NumPy-Funktionen für eine vorgegebene Reihe von Messdaten.

Das Programm wurde so modifiziert, dass eine größere Anzahl
von Dezimalstellen ausgegeben wird.
"""

import math
import numpy as np

# Gemessene Schwingungsdauern [s].
messwerte = 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.
mittelwert = np.mean(messwerte)
standardabw = np.std(messwerte)
fehler = standardabw / math.sqrt(messwerte.size)

print(f'Mittelwert:             = {mittelwert:.6f} s')
print(f'Standardabweichung:  sigma = {standardabw:.6f} s')
print(f'Mittlerer Fehler:  Delta T = {fehler:.6f} s')