lehrkraefte:blc:math-2021hw:pi-wuerfeln-mit-python

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
lehrkraefte:blc:math-2021hw:pi-wuerfeln-mit-python [2024/10/30 08:18] Ivo Blöchligerlehrkraefte:blc:math-2021hw:pi-wuerfeln-mit-python [2024/10/30 08:40] (current) Ivo Blöchliger
Line 1: Line 1:
 +====== $\pi$ würfeln ======
 +Idee: Man wählt wiederholt zufällig einen Punkt $P$ im Einheitsquadrat (achsenparalleles Quadrat mit Ecken $(0,0)$ und $(1,1)$).
 +
 +Man zählt, wie oft der Punkt im Einheitskreis liegt. Der erwartete Anteil entspricht dem Flächenverhältnis zwischen Viertelkreis und Quadrat, also $\frac{\pi}{4}$.
 +
 +WebTigerPython: https://webtigerpython.ethz.ch/
 +
 +===== Ein Punkt =====
 +
 +<code python>
 +from random import random
 +
 +def punkt():
 +    x = random()
 +    y = random()
 +    if ........   # Punkt im Kreis?
 +        return 1  # Resultat ist 1
 +    return 0      # Resultat ist 0
 +
 +# Test-Code
 +for i in range(20):
 +    print(f"Test {i}: {punkt()}")
 +</code>
 +
 +
 +===== $n$ Punkte =====
 +
 +<code python>
 +def experiment(n):
 +    summe = 0
 +    for i in range(n):
 +        summe += punkt()
 +    # Mittelwert
 +    xbar = summe/n
 +    # Standardabweichung
 +    s = (1/(n-1)*(summe*(1-xbar)**2 + (n-summe)*xbar**2))**0.5
 +    return [xbar, s]
 +
 +# Test-Code    
 +print(experiment(1000))
 +</code>
 +
 +
 +
 +===== 95% Vertrauensintervall =====
 +<code python>
 +def intervall(n):
 +    e = experiment(n)
 +    etwapi = e[0]*4
 +    s = e[1]*4
 +    sbar = s/(n**0.5)
 +    return [etwapi - 2*sbar, etwapi + 2*sbar]
 +    
 +# Test-Code    
 +for i in range(10):
 +    print(intervall(100))
 +</code>
 +    
 +
 +===== Intervalle testen =====
 +<code python>
 +import math
 +def vertrauensfrage(n,k):
 +    ok = 0
 +    for i in range(k):
 +        bereich = intervall(n)
 +        if (math.pi>bereich[0] and math.pi<bereich[1]):
 +            ok += 1
 +    return ok/k
 +   
 +# Test-Code
 +print(vertrauensfrage(100,1000))
 +</code>
 +
 +===== Vertrauensintervall für die Vertrauensintervallswahrscheinlichkeitsabschätzung =====
 +In der Funktion ''vertrauensfrage'' berechnen Sie die Standardabweichung der Schätzung des Anteils und damit ein Vetrauensintervall.
 +
 +Wie verhält sich das Intervall für kleine $n$? Siehe auch Tabelle einiger t-Quantile: https://de.wikipedia.org/wiki/Studentsche_t-Verteilung