lehrkraefte:blc:informatik:glf4-23:intro-spreadsheet

Differences

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

Link to this comparison view

Next revision
Previous revision
lehrkraefte:blc:informatik:glf4-23:intro-spreadsheet [2023/03/23 10:06]
Ivo Blöchliger created
lehrkraefte:blc:informatik:glf4-23:intro-spreadsheet [2024/03/28 09:28] (current)
Ivo Blöchliger [Mit Python]
Line 1: Line 1:
 ====== Einstiegsaufgaben mit Excel ====== ====== Einstiegsaufgaben mit Excel ======
 +<WRAP important>
 +Speichern Sie Ihre Übungen entweder auf dem Laufwerk H:\ oder auf OneDrive.
 +
 +Die Prüfung wird wieder OpenBook sein.
 +</WRAP>
 +
 <WRAP info> <WRAP info>
 Lernziele: Lernziele:
Line 12: Line 18:
 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. 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 ==== ==== Einfachste Variante ====
-In der einfachsten Variante werden wir den Wachstumsfaktor fix einprogrammieren. Schauen Sie sich dazu folgendes [[https://fginfo.ksbg.ch/~ivo/videos/informatik/excel/tabellenkalkulation-simulation-corona-1.mp4|Video]] an und bauen Sie die Simulation nach. Oder auf [[https://web.microsoftstream.com/video/737f950c-32cb-4d2a-b240-cc24a5493d7d|Stream]].+In der einfachsten Variante werden wir den Wachstumsfaktor fix einprogrammieren. Schauen Sie sich dazu folgendes [[https://fginfo.ksbg.ch/~ivo/videos/informatik/excel/tabellenkalkulation-simulation-corona-1.mp4|Video]] an und bauen Sie die Simulation nach. Oder auf [[https://bldsg-my.sharepoint.com/:v:/g/personal/ivo_bloechliger_ksbg_ch/EU0mB7PnGL5Lnadw_QXZx6UBwo7TuwaKiXIUeuIoL2cOog?nav=eyJyZWZlcnJhbEluZm8iOnsicmVmZXJyYWxBcHAiOiJPbmVEcml2ZUZvckJ1c2luZXNzIiwicmVmZXJyYWxBcHBQbGF0Zm9ybSI6IldlYiIsInJlZmVycmFsTW9kZSI6InZpZXciLCJyZWZlcnJhbFZpZXciOiJNeUZpbGVzTGlua0NvcHkifX0&e=VLpp6P|Sharepoint]].
  
 ==== Variante 2: mit Namen für Zellen ==== ==== 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. 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 [[https://fginfo.ksbg.ch/~ivo/videos/informatik/excel/tabellenkalkulation-simulation-corona-2.mp4|Video]] dazu, oder auch auf [[https://web.microsoftstream.com/video/299b3908-4d33-4057-bf0b-9e2a079cbb82|Stream]].+Hier gibt es das [[https://fginfo.ksbg.ch/~ivo/videos/informatik/excel/tabellenkalkulation-simulation-corona-2.mp4|Video]] dazu, oder auch auf [[https://bldsg-my.sharepoint.com/:v:/g/personal/ivo_bloechliger_ksbg_ch/Ebj0FrGKgCZLl3S6idfqeFsBwt1-qjO8KNaN7TvgJGGycg?nav=eyJyZWZlcnJhbEluZm8iOnsicmVmZXJyYWxBcHAiOiJPbmVEcml2ZUZvckJ1c2luZXNzIiwicmVmZXJyYWxBcHBQbGF0Zm9ybSI6IldlYiIsInJlZmVycmFsTW9kZSI6InZpZXciLCJyZWZlcnJhbFZpZXciOiJNeUZpbGVzTGlua0NvcHkifX0&e=uUSnNi|Sharepoint]].
  
  
 ===== Würfelsummen ===== ===== Würfelsummen =====
 ==== 2 Würfel, mit Histogram ==== ==== 2 Würfel, mit Histogram ====
-Bauen Sie die Simulation der Summe zweier Würfel nach, inklusive Histogramm. Die Anleitung dazu gibt es als [[https://fginfo.ksbg.ch/~ivo/videos/informatik/excel/tabellenkalkulation-simulation-summe-zwier-wuerfel-historgramm.mp4|Video]], auch auf [[https://web.microsoftstream.com/video/6c9a97e3-c5a4-4e13-af86-ea48bb6641ad|Stream]].+Bauen Sie die Simulation der Summe zweier Würfel nach, inklusive Histogramm. Die Anleitung dazu gibt es als [[https://fginfo.ksbg.ch/~ivo/videos/informatik/excel/tabellenkalkulation-simulation-summe-zwier-wuerfel-historgramm.mp4|Video]], auch auf [[https://bldsg-my.sharepoint.com/:v:/g/personal/ivo_bloechliger_ksbg_ch/EeZ2SCicKqlApWGSPVTD6gABXWyhLOUM63smHtZDS4_lXg?nav=eyJyZWZlcnJhbEluZm8iOnsicmVmZXJyYWxBcHAiOiJPbmVEcml2ZUZvckJ1c2luZXNzIiwicmVmZXJyYWxBcHBQbGF0Zm9ybSI6IldlYiIsInJlZmVycmFsTW9kZSI6InZpZXciLCJyZWZlcnJhbFZpZXciOiJNeUZpbGVzTGlua0NvcHkifX0&e=bB21Hd|Sharepoint]].
  
 +//Hinweis//: Die neuen Versionen von Excel sollten nun endlich auch Histogramme zeichnen können. Finden Sie heraus wie?
  
 === 4 Würfel === === 4 Würfel ===
Line 31: Line 38:
  
 ===== Realistischere Epidemie-Simulation (optional, für Fortgeschrittene) ===== ===== Realistischere Epidemie-Simulation (optional, für Fortgeschrittene) =====
 +Ich bin überhaupt kein Experte, was die Simulation von Epidemien angeht. Ich habe folgende Annahmen getroffen:
   * Man geht von einer Anfangspopulation aus, die überhaupt am Infektionsgeschehen teilnehmen könnte. Diese Population wird im Laufe der Epidemie kleiner, weil mehr Menschen immun werden.   * Man geht von einer Anfangspopulation aus, die überhaupt am Infektionsgeschehen teilnehmen könnte. Diese Population wird im Laufe der Epidemie kleiner, weil mehr Menschen immun werden.
-  * Der R-Wert (wie viele Personen eine infizierte Person im Durchschnitt ansteckt) nimmt proportional zur verbleibenden Population ab, die noch angesteckt werden kann.+  * Der R-Wert (wie viele Personen eine infizierte Person im Durchschnitt ansteckt) nimmt proportional zur verbleibenden Population ab, die noch angesteckt werden kann (vgl. https://de.wikipedia.org/wiki/Basisreproduktionszahl#Nettoreproduktionszahl).
   * Man verfolgt den Infektionsverlauf und notiert sich für jeden Tag, wie viele Menschen gerade heute, gestern etc. angesteckt wurden. Wir können annehmen, dass die Personen zwischen dem 3. und 7. Tag nach der Infektion ansteckend sind. Die Gesamtheit dieser vier Personengruppe mal den R-Wert geteilt durch vier ergibt die Neuinfizierten für den nächsten Tag. Wobei der R-Wert der noch verbleibenden "ansteckbaren" Population angepasst werden muss.   * Man verfolgt den Infektionsverlauf und notiert sich für jeden Tag, wie viele Menschen gerade heute, gestern etc. angesteckt wurden. Wir können annehmen, dass die Personen zwischen dem 3. und 7. Tag nach der Infektion ansteckend sind. Die Gesamtheit dieser vier Personengruppe mal den R-Wert geteilt durch vier ergibt die Neuinfizierten für den nächsten Tag. Wobei der R-Wert der noch verbleibenden "ansteckbaren" Population angepasst werden muss.
-  * Schauen Sie sich dabei den Anfang von folgendem [[https://fginfo.ksbg.ch/~ivo/videos/informatik/excel/tabellenkalkulation-simulation-epidemie-kompliziert.mp4|Video]] an und pausieren Sie, um selbst die Simulation zu vervollständigen. Auch auf [[https://web.microsoftstream.com/video/043292a1-3bb2-46f9-b8cc-2d229bab633a|Stream]].+  * Schauen Sie sich dabei den Anfang von folgendem [[https://fginfo.ksbg.ch/~ivo/videos/informatik/excel/tabellenkalkulation-simulation-epidemie-kompliziert.mp4|Video]] an und pausieren Sie, um selbst die Simulation zu vervollständigen. Auch auf [[https://bldsg-my.sharepoint.com/:v:/g/personal/ivo_bloechliger_ksbg_ch/EZ33013hSEJPiTxAugxQ9MsBKawPNwAnvwt37SEBkZHJFQ?nav=eyJyZWZlcnJhbEluZm8iOnsicmVmZXJyYWxBcHAiOiJPbmVEcml2ZUZvckJ1c2luZXNzIiwicmVmZXJyYWxBcHBQbGF0Zm9ybSI6IldlYiIsInJlZmVycmFsTW9kZSI6InZpZXciLCJyZWZlcnJhbFZpZXciOiJNeUZpbGVzTGlua0NvcHkifX0&e=eSiJCa|SharePoint]]. 
 + 
 + 
 +====== 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 [[lehrkraefte:blc:informatik:glf4-24:bash-install#automatisches_setup|PowerShell Script, das alles automatisiert]]. 
 +===== Exponentielles Wachstum ===== 
 + 
 +<code python 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) 
 +</code> 
 + 
 +===== Würfelsummen ===== 
 +<code python 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) 
 +</code> 
 + 
 +===== Epidemie-Simulation ===== 
 + 
 +<code python 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."
 +</code> 
 + 
  
  • lehrkraefte/blc/informatik/glf4-23/intro-spreadsheet.1679562400.txt.gz
  • Last modified: 2023/03/23 10:06
  • by Ivo Blöchliger