Pi
Pi () ist eine Zahl, die das Verhältnis zwischen dem Durchmesser eines Kreises und seinem Umfang beschreibt.
Algorithmische Berechnung
lässt sich algorithmisch wie folgt berechnen: Man nimmt ein Quadrat der Seitenlänge 1 und zeichnet dort hinein einen Viertelkreis mit dem Radius 1. Dieser Viertelkreis hat die Fläche . Über dieses Quadrat legt man nun ein Raster aus Punkten und prüft für jeden dieser Punkte, ob er in dem Viertelkreis liegt oder nicht. Die Anzahl der Punkte im Viertelkreis geteilt durch die Gesamtzahl der Punkte im Quadrat ergibt dann eine Näherung für . Je engmaschiger dabei das Gitter ist, desto genauer wird auch die Näherung für .
Das rechts abgebildete Quadrat ist von einem Raster von 10×10 Punkten überzogen. Davon liegen 79 im Kreis (rot eingezeichnet). Als Näherung für ergibt sich der Wert , multipliziert mit 4 die Näherung für .
Als Programmablaufplan kann man diesen Algorithmus folgendermaßen darstellen:
Die Konstante STEP
gibt dabei an, wie engmaschig das Gitter sein soll, und kann beliebig angepasst werden. Der Wert für STEP
muss dabei zwischen 0 und 1 liegen.
Laufzeit dieses Algorithmus
Die Laufzeit dieses Algorithmus hängt davon ab, wie viele Punkte betrachtet werden müssen. Bei einem Gitter von Punkten beträgt die Laufzeit darum .
Berechnung mit Monte-Carlo-Algorithmus
Alternativ kann man auch einen Monte-Carlo-Algorithmus, d.h. einen Algorithmus mit einem zufallsbasierten Anteil, verwenden, um zu berechnen. Hier wird das Quadrat nicht mit einem systematischen Gitter, sondern einem zufälligen Hagel aus Punkten überzogen. Als Programmablaufplan kann man diesen Algorithmus folgendermaßen darstellen:
Die Konstante ZIEL
gibt dabei an, wie viele zufällige Punkte in dem Quadrat verteilt werden sollen und kann beliebig angepasst werden. Je mehr Punkte gestreut werden, desto länger benötigt der Algorithmus, desto genauer ist aber auch das Ergebnis.
Laufzeit dieses Algorithmus
Die Laufzeit dieses Algorithmus hängt davon ab, wie viele Punkte betrachtet werden müssen. Bei zufällig gestreuten Punkten ergibt sich dabei eine Laufzeit von .
Verwendung in verschiedenen Programmiersprachen
Programmiersprache | Ausdruck für | ggf. nötige Import-Anweisung |
---|---|---|
NEPO | ☆-Blockset | |
Python | math.pi
|
import math
|
JavaScript | Math.PI
|
– |
Java | Math.PI
|
import java.lang.Math;
|