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

________________________________________________________________________________

 

Inhalt....: Analyse von Wuerfelexperimenten

Kategorie.: Handwerkskasten

Mathematik: Stochastik, Statistik

MuPAD.....: 3.0.0

Datum.....: 2002-07-11

Autoren...: Kai Gehrs <acrowley@mupad.de>

Funktionen: random, plot, plot::Point2d, plot::PointList2d, plot::Rectangle

Funktionen: GridVisible, AxesOrigin, plot::Line2d, PointSize, Color

Funktionen: plot::Polygon2d

________________________________________________________________________________

 

Elementare MuPAD-Funktionen:

Analyse von Würfelexperimenten 

 

Dieses Notebook bietet eine Erweiterung zu dem Notebook

                  

                                                Experimente_idealer_Wuerfel

 

welches ebenfalls im Handwerkskasten verfügbar ist. Hier werden wir eine recht umfangreiche

Prozedur zur mathematischen und grafischen Analyse von Zufallsexperimenten mit einem

idealen Würfel kennen lernen.

 

Wie oben beschrieben, bietet dieses Notebook eine Funktion zur Analyse

eines Zufallsexperiments mit einem idealen Würfel. Wie schon in dem Notebook

 

                              Experimente_idealer_Wuerfel

 

betrachten wir eine Prozedur mit der wir das Werfen mit einem idealen Würfel

simulieren können.

 

Hier definieren wir eine neue Prozedur namens Wuerfel_Analyse sowie

vier verschiedene Prozeduren zur grafischen Visualisierung des betrachteten

Zufallsexperiments.

 

Zunächst die Prozedur Wuerfel_Analyse:

 

Wuerfel_Analyse:= proc(n /* All */)

    local Summen, i, Ergebnis, Wuerfeln;

begin

 

  Wuerfeln:= random(1..6);

  TEXTWIDTH:= 58;

  Summen:= [0 $ 6];

 

  for i from 1 to n do

    Ergebnis:= Wuerfeln();

    Summen[Ergebnis]:= Summen[Ergebnis] + 1;

  end_for;

 

  if args(0) = 2 and args(2) = hold(All) then

 

    print(Unquoted, "---------------------");

    print(Unquoted, "Haeufigkeitsanalyse");

    print(Unquoted, "---------------------");

    print(Unquoted, "-----------------------------------------------------");

 

    for i from 1 to 6 do

      print(Unquoted, "Es wurde ".Summen[i]."-mal ".i.

                      " geworfen.");

      print(Unquoted, "Die relative Haeufigkeit der ".i.

                      " ist damit "

                      .expr2text(Summen[i]/n));

      print(Unquoted, "Abweichung von der Wahrscheinlichkeit: "

                      .expr2text(abs(1/6-Summen[i]/n)));

      print(Unquoted, "-----------------------------------------------------");

    end_for;

   

    return(Summen);

 

  else

 

    return(Summen); 

  end_if;

end_proc:

 

Die Funktion Wuerfel_Analyse erhält ein oder zwei Argumente:

 

1. Argument: Eine natürliche Zahl n, die Anzahl der Würfe mit einem idealen

                       Würfel

 

2. Argument: Die Option All, mit der man zusätzliche Funktionalität der Prozedur

                       ausnutzt (siehe unten)

 

Rückgabewert ist bei Aufruf der Prozedur mit einem Argument n eine Liste L,

so dass L[ i ], i = 1,...,6, die Anzahl angibt, wie oft die Augenzahl i geworfen

wurde. Wird die Prozedur mit dem Zusatzargument All aufgerufen, so liefert

sie zusätzlich eine Häufigkeitsanalyse der unten beschriebenen Art.

 

Häufigkeitsanalyse:

 

1. Ausgabe der absoluten Zahlen, d.h. wie oft eine Augenzahl geworfen

       wurde.

 

2. Ausgabe der entsprechenden relativen Häufigkeiten

 

3. Ausgabe der Abweichung der relativen Häufigkeit von der tatsächlichen

        Wahrscheinlichkeit

 

Ein Aufruf der Prozedur Wuerfel_Analyse ist also von der Form

