Es ist eine Geschichte, die ich versucht habe, das Umfangsverhältnis probabilistisch (genau genommen, Monte-Carlo-Methode) unter Verwendung von Pythons Standardbibliothek zufällig zu schätzen. (Voraussichtliche Lesezeit: 4 Minuten)
Stellen Sie sich xy-Koordinaten vor.
Zeichnen Sie einen Kreis mit dem Radius r (nennen wir es C), der auf dem Ursprung O zentriert ist, und ein Quadrat mit einer Seite von 2r (nennen wir es S).
Schlagen Sie in S weiterhin zufällig auf Punkte.
Wenn Sie genug Punkte treffen, um das Innere von S zu füllen, können Sie "die Anzahl der Punkte in S: die Anzahl der Punkte in C ≒ die Fläche von S: die Fläche von C" sagen.
Wenn die Anzahl der Punkte in S "s_dot_num" und die Anzahl der Punkte in C "c_dot_num" ist,
(c_dot_num) / (s_dot_num) = Fläche von C / Fläche von S. = (π * r im Quadrat) / (2r) im Quadrat = π / 4
Weil es wird
π = 4 * (c_dot_num) / (s_dot_num)
Ich konnte definieren. Wenn Sie danach c_dot_num bzw. s_dot_num finden, können Sie den Wert von π schätzen. (Der Wert von r scheint keine Rolle zu spielen)
Diesmal habe ich es in Python geschrieben.
estimate_pi.py
#Punkte werden zufällig in einem Quadrat mit einer Seitenlänge von 1 platziert und das Umfangsverhältnis wird geschätzt.
import random
def estimate_pi(n):
c_dot_num = 0
s_dot_num = 0
for _ in range(n):
x = random.uniform(0, 1)
y = random.uniform(0, 1)
distance = x**2 + y**2
if distance <= 1:
c_dot_num += 1
s_dot_num += 1
pi = 4 * c_dot_num / s_dot_num
return pi
if __name__ == '__main__':
print('Wenn es 100 Punkte gibt, ist das Umfangsverhältnis{}'.format(estimate_pi(100)))
print('Bei 1000 Punkten beträgt das Umfangsverhältnis{}'.format(estimate_pi(1000)))
print('Wenn es 10000 Punkte gibt, ist das Umfangsverhältnis{}'.format(estimate_pi(10000)))
print('Bei 100.000 Punkten beträgt das Umfangsverhältnis{}'.format(estimate_pi(100000)))
※Bild
Erstes Mal Zweites Mal Drittes Mal
Es ist ungefähr 3.141. Wenn die Anzahl der Versuche n (= die Häufigkeit, mit der der Punkt getroffen wird) erhöht wird, erhöht sich die Genauigkeit.
Dieses Mal habe ich versucht, das Umfangsverhältnis anhand von Zufallszahlen zu schätzen. Akademisch wird die Methode zur Schätzung eines Wertes unter Verwendung von Zufallszahlen als "Monte-Carlo-Methode" bezeichnet.
Der Code selbst ist überhaupt nicht schwierig, aber als ich zum ersten Mal davon erfuhr, war ich aufgeregt zu sagen: "Gibt es einen solchen Ansatz!", Also zur Erinnerung.
Recommended Posts