Table of Contents

Einstiegsaufgaben mit Excel

Speichern Sie Ihre Übungen entweder auf dem Laufwerk H:\ oder auf OneDrive.

Die Prüfung wird wieder OpenBook sein.

Lernziele:

  • Zellinhalte effizient kopieren.
    • Formeln
    • Arithmetische Folgen fortsetzen
  • Zellbezüge als relative Bezüge begreifen.
  • Zellen mit Namen versehen und als Variablen in Formeln verwenden.
  • Ganzzahlige Zufallszahlen erzeugen.

Exponentielles Wachstum

Wir werden exponentielles Wachstum am Beispiel von Corona-Fällen «simulieren». Das mathematische Modell dahinter ist natürlich viel zu simpel um brauchbare Prognosen zu liefern.

Einfachste Variante

In der einfachsten Variante werden wir den Wachstumsfaktor fix einprogrammieren. Schauen Sie sich dazu folgendes Video an und bauen Sie die Simulation nach. Oder auf Sharepoint.

Variante 2: mit Namen für Zellen

Der wöchentliche Wachstumsfaktor soll auch nachträglich einfach verändert werden können. Dazu vergeben wir der Zelle, die den Faktor enthält, einen Namen. Hier gibt es das Video dazu, oder auch auf Sharepoint.

Würfelsummen

2 Würfel, mit Histogram

Bauen Sie die Simulation der Summe zweier Würfel nach, inklusive Histogramm. Die Anleitung dazu gibt es als Video, auch auf Sharepoint.

Hinweis: Die neuen Versionen von Excel sollten nun endlich auch Histogramme zeichnen können. Finden Sie heraus wie?

4 Würfel

Bauen Sie die Simulation mit 2 Würfeln auf die Summe von 4 Würfeln aus (verändern Sie obige Simulation mit möglichst wenig Aufwand).

Realistischere Epidemie-Simulation (optional, für Fortgeschrittene)

Ich bin überhaupt kein Experte, was die Simulation von Epidemien angeht. Ich habe folgende Annahmen getroffen:

Mit Python

Anstatt eine Tabellenkalkulation kann auch die Simulation in einer Programmiersprache programmiert werden. Die Daten werden dabei vorteilhaft als CSV-Datei ausgegeben, die dann mit einer Tabellenkalkulation noch grafisch dargestellt werden kann.

Testen und studieren Sie folgenden Python-Programme (herunterladen mit «Rechtsklick, Link speichern untern…», und dann auf der Kommandozeile ausführen, z.B. mit python exp.py).

Öffnen/Importieren Sie die 'csv'-Ausgabedateien jeweils in Excel und zeigen Sie sie in einer geeigneten Tabelle an.

Zur Installtion der git-bash und der nötigen Einträge in die Datei ~/.bashrc gibt es jetzt ein PowerShell Script, das alles automatisiert.

Exponentielles Wachstum

exp.py
# Parameter festelegen
startwert = 1180
wachstumsfaktor = 1.18
 
 
# Aktueller Wert
wert = startwert
# Kopfzeile der Tabelle
csv = "Zeit;Wert\n"
 
# Simulation
for zeit in range(11):
    csv += f"{zeit};{wert}\n"  # CSV erweitern
    # Nächsten Wert berechnen
    wert *= wachstumsfaktor      # Kurzschreibweise für wert = wert * wachstumsfaktor
 
 
# CSV-Datei schreiben
with open("exp.csv", "w") as f:
    f.write(csv)
 
 
print(csv)

Würfelsummen

wuerfelsummen.py
from random import randrange
 
wiederholungen = 1000
anzahlwuerfel = 2
 
# Liste mit Nullen gefüllt, der Länge anzahlwuerfel*6+1  (das Plus 1 ist nötig, weil die Inidizies bei Null beginnen)
summen = [0 for i in range(anzahlwuerfel*6+1)]
 
for i in range(wiederholungen):
    summe = 0
    for j in range(anzahlwuerfel):
        summe += randrange(1,7)
    summen[summe] += 1
 
# Inhalt der CSV-Datei erstellen
csv = "Summe;Anzahl\n"
for summe in range(anzahlwuerfel, anzahlwuerfel*6+1):
    csv += f"{summe};{summen[summe]}\n"
 
# CSV-Datei schreiben
with open("wuerfelsumme.csv", "w") as f:
    f.write(csv)
 
print(csv)

Epidemie-Simulation

epidemie.py
# Parameter 
 
startpop = 4000000   # Potentiell Ansteckbare
rwert = 1.2          # Anzahl Personen, die eine Infizierte Person im Schnitt ansteckt
immun = 0            # Anzahl immune Personen
 
# Zeitliche Parameter (an welchen Tagen nach der Ansteckung was passiert)
ansteckungstart = 4
ansteckungende = 8
immunitaet = 14
 
# status[0] ist die Anzahl der heute Angesteckten,
# status[n] ist die Anzahl der vor n Tagen Angesteckten
# Erst mal alles mit dem Start der täglich infizierten füllen: 
status = [100 for i in range(immunitaet+1)]
 
 
pop = startpop-sum(status)  # Zur zeit noch ansteckbare
 
csv = "Tag;Ansteckbare;Neuansteckungen;Immune\n"
tag = 0
while status[0]>50 or tag<50:  # Wiederholen, so lange sich mehr als 50 Leute pro Tag anstecken (aber mindestend 50 Tage)
    csv += f"{tag};{pop};{status[0]};{immun}\n"
 
    tag += 1
 
    # Ein Tag weiter (Einträge verschieben)
    immun += status.pop()   # Letztes Element entfernen und den Immunen hinzufügen
 
    ansteckend = sum(status[ansteckungstart:ansteckungende])   # Anzahl ansteckende ermitteln
    # Neuinfizierte berechnen
    neuinfiziert = ansteckend*rwert/(ansteckungende-ansteckungstart)*pop/startpop
    # Vorne in Liste einfügen
    status.insert(0, neuinfiziert)
 
    # Ansteckbare vermindern
    pop -= neuinfiziert
 
 
with open("epidemie.csv", "w") as f:
    f.write(csv)
 
print("CSV Datei geschrieben, die kann nun mit Excel geöffnet werden.")