MuPAD Education Group: Kostenlose Materialen für MuPAD Pro:
www.sciface.com/education, schule.mupad.de, studium.mupad.de, mupad.zum.de.

________________________________________________________________________________

 

Inhalt....: Das Ziegenproblem

Kategorie.: Arbeitsblatt

Mathematik: Stochastik

MuPAD.....: 3.0.0

Datum.....: 2003-06-23

Autoren...: Julia Faflek <faflek@mupad.de>

Funktionen: random, minus, plot::PointList2d, plot::Scene2d

________________________________________________________________________________

 

Das Ziegenproblem oder wie gewinnt man

 

Das Ziegenproblem ist ein klassisches Beispiel dafür, wie sehr Stochastik und Wahrschein-

lichkeitsrechnung immer wieder erstaunen und verwundern können.

 

Der Kandidat in einer TV-Spielshow soll eine von drei verschlossenen Türen

wählen. Dabei befindet sich hinter einer der Türen der Hauptpreis, ein sehr

teures Auto; hinter den beiden anderen Türen warten leider nur Ziegen.

 

Der Kandidat entscheidet sich also für eine Tür, nennen wir sie Nummer 1.

Danach lässt der Moderator, der weiß hinter welcher Tür sich der Gewinn be-

findet, eine der anderen beiden Türen öffnen. Dort sieht man eine meckernde

Ziege. Nun fragt der Moderator, ob der Kandidat bei der Tür Nr. 1 bleiben

möchte oder ob er sich lieber für die andere verschlossene Tür (Nr. 2) ent-

scheiden will. 

 

Nun stellen sich die folgenden Fragen:

Hinter welcher der beiden Türen befindet sich das Auto mit größerer Wahr-

scheinlichkeit? Oder sind die Chancen auf den Gewinn bei beiden Türen

gleich? Wie soll sich der Kandidat also entscheiden?

 

Zur Beantwortung dieser Fragen modellieren wir das Spiel mit MuPAD und

werten dieses experimentell aus, indem wir die Anzahl der Gewinne zählen,

wenn der Kandidat zu Tür Nr.2 wechselt. Analog zählen wir die Gewinnanzahl

bei Festhalten an der Entscheidung für Tür Nr.1.

 

Wir schreiben eine Prozedur, die als Übergabeparameter die Anzahl der

Versuchsdurchführungen erhält und legen für die beiden Möglichkeiten, zu

gewinnen, Zählervariablen fest:

 

TV_Spielshow := proc(n)

   local GewinnanzahlOhneWechsel, GewinnanzahlMitWechsel;

begin

   GewinnanzahlOhneWechsel := 0:

   GewinnanzahlMitWechsel  := 0:

end_proc:

 

So sieht der Rahmen unserer Prozedur aus. Nun müssen wir ihn noch füllen.

Dazu brauchen wir eine for-Schleife, damit das Experiment n-mal ausgeführt

wird.

 

TV_Spielshow := proc(n)

   local GewinnanzahlOhneWechsel, GewinnanzahlMitWechsel, i;

begin

   GewinnanzahlOhneWechsel := 0:

   GewinnanzahlMitWechsel  := 0:

   for i from 1 to n do

   end_for:

end_proc:

 

Jetzt müssen wir die Schleife schreiben. Wir bestimmen mittels des MuPAD-

internen Zufallsgenerators random(1..3)() hinter welcher der drei Türen

sich der Hauptgewinn befindet:

 

TV_Spielshow := proc(n)

   local GewinnanzahlOhneWechsel, GewinnanzahlMitWechsel, i,

         GewinnTuer;

begin

   GewinnanzahlOhneWechsel := 0:

   GewinnanzahlMitWechsel  := 0:

   for i from 1 to n do

      GewinnTuer := random(1..3)():

   end_for:

end_proc:

 

Analog bestimmen wir die Tür, die der Kandidat gewählt hat und die Türen,

hinter denen eine Ziege steht und die der Kandidat nicht gewählt hat.

 

TV_Spielshow := proc(n)

   local GewinnanzahlOhneWechsel, GewinnanzahlMitWechsel, i,

         GewinnTuer, KandidatTuer, RestTueren, Anzahl;