Wuerfel_Analyse( n ), falls eine Analyse der oben beschriebenen Form

nicht erwünscht ist, und von der Form Wuerfel_Analyse( n, All ) falls eine

solche gewünscht ist.

 

Wir betrachten zwei Beispiele für den Fall n = 100.

 

Wuerfel_Analyse(100)

math

 

Eine zusätzliche Analyse erhalten wir übern den Aufruf: 

 

Wuerfel_Analyse(100, All)

---------------------

Haeufigkeitsanalyse

---------------------

-----------------------------------------------------

Es wurde 15-mal 1 geworfen.

Die relative Haeufigkeit der 1 ist damit 3/20

Abweichung von der Wahrscheinlichkeit: 1/60

-----------------------------------------------------

Es wurde 12-mal 2 geworfen.

Die relative Haeufigkeit der 2 ist damit 3/25

Abweichung von der Wahrscheinlichkeit: 7/150

-----------------------------------------------------

Es wurde 18-mal 3 geworfen.

Die relative Haeufigkeit der 3 ist damit 9/50

Abweichung von der Wahrscheinlichkeit: 1/75

-----------------------------------------------------

Es wurde 23-mal 4 geworfen.

Die relative Haeufigkeit der 4 ist damit 23/100

Abweichung von der Wahrscheinlichkeit: 19/300

-----------------------------------------------------

Es wurde 17-mal 5 geworfen.

Die relative Haeufigkeit der 5 ist damit 17/100

Abweichung von der Wahrscheinlichkeit: 1/300

-----------------------------------------------------

Es wurde 15-mal 6 geworfen.

Die relative Haeufigkeit der 6 ist damit 3/20

Abweichung von der Wahrscheinlichkeit: 1/60

-----------------------------------------------------

math

 

Nun wollen wir vier kleine Routinen vorstellen, die es ermöglichen, neben

der mathematischen Analyse von oben auch eine grafische Analyse mit den

verschiedensten Möglichkeiten der plot-Bibliothek durchzuführen.

 

 

Funktionen zur grafischen Analyse

 

Darstellung der relativen Häufigkeiten (in Schwarz) und der tatsächlichen

Wahrscheinlichkeiten (in Grau) als Punkte

 

Darstellung der relativen Häufigkeiten (in Schwarz) und der tatsächlichen

Wahrscheinlichkeiten (in Grau) als Polygonzüge

 

Darstellung der relativen Häufigkeiten (in Schwarz) und der tatsächlichen

Wahrscheinlichkeiten (in Grau) als Stabdiagramme

 

Darstellung der relativen Häufigkeiten (in Schwarz) und der tatsächlichen

Wahrscheinlichkeiten (in Grau) als Säulendiagramme

 

 

Der Beschreibung und Definition dieser Funktionen wollen wir uns jetzt widmen.

 

Die erste Funktion visualisiert die relativen Häufigkeiten mit Hilfe von Punkten.

 

Zeichne_Punkte:= proc(Summen)

  local Punkte1, Punkte2, n, i;

begin

  n:= _plus(Summen[i] $ i = 1..6);

 

  Punkte1:= plot::PointList2d([[i, Summen[i]/n] $ i = 1..6],

                              PointSize = 3 * unit::mm,

                              Color = RGB::Black);

  Punkte2:= plot::PointList2d([[i, 1/6] $ i = 1..6],

                              PointSize = 3 * unit::mm,

                              Color = RGB::Grey);

  plot(Punkte1, Punkte2, GridVisible = TRUE, AxesOrigin = [0,0]);

end_proc:

 

Die Prozedur Zeichne_Punkte erwartet stets ein Argument:

 

1. Argument: Eine Liste mit 6 Elementen, den relativen Häufigkeiten der

                       jeweils gewürfelten Augenzahl.

 

Als Ausgabe liefert sie eine Grafik, in der die relativen Häufigkeiten sowie

die tatsächlichen Wahrscheinlichkeiten als Punkte eingezeichnet sind.

 

Ein Aufruf der Funktion ist also typischerweise von der Form

