Méthode #Monte Carlo pour trouver le rapport de circonférence en utilisant Python

en premier

Dans cet article C'est un article qui explique le programme pour trouver le rapport de circonférence en utilisant la méthode de Monte Carlo écrite dans la tension de minuit telle qu'elle est en regardant la [Video] de Lambda (https://www.youtube.com/watch?v=Ymtb47ZfMgI). N'en attendez pas trop car c'est la tension de minuit!

Le code est terrible

import matplotlib.pyplot as plt
import random

Xlist=[]
Ylist=[]
Number_list=[]
pi=0
pi_list=[]

for i in range(15000):
    Xlist.append(random.uniform(0,1))
    Ylist.append(random.uniform(0,1))
    if (i+1)%10 == 0:
        Number_list.append(i+1)
        pi_list.append((pi/(i+1))*4)
    if Xlist[i]**2+Ylist[i]**2 <= 1 and (i+1)%10 == 0:
        Number_list.append(i+1)
        pi_list.append((pi/(i+1))*4)
        pi+=1
    elif Xlist[i]**2+Ylist[i]**2 <= 1:
        pi+=1

print((pi/(i+1))*4)
plt.plot(Number_list,pi_list)
plt.show()

1.png Qu'est-ce que ce n'est pas sale Cela fonctionne, mais le même processus est écrit plusieurs fois et c'est gênant, alors je l'ai réécrit le matin.

import matplotlib.pyplot as plt
import random

Xlist=[]
Ylist=[]
Number_list=[]
pi=0
pi_list=[]

for i in range(15000):
    Xlist.append(random.uniform(0,1))
    Ylist.append(random.uniform(0,1))
    if (i+1)%10 == 0:
        Number_list.append(i+1)
        pi_list.append((pi/(i+1))*4)
    if Xlist[i]**2+Ylist[i]**2 <= 1:
        pi+=1

print((pi/(i+1))*4)
plt.plot(Number_list,pi_list)
plt.show()

C'est un peu mieux. Expliquons le code ligne par ligne.

import matplotlib.pyplot as plt
import random

Dans la première ligne, une bibliothèque appelée ** matplotlib **, qui est pratique pour dessiner des graphiques, est disponible sous le nom ** plt **. La deuxième ligne importe une bibliothèque qui peut générer des valeurs aléatoires appelées ** random **.

Xlist=[]
Ylist=[]
Number_list=[]
pi=0
pi_list=[]

Ici, les variables nécessaires au calcul des différents rapports de circonférence sont déclarées. Les coordonnées des points générés aléatoirement sont stockées dans ** Xlist et Ylist **, et il est déterminé si les points sont ou non à l'intérieur du cercle dans un calcul ultérieur. ** Number_list ** crée la colonne de nombre d'égalité requise pour la création du graphique. En fait, il est plus rapide de créer d'abord une séquence de nombres à différence égale en utilisant numpy, mais cette fois, il était difficile de trouver la méthode, alors je l'ai passée (Saborima). ** pi ** est utilisé pour enregistrer le nombre total de points tracés à l'intérieur du cercle, et ** pi_list ** est utilisé pour enregistrer le rapport de circonférence calculé au format liste.

for i in range(15000):
    Xlist.append(random.uniform(0,1))
    Ylist.append(random.uniform(0,1))
    if (i+1)%10 == 0:
        Number_list.append(i+1)
        pi_list.append((pi/(i+1))*4)
    if Xlist[i]**2+Ylist[i]**2 <= 1:
        pi+=1

Ici, le processus suivant est répété 15 000 fois en utilisant l'instruction for (si un humain le fait, il mourra). Utilisez le module ramdom pour stocker les coordonnées de point dans ** Xlist et Ylist **. Pour faciliter l'explication, je vais expliquer le bloc de ** if Xlist [i] ** 2 + Ylist [i] ** 2 <= 1: **. Je ne vais pas expliquer l'explication ennuyeuse ici, x^2+y^2=r^2 Pour le moment, si les nombres stockés à la fin de Xlist et Ylist sont au carré et ajoutés au carré du rayon ou moins, vous pouvez voir qu'il y a un point dans le cercle. L'instruction if ci-dessus exprime cela sous forme de formule. Puisque cette instruction if montre que le point est à l'intérieur du cercle, ajoutez 1 à pi. Enfin, à propos du bloc de ** if (i + 1)% 10 == 0: **. Ici, le rapport de circonférence est calculé une fois toutes les dix fois et stocké dans pi_list, puis le nombre est ajouté pour faire de Number_list une colonne de nombres de différence égale.

plt.plot(Number_list,pi_list) plt.show() C'est un programme qui ne crée que des graphiques, donc je ne vais pas l'expliquer (découpé).

À la fin

Je ne pense pas que vous en ayez besoin, mais je l'ai fait PDF et j'ai résumé le contenu de cette fois. L'historique du programme est étonnamment court, alors n'hésitez pas à nous le faire savoir dans les commentaires si vous faites une erreur! !! S'il vous plaît laissez un commentaire si vous le souhaitez.

Recommended Posts

Méthode #Monte Carlo pour trouver le rapport de circonférence en utilisant Python
Simuler la méthode Monte Carlo en Python
Saupoudrer de grains de riz pour trouver le rapport de circonférence (méthode de Monte Carlo)
Recherche du rapport de circonférence avec une fonction à 3 lignes [méthode Python / Monte Carlo]
Méthode de Monte Carlo
Essayez d'implémenter la méthode Monte Carlo en Python
Calcul de l'itinéraire le plus court selon la méthode de Monte Carlo
Sortie sur "LED 7 segments" en utilisant python avec Raspberry Pi 3!
Publier sur Twitter en utilisant Python
Commencez à Selenium en utilisant python
Trouvons le rapport de circonférence avec Python
Comment installer Python à l'aide d'Anaconda
Estimation de π par la méthode de Monte Carlo
les débutants en python ont essayé de le découvrir
[Raspberry Pi] Changement par défaut de Python en Python3
(Python) Valeur attendue ・ J'ai essayé de comprendre attentivement l'échantillonnage Monte Carlo
Trouvez le ratio de la superficie du lac Biwa par la méthode de Monte Carlo
De Python à l'utilisation de MeCab (et CaboCha)
Méthode pour créer un environnement Python dans Xcode 6
[Introduction à Udemy Python3 + Application] 25. Méthode de type dictionnaire
Introduction à la simulation d'événements discrets à l'aide de Python # 1
[Introduction à Udemy Python3 + Application] 13. Méthode de caractères
Détectez la "luminosité" en utilisant python sur Raspberry Pi 3!
Connectez-vous à Slack à l'aide de requêtes en Python
Essayez d'utiliser Excel en utilisant Python (Xlwings)
Exécutez un servomoteur en utilisant python sur Raspberry Pi 3
Vider les tables BigQuery dans GCS à l'aide de Python
Introduction à la simulation d'événements discrets à l'aide de Python # 2
Détectez la température à l'aide de python sur Raspberry Pi 3!
[Introduction à Udemy Python3 + Application] 29. Méthode Set
[Circuit x Python] Comment trouver la fonction de transfert d'un circuit en utilisant Lcapy
Jeu de compression Dominion analysé par la méthode de Monte Carlo
Procédure pour utiliser l'API WEB de TeamGant (en utilisant python)
Détectez les interrupteurs à glissière à l'aide de python sur Raspberry Pi 3!
Présentation de 4 façons de surveiller les applications Python à l'aide de Prometheus
Comment utiliser Raspeye Pie Camera Python
Je souhaite envoyer un e-mail depuis Gmail en utilisant Python.
J'ai essayé de trouver le rapport de circonférence par 100 millions de chiffres
Implémentation minimale d'Union Find en Python
Pour remplacer dynamiquement la méthode suivante en python
Détectez les commutateurs magnétiques à l'aide de python sur Raspberry Pi 3!
PRML Chapitre 11 Implémentation Python Monte Carlo Chaîne de Markov
Sonnez le buzzer en utilisant python sur Raspberry Pi 3!
Convertir STL en maillage Voxel à l'aide de Python VTK
[Introduction à l'algorithme] Trouvez l'itinéraire le plus court [Python3]
Connectez votre Raspberry Pi à votre smartphone en utilisant Blynk
Connectez-vous à MySQL avec Python sur Raspberry Pi
Commencez à utiliser Python
Scraping à l'aide de Python
Méthode Johnson (python)
[Python] Méthode Semi-Lagrange
"Backport" vers python 2
La première méthode de Monte Carlo en chaîne de Markov par PyStan
De la configuration du Raspberry Pi à l'installation de l'environnement Python
Comment configurer un environnement Python à l'aide de pyenv
Comparaison de vitesse de chaque langue par la méthode de Monte Carlo
(Python) Essayez de développer une application Web en utilisant Django
Comment soumettre automatiquement des formulaires Microsoft à l'aide de python (version Mac)
Notification PUSH de Python vers Android à l'aide de l'API de Google