Programmierkurs
für Naturwissenschaftler/innen

Kurzlösungen für die Übungen von Arrays

Mathematische Grundlage

Für $n$ Daten $x_1$, $x_2$, …, $x_n$ schreibt man den Mittelwert als $\bar{x}$, wobei \[ \bar{x} = \frac{1}{n}\sum_{i = 1}^n x_i \; . \]

Die Varianz $\sigma^2$ wird wie folgt berechnet. \[ \begin{align*} \sigma^2 & = \frac{1}{n} \sum_{i=1}^n \left(x_i - \bar{x} \right)^2 \\ & = \frac{1}{n} \sum_{i=1}^n x_i^2 - \left(\frac{1}{n} \sum_{i=1}^n x_i\right)^2 \\ & = \overline{x^2} - \bar{x}^2 \end{align*} \]

Die Funktion zur Ermittlung des Mittelwerts

Dies wird ungefähr folgendermaßen aussehen:

Beispielprogramm 1

def average(array):
    ave = 0        # Vergessen Sie nicht die Initialisierung
    for data in array:
        ave += data

    # Das Folgende kann auch als return ave / len(array)
    # zusammengeschrieben werden
    ave /= len(array)
    return ave

Beispielprogramm 2

Sie können auch wie folgt schreiben.

def average(array):
    ave = 0
    for i in range(len(array)):
        ave += array[i]

    # Das Folgende kann auch als return ave / len(array)
    # zusammengeschrieben werden
    ave /= len(array)
    return ave

Anmerkungen

  • Vergessen Sie nicht, die Variablen zu initialisieren.

  • Sie können die Anzahl der Elemente in einem Array mit len() ermitteln.

  • Die letzten beiden Zeilen können auch zusammen als return ave / len(array) geschrieben werden. In diesem Fall ist ave jedoch nicht das, was es wirklich bedeutet. (tatsächlich enthält das endgültige ave den Mittelwert multipliziert mit n). Es ist also besser, den Variablennamen von ave in z. B. n_ave zu ändern (was $n$ mal den Mittelwert bedeutet).

Für das Beispielprogramm 2 sind außerdem folgende Punkte zu beachten:

  • Beachten Sie, dass die Array-Indizes bei 0 beginnen.

  • Achten Sie genau auf die Schleifenbedingung in for-Schleife.

Funktion zur Ermittlung der Varianz

Je nachdem, welche Formel Sie verwenden, variiert dies geringfügig, aber im Allgemeinen sieht es etwa so aus.

def variance(array):
    var = 0
    ave = average(array)

    for data in array:
        var += (data - ave) * (data - ave)

    var /= len(array)
    return var

Anmerkungen

  • Der Quadrat kann geschrieben werden als (arr[i] - ave) ** 2.

Überprüfung der Zahlen

Um den Mittelwert und die Varianz anhand der in der Aufgabe angegebenen Daten darzustellen, kann man zum Beispiel wie folgt schreiben.

data = [71, 80, 89]
print(average(data), variance(data))

In diesem Fall sollten die Werte als

80.0 54.0

angezeigt werden.