Zeichne_Punkte( [ h1, h2, h3, h4, h5, h6 ] ). Dabei sind h1 bis h6 die

absoluten Häufigkeiten der erzielten Augenzahlen 1 bis 6, die auch

mittels der Prozedur Wuerfel_Analyse zuvor berechnet werden können.

 

Wir erproben die Funktion an zwei Beispielen:

 

L:= Wuerfel_Analyse(10);

Zeichne_Punkte(L)

math

MuPAD graphics

 

L:= Wuerfel_Analyse(100):

Zeichne_Punkte(L)

MuPAD graphics

 

Die zweite Funktion visualisiert die relativen Häufigkeiten mit Hilfe von

Polygonzügen:

 

Zeichne_Polygonzug:= proc(Summen)

  local Polygon1, Polygon2, n, i;

begin

  n:= _plus(Summen[i] $ i = 1..6);

 

  Polygon1:= plot::Polygon2d([[i, Summen[i]/n] $ i = 1..6], 

                           Color = RGB::Black,

                           PointSize = 3 * unit::mm,

                           PointsVisible = TRUE);

  Polygon2:= plot::Polygon2d([[i, 1/6] $ i = 1..6], 

                           Color = RGB::Blue,

                           PointSize = 3 * unit::mm,

                           PointsVisible = TRUE);

 

  plot(Polygon1, Polygon2, GridVisible = TRUE, AxesOrigin = [0,0]);

 

end_proc:

 

Auch die Prozedur Zeichne_Polygonzug erwartet stets ein Argument:

 

1. Argument: Eine Liste mit 6 Elementen, den relativen Häufigkeiten der

                       jeweils gewürfelten Augenzahl.

 

Als Ausgabe liefert sie eine Grafik, in der die relativen Häufigkeiten sowie

die tatsächlichen Wahrscheinlichkeiten als Punkte, die durch Graden miteinander

verbunden werden, eingezeichnet sind.

 

Ein Aufruf der Funktion ist also typischerweise von der Form

Zeichne_Polygonzug( [ h1, h2, h3, h4, h5, h6 ] ). Dabei sind h1 bis h6 die

absoluten Häufigkeiten der erzielten Augenzahlen 1 bis 6, die auch

mittels der Prozedur Wuerfel_Analyse zuvor berechnet werden können.

 

Wir erproben die Funktion wieder an unseren zwei Beispielen:

 

L:= Wuerfel_Analyse(10):

Zeichne_Polygonzug(L)

MuPAD graphics

L:= Wuerfel_Analyse(100):

Zeichne_Polygonzug(L)

MuPAD graphics

 

Die dritte Funktion visualisiert die relativen Häufigkeiten mit Hilfe von

Stabdiagrammen:

 

Zeichne_Stabdiagramm:= proc(Summen)

  local Punkte, Staebe, n, i;

begin

  n:= _plus(Summen[i] $ i = 1..6);

 

  Punkte:= [plot::Point2d(i, Summen[i]/n,

                          Color = RGB::Black,

                          PointSize = 4 * unit::mm)

                        $ i = 1..6];

  Staebe:= [plot::Line2d([i, 0], [i, Summen[i]/n],

                         Color = RGB::Black,

                         LineWidth = 1 * unit::mm) $ i = 1..6];

plot(op(Punkte), op(Staebe), GridVisible = TRUE, AxesOrigin = [0,0])

end_proc:

 

Auch die Prozedur Zeichne_Stabdiagramm erwartet stets ein Argument:

 

1. Argument: Eine Liste mit 6 Elementen, den relativen Häufigkeiten der

                       jeweils gewürfelten Augenzahl.

 

Als Ausgabe liefert sie eine Grafik, in der die relativen Häufigkeiten sowie

die tatsächlichen Wahrscheinlichkeiten als Stabdiagramme eingezeichnet

sind.

 

Ein Aufruf der Funktion ist also typischerweise von der Form

Zeichne_Stabdiagramm( [ h1, h2, h3, h4, h5, h6 ] ). Dabei sind h1 bis h6 die

absoluten Häufigkeiten der erzielten Augenzahlen 1 bis 6, die auch

