Buch Cover Buch Cover Buch Cover Buch Cover

Web-Code: - Webcode Help

Monte-Carlo-Methode zur Bestimmung von Pi (Simulationen)

Schätzen Sie Flächeninhalte mit der Monte-Carlo-Methode. Dabei wird der Inhalt einer Fläche angenähert, indem sehr viele zufällige Punkte in eine größere (bekannte oder leicht messbare) Fläche eingestreut werden, welche die zu messende Fläche als Teilfläche enthält. Die erste Teilaufgabe soll denn auch die Kreisfläche schätzen. Dazu wird einem Quadrat ein Kreis einbeschrieben. Nehmen Sie dazu das Quadrat mit Seitenlänge 2 und den Eckpunkten (-1|-1), (-1|1), (1|1) und (1|-1). Hier wird der Kreis mit Radius 1 um den Nullpunkt (0|0) einbeschrieben.

Machen Sie dazu eine Zeichnung.

Die Funktion random()liefert eine Pseudozufallszahl zwischen 0.0 und 1.0. Zeigen Sie zunächst, dass der Punkt (2 * random() - 1 | 2 * random() - 1) im Inneren des Quadrats liegt. Weiter liegt ein Punkt (x|y) innerhalb des Kreises, falls sein Abstand zum Nullpunkt kleiner als 1 ist: \sqrt{x^2 + y^2}< 1

Nun setzen wir zwei Zählervariable je auf 0: imQuadrat := 0; imKreis := 0

In einer Schleife erzeugen wir pro Durchlauf je einen Zufallspunkt im Inneren des Quadrats. Jetzt zählen wir bei der Variable imQuadrat eins dazu, und dies tun wir analog bei der Variable imKreis, aber nur, sofern der Punkt im Inneren des Kreises liegt. Nach 10 000 Iterationen bilden wir den Quotienten imKreis / imQuadrat und erhalten einen Viertel der Kreiszahl PI, denn der Flächeninhalt des Quadrats beträgt 4, und der Flächeninhalt des Kreises (Pi * r2) beträgt Pi.

Zusatzaufgabe: Berechnen Sie nach dem selben Verfahren die Fläche unter der Parabelkurve y = x^2 im Intervall 0.0 bis 1.0. Mathematisch berechnet müsste das Resultat bei 1/3 liegen. Suchen Sie das Quadrat und entscheiden Sie, mit welcher Berechnung Sie herausfinden, ob ein Punkt unter oder über der Kurve liegt. Zählen Sie wieder 10 000 Punkte.

0 Kommentare

Bitte melde dich an um einen Kommentar abzugeben

3 Lösung(en)

import java.util.Scanner;

/**
 * @author Lehrling Credit-Suisse (IL03)
 */
public class MonteCarlo {

  public void startSimulation(int count) {
    int inside = 0;
    for(int i = 0; i < count; i++) {
      double x = Math.random();
      double y = Math.random();
      double abst = Math.sqrt(x * x + y * y);
      if(abst < 1.0) {
        inside ++;
      }
    }
    double pi = 4.0 *  inside / count;
    System.out.println("PI angenähert:  " + pi);
  }
    
        
  void top() {
    int samples = leseInt("Zahl der Punkte");
    this.startSimulation(samples);
  }
        
  Scanner sc = new Scanner(System.in);
  int leseInt(String bezeichnung) {
    System.out.println("Bitte " + bezeichnung + " eingeben: ");
    return sc.nextInt();
  }

  public static void main(String[] args) {
    new MonteCarlo().top();
  }

} // end of class MonteCarlo
                
import random
def pi(n):
    in_kreis=0
    i =0
    
        while i  <  n:
        x = random.random()*2-1
        y = random.random()*2-1
        if x*x+y*y <1:
            in_kreis =in_kreis +1
        i = i + 1
    pi_ = 4.0*in_kreis/n
    return pi_

print pi(100)
print pi(100000)
                
function randPoint() {
  let out = [0, 0];
  for (x = 0; x <= 1; x++)
    out[x] = (Math.random() < 0.5) ? Math.random() : Math.random() * -1;
  return out;
}

function mcCircle(prec) {
  let inCircle = 0,
      p = [];
  for (let i = 1; i <= prec; i++) {
    p = randPoint();
    if (Math.sqrt(p[0]**2 + p[1]**2) < 1) inCircle++;
  }
  return inCircle / prec;
}

function mcParabola(prec) {
  let under = 0,
  p = [];
  for (let i = 1; i <= prec; i++) {
    p = randPoint();
    p[0] = p[0] ** 2;
    if (p[0] <= p[1]) under++;
  }
  return under / prec;
}

console.log( mcCircle(10e5) * 4);
console.log( mcParabola(10e5) );

                

Lösung von: Lisa Salander (Heidi-Klum-Gymnasium Bottrop)

Aktionen

Bewertung

Durchschnittliche Bewertung:

Eigene Bewertung:
Bitte zuerst anmelden

Meta

Zeit: 1
Schwierigkeit: k.A.
Webcode: rvf2-f92q
Autor: Philipp G. Freimann (BBW (Berufsbildungsschule Winterthur) https://www.bbw.ch)

Download PDF

Download ZIP

Zu Aufgabenblatt hinzufügen