Simulieren Sie die Monte-Carlo-Methode in Python

Was ist die Monte-Carlo-Methode?

Die Monte-Carlo-Methode (MC) ist ein allgemeiner Begriff für Methoden, die Simulationen und numerische Berechnungen unter Verwendung von Zufallszahlen durchführen. Ursprünglich eine Methode, die von Stanislaw Uram entwickelt und von John von Neumann benannt wurde, um zu untersuchen, wie sich Neutronen in einer Substanz bewegen. Benannt nach Monte Carlo, einem der vier Bezirke (Culti) des Fürstentums Monaco, berühmt für seine Casinos. Wird auch als Zufallsmethode bezeichnet.

Zitat Wikipedia

Kurz gesagt, es ist eine der Methoden, um numerische Berechnungen unter Verwendung von Zufallszahlen durchzuführen.

Finden Sie das Umfangsverhältnis

  1. Punkt zufällig im Quadrat
  2. Wenn der Abstand zwischen dem generierten Punkt und dem Ursprung 1 oder weniger beträgt, wird er als Eintritt in das Innere des Kreises gezählt, und wenn er 1 oder mehr beträgt, wird er als Eintritt in den Außenbereich des Kreises gezählt. Wiederholen Sie 3, 1 und 2 N Mal 4 und 4 P / N sind π, was ein ungefährer Wert des Umfangsverhältnisses ist.

Euklidische Norm zur Messung, ob der Abstand zwischen dem erzeugten Punkt und dem Ursprung 1 oder weniger beträgt

\sqrt{x^2+y^2}

Berechnen mit. Der euklidische Abstand ist der normale Abstand zwischen zwei Punkten, gemessen von einer Person mit einem Lineal.

#Modul installieren
import numpy as np
import math
import matplotlib.pyplot as plt

#X und y im Kreis
inside_x = []
inside_y = []

#X und y außerhalb des Kreises
outside_x = []
outside_y = []

count_inside = 0
for count in range(0, N):
  d = math.hypot(x[count], y[count])
  if d <1:
    count_inside +=1
    #Kombination von x und y beim Betreten der Innenseite eines Kreises
    inside_x.append(x[count])
    inside_y.append(y[count])
  else:
    outside_x.append(x[count])
    outside_y.append(y[count])
print('Nummer innerhalb des Kreises:', count_inside)

Ausgabe

Nummer innerhalb des Kreises: 7875

Visualisieren



#Figurengröße
plt.figure(figsize=(5,5))

#Daten zum Zeichnen eines Kreises
circle_x = np.arange(0,1,0.001)
circle_y = np.sqrt(1 - circle_x * circle_x)

#Zeichne einen Kreis
plt.plot(circle_x, circle_y)

#Rot ist im Kreis
plt.scatter(inside_x, inside_y, color = 'r')
#Blau ist außerhalb des Kreises
plt.scatter(outside_x, outside_y, color = 'b')
#Gib einen Namen
plt.xlabel('x')
plt.ylabel('y')
plt.grid(True) #Habe ein Gitter

download.png

#Weil es die Fläche des Einheitskreises ist, die in vier gleiche Teile eines Kreises mit einem Radius von 1 unterteilt ist.
print('Ungefährer Wert des Umfangsverhältnisses:'4.0 * count_inside / N)
Ausgabe
Ungefährer Wert des Umfangsverhältnisses: 3.144

Zusammenfassung

Die Monte-Carlo-Methode wird genauer, wenn die Anzahl der Punkte erhöht wird, die Ausführung dauert jedoch länger.

Recommended Posts

Simulieren Sie die Monte-Carlo-Methode in Python
Versuchen Sie, die Monte-Carlo-Methode in Python zu implementieren
Monte-Carlo-Methode
Simplex-Methode (Einzelmethode) in Python
Private Methode in Python
#Monte Carlo-Methode zum Ermitteln des Umfangsverhältnisses mit Python
Einführung in die Monte-Carlo-Methode
Das Unterdrücken von Methodenüberschreibungen in Python
Implementierte Methode zur Weitergabe von Etiketten in Python
Schätzung von π nach der Monte-Carlo-Methode
Hash-Methode (Open-Address-Methode) in Python
Finden Sie das Umfangsverhältnis mit einer dreizeiligen Funktion [Python / Monte-Carlo-Methode]
Methode zum Erstellen einer Python-Umgebung in Xcode 6
Elektronenmikroskopsimulation in Python: Mehrschichtmethode (1)
Elektronenmikroskopsimulation in Python: Mehrschichtmethode (2)
Ausrichtungsalgorithmus durch Einfügemethode in Python
Quadtree in Python --2
Python in der Optimierung
CURL in Python
Geokodierung in Python
SendKeys in Python
Metaanalyse in Python
Unittest in Python
Epoche in Python
Zwietracht in Python
Deutsch in Python
DCI in Python
Quicksort in Python
nCr in Python
N-Gramm in Python
Programmieren mit Python
Plink in Python
Konstante in Python
FizzBuzz in Python
SQLite in Python
Schritt AIC in Python
LINE-Bot [0] in Python
CSV in Python
Reverse Assembler mit Python
Reflexion in Python
Konstante in Python
nCr in Python.
Format in Python
Scons in Python 3
Puyopuyo in Python
Python in Virtualenv
PPAP in Python
Quad-Tree in Python
Reflexion in Python
Chemie mit Python
Johnson-Methode (Python)
Hashbar in Python
DirectLiNGAM in Python
LiNGAM in Python
In Python reduzieren
[Python] Semi-Lagrange-Methode
In Python flach drücken
Dominion-Kompressionsspiel nach Monte-Carlo-Methode analysiert