begin

   GewinnanzahlOhneWechsel := 0:

   GewinnanzahlMitWechsel  := 0:

   for i from 1 to n do

      GewinnTuer   := random(1..3)():

      KandidatTuer := random(1..3)():

      RestTueren := {1, 2, 3} minus {GewinnTuer, KandidatTuer}:

      Anzahl := nops(RestTueren):

   end_for:

end_proc:

 

Was sagt uns die Anzahl dieser Türen?

 

Gibt es nur eine Tür, die der Kandidat nicht gewählt hat und hinter der sich eine

Ziege befindet, so hat sich der Kandidat für eine "Ziegentür" entschieden und

der Moderator lässt die Resttür öffnen.

Ist die Anzahl der Resttüren 2, so hat der Kandidat die Tür mit dem Auto gewählt

und der Spielleiter zeigt zufällig eine der beiden Resttüren.

In MuPAD setzen wir dies mittels einer if-Abfrage um.

 

TV_Spielshow := proc(n)

   local GewinnanzahlOhneWechsel, GewinnanzahlMitWechsel, i,

         GewinnTuer, KandidatTuer, RestTueren, Anzahl,

         OeffneTuer;

begin

  GewinnanzahlOhneWechsel := 0:

  GewinnanzahlMitWechsel  := 0:

  for i from 1 to n do

    GewinnTuer   := random(1..3)():

    KandidatTuer := random(1..3)():

    RestTueren := {1, 2, 3} minus {GewinnTuer, KandidatTuer}:

    Anzahl := nops(RestTueren):

    if (Anzahl = 1) then

      OeffneTuer := RestTueren[1]:

    else

      OeffneTuer := RestTueren[random(1..2)()]:

    end_if:

  end_for:

end_proc:

 

Nun zählen wir die Anzahl der Gewinne, falls der Kandidat an seiner Strategie

festhält und die entsprechende Anzahl bei einem Wechsel der Tür. Dann be-

stimmen wir die relativen Häufigkeiten für den Gewinn bei beiden Strategien

und geben die Anzahl der Versuchsdurchführungen, die Gewinnanzahl ohne

Wechsel, die Gewinnanzahl mit Wechsel, sowie die beiden relativen Häufig-

keiten zurück.

 

TV_Spielshow := proc(n)

  local GewinnanzahlOhneWechsel, GewinnanzahlMitWechsel, i,

        GewinnTuer, KandidatTuer, RestTueren, Anzahl,

        OeffneTuer, WechselTuer, GewinnhaeufigkeitOhneWechsel,

        GewinnhaeufigkeitMitWechsel;

begin

  GewinnanzahlOhneWechsel := 0:

  GewinnanzahlMitWechsel  := 0:

  for i from 1 to n do

    GewinnTuer   := random(1..3)():

    KandidatTuer := random(1..3)():

    RestTueren := {1, 2, 3} minus {GewinnTuer, KandidatTuer}:

    Anzahl := nops(RestTueren):

    if (Anzahl = 1) then

      OeffneTuer := RestTueren[1]:

    else

      OeffneTuer := RestTueren[random(1..2)()]:

    end_if:

    if (GewinnTuer = KandidatTuer) then

      GewinnanzahlOhneWechsel := GewinnanzahlOhneWechsel + 1:

    end_if:

    WechselTuer := op({1, 2, 3} minus {OeffneTuer} minus

                   {KandidatTuer}):

    if (GewinnTuer = WechselTuer) then

      GewinnanzahlMitWechsel := GewinnanzahlMitWechsel + 1:

    end_if:

  end_for:

  GewinnhaeufigkeitOhneWechsel := GewinnanzahlOhneWechsel/n:

  GewinnhaeufigkeitMitWechsel  := GewinnanzahlMitWechsel/n:

  return(n, GewinnanzahlOhneWechsel, GewinnanzahlMitWechsel,

         GewinnhaeufigkeitOhneWechsel,

         GewinnhaeufigkeitMitWechsel):

end_proc:

 

Schließlich lassen wir uns das Ergebnis als Text auf dem Bildschirm ausgeben:

 

Textausgabe := proc(n)

   local Aufruf;

