Zufallsexperimente ohne Zurücklegen mit DERIVE

Werbung
MAIN
Experimente mit „Zufallspermutationen“ in DERIVE
Franz Schlöglhofer, Universität Linz, Pädagogische Akademie des Bundes Linz
In DERIVE können durch die Anweisung RANDOM Pseudo-Zufallszahlen erzeugt werden. Damit ist
es möglich, Simulationen von Zufallsexperimenten durchzuführen. Die einfache Verwendung von
RANDOM entspricht einem Zufallsexperiment „mit Zurücklegen“. Ein Beispiel dafür ist das Würfeln
mit einem Würfel.
Diese Form eines Zufallsexperiments ist sehr verbreitet und wird auch oft beschrieben (etwa [Klingen
L.,1995], [Kayser H.,1997]).
Zufallsexperimente „ohne Zurücklegen“ können mit „zufällig“ erzeugten Permutationen simuliert
werden. Mit der Programmierfähigkeit ab Version DERIVE 5 kann man dafür Hilfsprogramme
erstellen. Im Folgenden werden einige solcher Programme beschrieben und in Simulationen
eingesetzt. Der Vorteil der Simulation ist, dass nicht in jedem Fall schwierige kombinatorische
Überlegungen angewendet werden müssen. Oft sind allerdings größere Rechenzeiten erforderlich.
Außerdem erhält man durch die Simulationen anstelle von Erwartungswerten relative Häufigkeiten
und anstelle von Erwartungswerten Mittelwerte.
Die vorliegenden Beispiele zum Unterricht der Wahrscheinlichkeitsrechnung entstanden in
Diskussionen mit Kollegen Schoberleitner von der Universität Linz, wofür ich ihm sehr danken
möchte.
Die DERIVE-Anweisung RANDOM(n)
Bei jedem Aufruf liefert RANDOM(n) mit n∈Ν und n>1 zufällig eine der Zahlen {0, 1, 2, 3, .., n-1},
RANDOM(6) liefert eine der Zahlen {0, 1, 2, 3, 4, 5}.
Ein Zufallsexperiment, bei dem 20 mal mit einem Würfel mit den Seitenbezeichnungen 1,2,...,6
gewürfelt wird, könnte folgendermaßen durchgeführt werden:
Die Addition von 1 bei der Berechnung der Zufallszahlen bewirkt, dass man als mögliche Ergebnisse
1,2,3,4,5,6 (statt 0,1,2,3,4,5) erhält. Mit vector werden die so erzeugten Zahlen in einem Vektor
gespeichert.
Vor dem Beginn der Simulationen sollte die Anweisung RANDOM(0) eingegeben und vereinfacht
werden, damit bei jedem Neustart mit neuen Zufallszahlen begonnen wird.
Zufallspermutationen
Mit der selbst geschriebenen Anweisung rperm(n,a) kann man die Erzeugung von
Zufallspermutationen simulieren. Das Verfahren beruht auf der Verwendung von RANDOM auf der
Grundlage eines einfachen Algorithmus in [Engel A., 1991].
1
MAIN
Beispielsweise werden durch rperm(10,10) in Zeile #7 bis #10 die Zahlen 1,2,...,10 zufällig
angeordnet. Mit rperm(45,6) werden 6 Zahlen aus 1,2,3,...,45 zufällig ausgewählt und auch zufällig
angeordnet Zeile #11 bis #13. Der so gebildete Vektor kann mit der DERIVE-Anweisung SORT
sortiert werden Zeile #14 bis #16.
In rperm wird zunächst ein geordneter Vektor [1,2,3,...n] gebildet. Die Elemente dieses Vektors
werden dann anschließend mit RANDOM ausgewählt, in diesem Vektor gelöscht und einem weiteren
Vektor angefügt.
Übereinstimmungen in zwei Vektoren
Eine weitere für die Simulationen wichtige Aufgabe ist die Ermittlung von Übereinstimmungen in
zwei Permutationen. Mit der Anweisung vinv(u,v) kann diese Anzahl ermittelt werden.
Die Anwendung von vinv ergibt hier 2 bzw. 0 Übereinstimmungen.
2
MAIN
Häufigkeitsverteilung
Mit dem Aufruf f_dist(v) kann eine Häufigkeitsverteilung von in einem Vektor gespeicherten
ganzzahligen Werten erzeugt werden.
Als Beispiel werden hier 1000 Lotto-Ziehungen durchgeführt und das Ergebnis jeweils mit einem
selbst gewählten Tipp verglichen. Aufgrund des Aufbaus von f_dist werden im Ergebnis die Ausfälle
des Experiments nur vom Minimum bis zum Maximum der vorkommenden Werte berücksichtigt.
Fünfmalige bzw. sechsmalige Übereinstimmung sind hier nicht aufgetreten, daher auch in der
Häufigkeitsverteilung nicht vertreten..
Mit einer etwas abgewandelten Form der Häufigkeitsverteilung können die Grenzen für den Vektor
eingegeben werden. Ein neuerlicher Durchlauf lieferte die Werte:
Wenn im Unterricht die hypergeometrische Verteilung behandelt wurde, so könnten auch die
entsprechenden Wahrscheinlichkeiten für 0 bis 6 richtige Tipps berechnet werden und mit den
Ergebnissen der Simulation verglichen werden:
3
MAIN
Für den Unterricht besteht eine Variante noch im Ziehen von drei Zahlen aus zehn. In diesem Fall
findet man für die Berechnung der Wahrscheinlichkeiten das Auslangen mit Überlegungen anhand
eines Baumdiagramms.
Im Folgenden werden noch die Ergebnisse einer Simulation und die Berechnung der
Wahrscheinlichkeiten für 3 aus 10 dargestellt.
Anhand der nächsten Aufgaben werden weitere DERIVE-Anweisungen beschrieben, die für
Simulationen verwendet werden können:
Fehlersuche
Von einer Lieferung von 50 Geräten weiß man, dass 12 defekt sind. Zur Untersuchung der Lieferung
werden zufällig 4 Geräte herausgegriffen. Mit welcher Wahrscheinlichkeit erhält man kein einziges
defektes Gerät? [Kütting, S. 183]
Für die Simulation werden zwei Auswahlen getroffen. Einmal werden aus den 50 Geräten 12 zufällig
ausgewählt (defekte Geräte) und dann 4 Geräte (untersuchte Geräte). Dafür wird zweimal ein Vektor
mit rperm erzeugt.
Anschließend ermittelt man mit vinv die Anzahl der Übereinstimmungen. Bei der folgenden
zweimaligen Durchführung gab es 0 bzw. 2 Übereinstimmungen.
Mit VECTOR werden nun bei zwanzigmaliger Ausführung die Anzahlen der Übereinstimmungen
zusammengefasst.
4
MAIN
Mit der DERIVE-Anweisung select können wir die Ergebnisse „kein defektes Geräte wurde
gefunden“ zusammenfassen.
Durch select(Bedingung, Variable, Vektor) können die Werte eines Vektors, die einer bestimmten
Bedingung genügen, zu einem neuen Vektor zusammengefasst werden.
Die Anzahl der Ergebnisse mit 0 Übereinstimmungen kann nun mit der DERIVE-Anweisung DIM
ermittelt werden. Der Versuch wurde 1000-mal durchgeführt. Es ergab sich die relative Häufigkeit
0,327, dass keine Übereinstimmung aufgetreten ist.
Die Berechnung der Wahrscheinlichkeit erfolgt über die hypergeometrische Verteilung:
Durch Änderung der SELECT-Anweisung können mit der Simulation leicht Aussagen über das
Auffinden von 1, 2, 3 oder 4 defekten Geräten gemacht werden. In der folgenden Simulation wird
näherungsweise die Wahrscheinlichkeit für den Fall ermittelt, dass höchstens zwei defekte Geräte
gefunden werden. Neben der Simulation wird hier auch die Berechnung der Wahrscheinlichkeit
gezeigt. Die relative Häufigkeit 973/1000 ist in guter Näherung zur berechneten Wahrscheinlichkeit.
Wer beschenkt sich selbst?
Zu einer gemeinsamen Feier bringt jeder Teilnehmer ein Geschenk mit. Die Geschenke werden
zufällig in der Gruppe verteilt, wobei jeder ein Geschenk erhält. Wie viele der Teilnehmer werden sich
bei so einer Feier im Mittel selbst beschenken?
Wir führen dieses Zufallsexperiment zunächst für eine Gruppe von 20 Personen aus.
Die Anweisung vector(i,i,1,20) erzeugt den Vektor [1,2,3,...20], also eine geordnete Liste der
Teilnehmer. Mit rperm(20, 20) erhält man eine Zufallspermutation. Dies entspricht einer zufälligen
Verteilung der Geschenke auf die 20 Teilnehmer.
Um die Anzahl der Übereinstimmungen in den beiden Vektoren zu ermitteln (Anzahl der Personen,
die sich selbst beschenken) subtrahiert man die beiden Vektoren. Eine Stelle mit dem Wert 0 bedeutet
im Differenzvektor, dass der Teilnehmer sich selbst beschenkt hat.
Ein dreimaliger Versuch hat hier keine, eine bzw. drei Übereinstimmungen gebracht.
5
MAIN
Um diesen Zufallsversuch mehrfach auszuführen, wird mit der Anweisung DIM die Anzahl der
Übereinstimmungen berechnet. Diese Anzahlen werden durch VECTOR zu einem neuen Vektor
zusammengefasst.
Bei hundertmaliger Durchführung haben sich die folgenden Anzahlen von Übereinstimmungen
ergeben:
Zur Berechnung des Mittelwerts der Anzahl der Übereinstimmungen kann der folgende
Funktionsaufruf mue(v) auf den berechneten Vektor angewendet werden:
Die folgenden Berechnungen wurden für eine Gruppengröße von 20, 10 bzw. 50 Personen ausgeführt.
Interessanterweise erhält man jedesmal (ab einer gewissen Gruppengröße) den Mittelwert in der
Größenordung 1 unabhängig von der Anzahl der Teilnehmer.
Die Berechnung der Wahrscheinlichkeit ist hier wesentlich schwieriger als die Simulation. Es ergibt
sich (mit dem Grenzwert der Gruppengröße nach unendlich) der Erwartungswert 1.
6
MAIN
Fehlerhafte Medikamentenausgabe eines Apothekers
Ein Apotheker gibt Medikamente an 100 Personen aus. Später bemerkt er, dass er zwei Personen
(unabhängig voneinander) ein falsches Medikament gegeben hat. Es ist notwendig, beide ausfindig
machen. Wie viele der 100 Personen muss er im Mittel kontaktieren?
(Andere Möglichkeit: In 100 Dokumenten sucht man zwei Dokumente. Wie viele muss man im Mittel
durchsehen?)
In der Simulation ordnen wir den gesuchten Personen (ohne Beschränkung der Allgemeinheit) die
Nummern 1 und 2 in einer Zufallspermutation zu. Es geht jetzt nicht nur darum, Werte in einem
Vektor zu suchen, die einer bestimmten Bedingung genügen (Anweisung select), zusätzlich muss auch
deren Position ermittelt werden.
Zur Lösung dieser Aufgabe werden wir weitere programmierte Anweisungen kennenlernen..
Mit select_pos kann man Positionen in einem Vektor suchen, die einer bestimmten Bedingung
genügen, mit last_pos das letztmalige Eintreten einer Bedingung.
Die folgenden Beispiele zeigen die Verwendung von select_pos:
Zunächst werden im Vektor [1,6,3,2,7,5,4] die Positionen für die Bedingung x<4 gesucht (Stellen 1, 3
und 4), anschließend die Stellen, an denen die Zahlen kleiner als 3 sind, in einer Zufallspermutation
von den Zahlen 1 bis 100.
Aufbau der Anweisung select_pos:
Auf select_pos aufgebaut sind die Anweisungen first_pos und last_pos. Beim Aufruf müssen eine
Bedingung, eine Variable und ein Vektor angegeben werden. Man kann mit dieser Anweisung die
Stelle in einem Vektor finden, an der zum ersten (letzten) Mal eine Bedingung erfüllt ist.
7
MAIN
Nun suchen wir mit last_pos die letzte Stelle, an der sich die letzte der beiden Zahlen in einer
Zufallspermutation befindet. Bei 100 Personen war dies an den Stellen 81 bzw. 73.
Zur Wiederholung des Experiments kann aus den Ergebnissen von last_pos ein Vektor gebildet
werden und der Mittelwert berechnet werden. Ergebnisse sind in den Zeilen 29 bis 31.
(Als theoretisches Ergebnis für diese Aufgabe erhält man ca. 67,3)
Kartenspiele
Auch Wahrscheinlichkeitsaufgaben zu Kartenspielen lassen sich durch Simulation behandeln. Für das
„Durchmischen“ ist eine weitere Anweisung notwendig. Das Hilfsprogramm vperm(v,a) wirkt auf
einen bereits vorgegebenen Vektor v. Einerseits wird er durchmischt, andererseits werden die ersten a
Elemente des Vektors herausgegriffen.
Wir verwenden den folgenden Vektor v zur Simulation des Ziehens einer bestimmten Farbe. In diesem
Kartenspiel verwendet man 20 Karten in 4 verschiedenen Farben. Der Kartenwert wird nicht in die
Simulation einbezogen.
Der Aufruf vperm(v,5) hat in diesem Fall alle vier Farben gebracht, die Farbe 3 zweimal.
Die Anweisung vperm ist folgendermaßen aufgebaut:
8
MAIN
Mit den gegebenen Karten soll nun durch Simulation untersucht werden, welche Anzahl von Karten
der Farbe 1 man sich beim Ziehen von fünf Karten erwarten kann.
Durch DIM(SELECT(x=1,x,vperm(v,5))) wird die Anzahl der Karten mit der Farbe 1 gezählt. Bei
hundertmaliger Durchführung ergaben sich die folgenden Anzahlen:
Mit der bereits verwendeten Anweisung f_dist kann von diesem Vektor eine Häufigkeitsverteilung
erstellt werden. Hier wurde dies 10000mal durchgeführt.
Es ergab sich eine gute Übereinstimmung mit den Wahrscheinlichkeiten
Anzahl mit der Farbe 1
Wahrscheinlichkeit
0
0,21
1
0,44
2
0,29
3
0,067
4
0,0048
5
0,00006
Bildersuche
Ein Bogen (oder eine Mappe) enthält eine bestimmte Anzahl von Leerstellen, an denen ein Satz von
Bildern eingeklebt werden soll. Man kann aber nicht alle Bilder auf einmal erwerben, sondern man
kauft sie in geschlossenen Kleinpackungen, die nur wenige zufällig ausgewählte Bilder enthalten.
Welche Bilder man kauft, kann man erst nach der Öffnung erkennen.
Auf diese Art wird manchmal die Sammelleidenschaft von Kindern ausgenützt.
Besorgte Eltern könnten sich fragen, wie viele Packungen sie kaufen müssen, damit so ein ganzer
Bogen voll wird.
Während einige der bisherigen Aufgaben auch mit theoretischen Berechnungen in der
Wahrscheinlichkeitsrechnung gelöst werden konnten, sind Aussagen zu dieser Frage praktisch nur mit
der Simulation möglich. In den folgenden Beispielen wird dieses Problem auf verschiedenen Ebenen
behandelt.
Zufällige Auswahl der Bilder
Wir setzen voraus, dass die Bilder in den Kleinpackungen zufällig ausgewählt sind. Zur Simulation
dieser Auswahl der Bilder in einer Packung verwenden wir die Anweisung v01(n,a). Durch diese
Anweisung wird ein Vektor mit n Zahlen erzeugt. An zufällig ausgewählten a Stellen wird im Vektor
1 gesetzt, sonst 0. Durch v01(10,3) wird in einem Vektor mit 10 Elementen dreimal die Zahl 1 gesetzt.
9
MAIN
Simulation des „Bildereinklebens“
Wir verwenden die DERIVE-Anweisung ITERATES.
Beim Start wird für w der Nullvektor VECTOR(0,i,1,10) gesetzt (es sind noch keine Bilder
eingeklebt).
Anschließend wird zum Vektor w bei jedem Durchgang der Vektor v01(10,3) addiert und wieder auf
w gespeichert. Jedesmal kommen drei Bilder dazu. Bald wird man auch Bilder mehrfach haben. Im
folgenden Versuch fehlen nach siebenmaliger Durchführung noch 2 Bilder, ein Bild wurde bereits
fünfmal gekauft.
Wird statt ITERATES nun ITERATE verwendet, so wird nur die letzte Zeile ausgegeben.
Schon mit diesem einfachen Aufbau können Schüler bereits einige Beobachtungen machen, etwa
Vermutungen aufstellen, wie lange es bis zum vollständigen Satz dauern kann bzw. wie die Verteilung
auf die einzelnen Bilder ist (z.B. maximale Anzahl).
Ein Funktionsaufruf für die Simulation
Wenn man den Vorgang für verschiedene Anzahlen simulieren möchte, so kann man den folgenden
Funktionsaufruf samm(n,a,k) verwenden
10
MAIN
Ist man nur an der Anzahl der fehlenden Bilder interessiert, so sucht man mit der Anweisung SELECT
die Stellen im Vektor mit dem Wert 0 und ermittelt anschließend ihre Anzahl mit DIM.
Wie viele Packungen muss man für einen gesamten Satz im Mittel kaufen?
Mit dem bisherigen Verfahren kann man eine bestimmte Anzahl von Durchgängen festlegen, aber den
Vorgang nicht mit der Bedingung abschließen, dass alle Bilder vorhanden sind, also der Satz
vollständig ist. Möchte man diese Anzahl ermitteln, so ist der Aufbau mit Hilfe eines kleinen
Programms günstig.
Der Aufruf samm2(n,a) hat eine ähnliche Struktur wie der obige Aufruf mit ITERATES. Mit
w:=w+v01(n,a) werden die Bilder in den Vektor w eingetragen. Bei jeder Wiederholung der
Eintragung wird die Zahl d als Anzahl der Stellen mit dem Wert 0 ermittelt. Wenn d=0
(Abbruchbedingung) wird die Schleife mit der Ausgabe der Anzahl der Schritte z beendet. An den
wenigen Ergebnissen könnte man vermuten, dass große Unterschiede in der Anzahl der notwendigen
Berechnungsschritte auftreten.
Will man die Anzahl der besetzten Stellen für den gesamten Vorgang aufzeichnen, so ist das
Programm samm3(n,a) dafür geeignet.
11
MAIN
Als Ergänzung ist hier noch durch sammplot die Möglichkeit gegeben, die Entwicklung der Anzahl
der besetzten Stellen tabellarisch oder graphisch darzustellen.
Die Graphik wurde für verschiedene Durchläufe angefertigt. Unterschiedliche Anzahlen zur
Erreichung des vollständigen Satzes (10 Bilder) waren notwendig.
.
Unterrichtsziele und Durchführung
Behandlung interessanter Aufgabenstellungen
Vielfach sind Aufgaben der Wahrscheinlichkeitsrechnung zwar interessant, aber wegen der
auftretenden kombinatorischen Probleme im Unterricht nicht leicht zugänglich. Auch wenn durch die
Methode der Simulation nur näherungsweise Lösungen möglich sind, kann man damit relativ
schwierige Aufgaben behandeln und Gefühl für stochastische Fragestellungen entwickeln.
12
MAIN
Vergleich der Simulation mit Wahrscheinlichkeitsmodellen
Vertrautmachen der Schüler mit der Methode der Simulation, die in der angewandten Wissenschaft
vielfach verwendet wird bzw. Vergleich verschiedener Methoden zur Behandlung von
Aufgabenstellungen der Wahrscheinlichkeitsrechnung.
Die Verwendung der Simulation sollte durchaus auch kritisch betrachtet werden, beispielsweise in der
Interpretation der Simulationsergebnisse und in der Problematik der Verwendung von PseudoZufallszahlen, die mit RANDOM erzeugt werden.
Querverbindungen zum Fach Informatik
Eine Grundlage kann hier als das Arbeiten mit Computeralgebrasystem-Bausteinen [Lehmann E,
2002] gesehen werden. Hervorgehoben wird der Bausteincharakter in der Computeranwendung. Durch
das Erstellen und Verwenden von Prozeduren (Funktionsaufrufen) ändert sich die Aufgabenstellung.
Neben der Erstellung ist das Experiment, die Analyse, die Strukturierung und Kombination
verschiedener Bausteine wichtig und auch eine Grundlage des Arbeitens mit Computern. Damit kann
der Mathematikunterricht einen Beitrag zur Arbeitsweise am Computer leisten.
Entwickelt man jedoch selbst Modelle zur Simulation, so benötigt man sehr bald programmtechnische
Grundlagen wie etwa Erstellung von Funktionsaufrufe, IF-Abfragen, Schleifen,... . Damit könnte für
interessierte Schüler eine gute Verbindung zum Programmieren im Fach Informatik geschaffen
werden.
Unterrichtsdurchführung
Computeralgebrasysteme haben für viele Standardaufgaben des Mathematikunterrichts fertige
Funktionen eingebaut. Für die Simulation kann man sich mit einfachen vorgefertigten Modellen
begnügen und Schüler zu Experimenten und Beobachtungen anregen. Schüler sollen anhand von
Arbeitsblättern Aufgaben behandeln, Beobachtungen machen, eigene Vermutungen mit den
Ergebnissen der Simulation vergleichen. Voraussetzung ist die Grundlage der Bedienung von
DERIVE. Der Unterricht kann sich auf wenige Modelle beschränken, der Zeitaufwand kann gering
gehalten werden.
Eine andere Art der Beschäftigung ist das Erstellen der Modelle selbst. Dazu sind an der
Programmierung interessierte Schüler notwendig, die auch Grundkenntnisse bereits mitbringen. Dann
kann dieser Unterricht zu interessanten Ergebnissen an flexiblen Aufgabenstellungen führen.
Literatur:
Engel, Arthur; Mathematisches Experimentieren mit dem PC; Klett Verlag, Stuttgart 1991
Kayser, Hans-Jürgen; DERIVE als Simulant - Zufallsversuche; Praxis der Mathematik 2/39, 1997,
Schwerpunktthemenheft 16: Computer-Einsatz III.
Klingen, Leo H.; Experimentieren in stochastischen Situationen mit DERIVE; MU 4, 1995, S 57-64.
Kütting, Herbert; Elementare Stochastik; Spektrum Akademischer Verlag GmbH, Heidelberg Berlin,
1999
13
MAIN
Lehmann, Eberhard; Mathematiklehren mit Computeralgebrasystem-Bausteinen; Verlag Franzbecker,
Hildesheim, Berlin; 2002
Scheid, Harald; Stochastik in der Kollegstufe; Bibliographisches Institut, Mannheim, Wien, Zürich,
1986.
Schlöglhofer F., Schoberleitner F.; Computer im Mathematikunterricht, Skriptum zur
Lehrerfortbildung, Pädagogisches Institut des Bundes in Oberösterreich, 2002
14
Herunterladen