mittels der Prozedur Wuerfel_Analyse zuvor berechnet werden können.

 

Wieder erproben wir die Funktion in zwei Beispielen:

 

L:= Wuerfel_Analyse(10):

Zeichne_Stabdiagramm(L)

MuPAD graphics

 

L:= Wuerfel_Analyse(100):

Zeichne_Stabdiagramm(L)

MuPAD graphics

 

Nun zu der vierten und letzten Funktion. Sie visualisiert die relativen

Häufigkeiten mit Hilfe von Säulendiagrammen:

 

Zeichne_Saeulendiagramm:= proc(Summen)

  local i;

begin

  plot(plot::Histogram2d([i $ Summen[i]  $ i=1..6],

                         Cells=[i-0.5..i+0.5 $ i = 1..6],

                         Area = 1))

 

end_proc:

 

 

Auch die Prozedur Zeichne_Säulendiagramm erwartet stets ein Argument:

 

1. Argument: Eine Liste mit 6 Elementen, den relativen Häufigkeiten der

                       jeweils gewürfelten Augenzahl.

 

Als Ausgabe liefert sie eine Grafik, in der die relativen Häufigkeiten sowie

die tatsächlichen Wahrscheinlichkeiten als Stabdiagramme eingezeichnet

sind.

 

Ein Aufruf der Funktion ist also typischerweise von der Form

Zeichne_Säulendiagramm( [ h1, h2, h3, h4, h5, h6 ] ). Dabei sind h1 bis h6 die

absoluten Häufigkeiten der erzielten Augenzahlen 1 bis 6, die auch

mittels der Prozedur Wuerfel_Analyse zuvor berechnet werden können.

 

In unseren zwei Beispielen ergibt sich:

 

L:= Wuerfel_Analyse(10):

Zeichne_Saeulendiagramm(L)

MuPAD graphics

L:= Wuerfel_Analyse(100):

Zeichne_Saeulendiagramm(L)

MuPAD graphics

 

Jede der vorgestellten Funktionen bietet nun individuell für sich eine schöne

Möglichkeit, wie man auch optisch den Übergang der Wahrscheinlichkeit in

die relative Häufigkeit veranschaulichen kann. 

 

Alternativ kann natürlich auch die Funktion plot::Histogram2d direkt mit

den statistischen Daten verwendet werden (ohne dass diese zuerst zu einer

Liste zusammengefasst werden müssen und die absoluten Häufigkeiten der

geworfenen Augenzahlen berechnet werden müssen):

 

Wuerfel:= random(1..6):

plot(plot::Histogram2d([Wuerfel()  $ i = 1..100],

                        Cells=[i-0.5..i+0.5 $ i = 1..6],

                        Area = 1))

MuPAD graphics

 

_______________________________________________________________________________

 

Aufgaben:

1. Experimentieren Sie mit den oben aufgeführten Prozeduren. Ändern Sie zunächst die Farben der grafischen

    Objekte von Schwarz und Grau in Blau und Grün. Experimentieren Sie dann mit den verschiedenen

    Szene Optionen wie z.B. 'GridLines = Automatic' oder 'AxesOrigin = [0,0]'. Wie verändern sich die

    Darstellungen, wenn man diese entfernt.   

 

2. Ändern Sie die obige Prozedur 'Wuerfel_Analyse' so um, dass bei Berechnung der Abweichung der relativen

    Häufigkeiten von den entsprechenden Wahrscheinlichkeiten nicht die genauen Ergebnisse, sondern nur

    Gleitkommadarstellungen (auf 10 Stellen genau) ausgegeben werden.

    TIPP: float

 

3. Ändern Sie die obigen Prozeduren so ab, dass mit einem "allgemeinen Würfel" mit k Ecken gewürfelt werden

    kann.

    TIPP: Führen Sie k als zweiten Parameter in die obige Prozedur ein. Ersetzen Sie jede 6 durch k. 

_______________________________________________________________________________

 

Anmerkungen:

1.  Weitere Anregungen finden Sie unter: http://schule.mupad.de bzw. http://studium.mupad.de

 

_______________________________________________________________________________

 

 

 

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