Simuler la méthode Monte Carlo en Python

Qu'est-ce que la méthode Monte Carlo?

La méthode de Monte Carlo (MC) est un terme général pour les méthodes qui effectuent des simulations et des calculs numériques à l'aide de nombres aléatoires. À l'origine, une méthode conçue par Stanislaw Ulam et nommée par John von Neumann pour explorer comment les neutrons se déplacent dans une substance. Nommé d'après Monte Carlo, l'un des quatre quartiers (Culti) de la Principauté de Monaco, célèbre pour ses casinos. Aussi appelée méthode aléatoire.

Citer wikipedia

En bref, c'est l'une des méthodes pour effectuer un calcul numérique à l'aide de nombres aléatoires.

Trouvez le rapport de circonférence

  1. Point au hasard dans le carré
  2. Si la distance entre le point généré et l'origine est de 1 ou moins, elle est comptée comme entrant à l'intérieur du cercle, et si elle est de 1 ou plus, elle est comptée comme entrant à l'extérieur du cercle. Répétez 3, 1 et 2 N fois 4 et 4 P / N sont π, qui est une valeur approximative du rapport de circonférence.

Norme euclidienne pour mesurer si la distance entre le point généré et l'origine est de 1 ou moins

\sqrt{x^2+y^2}

Calculez avec. La distance euclidienne est la distance normale entre deux points, telle que mesurée par une personne avec une règle.

#Installer le module
import numpy as np
import math
import matplotlib.pyplot as plt

#X et y dans un cercle
inside_x = []
inside_y = []

#X et y hors du cercle
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
    #Combinaison de x et y lors de l'entrée à l'intérieur d'un cercle
    inside_x.append(x[count])
    inside_y.append(y[count])
  else:
    outside_x.append(x[count])
    outside_y.append(y[count])
print('Numéro à l'intérieur du cercle:', count_inside)

production

Numéro à l'intérieur du cercle: 7875

Visualiser



#Taille de la figure
plt.figure(figsize=(5,5))

#Données pour dessiner un cercle
circle_x = np.arange(0,1,0.001)
circle_y = np.sqrt(1 - circle_x * circle_x)

#Tracez un cercle
plt.plot(circle_x, circle_y)

#Le rouge est dans le cercle
plt.scatter(inside_x, inside_y, color = 'r')
#Le bleu est hors du cercle
plt.scatter(outside_x, outside_y, color = 'b')
#Donnez un nom
plt.xlabel('x')
plt.ylabel('y')
plt.grid(True) #Avoir une grille

download.png

#Parce que c'est l'aire du cercle unité divisée en quatre parties égales d'un cercle de rayon 1.
print('Valeur approximative du rapport de circonférence:'4.0 * count_inside / N)
production
Valeur approximative du rapport de circonférence: 3.144

Résumé

La méthode de Monte Carlo devient plus précise à mesure que le nombre de points augmente, mais son exécution prend plus de temps.

Recommended Posts

Simuler la méthode Monte Carlo en Python
Essayez d'implémenter la méthode Monte Carlo en Python
Méthode de Monte Carlo
Méthode Simplex (méthode unique) en Python
Méthode privée en python
Méthode #Monte Carlo pour trouver le rapport de circonférence en utilisant Python
Introduction à la méthode Monte Carlo
Suppression des substitutions de méthode en Python
Implémentation de la méthode de propagation d'étiquettes en Python
Estimation de π par la méthode de Monte Carlo
Méthode Hash (méthode d'adresse ouverte) en Python
Recherche du rapport de circonférence avec une fonction à 3 lignes [méthode Python / Monte Carlo]
Méthode pour créer un environnement Python dans Xcode 6
Simulation au microscope électronique en Python: méthode multi-coupes (1)
Simulation au microscope électronique en Python: méthode multi-coupes (2)
Algorithme d'alignement par méthode d'insertion en Python
Quadtree en Python --2
Python en optimisation
CURL en Python
Géocodage en python
SendKeys en Python
Méta-analyse en Python
Unittest en Python
Époque en Python
Discord en Python
Allemand en Python
DCI en Python
tri rapide en python
nCr en python
N-Gram en Python
Programmation avec Python
Plink en Python
Constante en Python
FizzBuzz en Python
Sqlite en Python
Étape AIC en Python
LINE-Bot [0] en Python
CSV en Python
Assemblage inversé avec Python
Réflexion en Python
Constante en Python
nCr en Python.
format en python
Scons en Python 3
Puyopuyo en python
python dans virtualenv
PPAP en Python
Quad-tree en Python
Réflexion en Python
Chimie avec Python
Méthode Johnson (python)
Hashable en Python
DirectLiNGAM en Python
LiNGAM en Python
Aplatir en Python
[Python] Méthode Semi-Lagrange
Aplatir en python
Jeu de compression Dominion analysé par la méthode de Monte Carlo