begin

  Aufruf := TV_Spielshow(n):

  print(Unquoted,

        "Anzahl der Versuchsdurchführungen = "

        .Aufruf[1]. "\n".

        "Gewinnanzahl ohne Wechsel = "

        .Aufruf[2]. "\n".

        "Gewinnanzahl mit Wechsel = "

        .Aufruf[3]. "\n".

        "Relative Gewinnhäufigkeit ohne Wechsel = "

        .expr2text(float(Aufruf[4])). "\n".

        "Relative Gewinnhäufigkeit mit Wechsel = "

        .expr2text(float(Aufruf[5]))):

end_proc:

 

Mittels dieser Prozedur können wir uns jetzt die Ergebnisse beliebig vieler

Versuchsdurchführungen ansehen:

 

Textausgabe(100);

Textausgabe(1000);

Textausgabe(10000);

Anzahl der Versuchsdurchführungen = 100

Gewinnanzahl ohne Wechsel = 35

Gewinnanzahl mit Wechsel = 65

Relative Gewinnhäufigkeit ohne Wechsel = 0.35

Relative Gewinnhäufigkeit mit Wechsel = 0.65

Anzahl der Versuchsdurchführungen = 1000

Gewinnanzahl ohne Wechsel = 347

Gewinnanzahl mit Wechsel = 653

Relative Gewinnhäufigkeit ohne Wechsel = 0.347

Relative Gewinnhäufigkeit mit Wechsel = 0.653

Anzahl der Versuchsdurchführungen = 10000

Gewinnanzahl ohne Wechsel = 3353

Gewinnanzahl mit Wechsel = 6647

Relative Gewinnhäufigkeit ohne Wechsel = 0.3353

Relative Gewinnhäufigkeit mit Wechsel = 0.6647

 

An diesen Ausgaben können wir erkennen, dass man mit der Strategie, die

Tür zu wechseln, eine höhere Wahrscheinlichkeit hat zu gewinnen. Um diese

These zu untermauern, wollen wir die Ergebnisse grafisch interpretieren.

 

Grafikausgabe := proc(n)

   local ListeOhneWechsel, ListeMitWechsel, i, p1, p2;

begin

  ListeOhneWechsel := [0$n]:

  ListeMitWechsel  := [0$n]:

  for i from 1 to n do

    Aufruf := TV_Spielshow(i):

    ListeOhneWechsel[i] := [i, Aufruf[4]]:

    ListeMitWechsel[i]  := [i, Aufruf[5]]:

  end_for:

  p1 := plot::Polygon2d(ListeOhneWechsel, PointsVisible):

  p2 := plot::Polygon2d(ListeMitWechsel, Color = RGB::Red,

                        PointsVisible):

  plot(plot::Scene2d(p1,p2));

end_proc:

 

Nun können wir mit nur einem Befehl die beiden Häufigkeiten als Graph visualisieren:

Grafikausgabe(100);

Grafikausgabe(200);

MuPAD graphics

MuPAD graphics

 

Ein verblüffendes Ergebnis: Die Wahrscheinlichkeit zu gewinnen ist "fast"

immer größer, wenn man sich für das andere Tor entscheidet. Eine theo-

retische Analyse wollen wir an dieser Stelle jedoch nicht durchführen.

 

_______________________________________________________________________________

 

Übungen:

1. Machen Sie sich mit der Funktion  random vertraut.

2. Besuchen Sie die Hilfeseiten zu ?plot::Pointlist und ?plot::Scene.

_______________________________________________________________________________

 

Anmerkungen:

1. Unter www.schule.mupad.de/material/ finden Sie weitere interessante Notebooks.

 

2. Weitere Anregungen finden Sie in der Buchreihe Mathematik 1 x anders. In dieser Reihe wird eine Vielzahl

ssunterschiedlichster mathematischer Probleme mit MuPAD gelöst. Die Bücher können unter

sswww.schule.mupad.de/literatur kostenfrei kopiert werden.

_______________________________________________________________________________

 

 

 

MuPAD Education Group: Kostenlose Materialen für MuPAD Pro:
www.sciface.com/education, schule.mupad.de, studium.mupad.de, mupad.zum.de.