1 pièce(s) jointe(s)
Erreur sur Edupython - Méthode de Monte-Carlo
Bonjour,
Lorsque je fais tourner ce programme (approximation de pi par la méthode de Monte-Carlo) j'ai ce message d'erreur que je comprends pas.
Visiblement l'erreur vient de la fonction sqrt. Pourtant lorsque j'isole la partie du script qui la fait intervenir, pas de pb (le quart de cercle est bien tracé).
Merci de votre aide.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45
| """
UNE APPROXIMATION DE pi PAR LA
METHODE DE MONTE-CARLO
"""
"""
Visualisation de la question précédente
"""
from math import*
from random import*
import matplotlib.pyplot as plt
N=int(input("combien de simulations souhaitez-vous faire?"))
# Tracé du quart de cercle
h=1/N
x=[k*h for k in range (N)]
y=[sqrt(1-(k*h)**2) for k in range (N)]
X=[]
Y=[]
Q=0
for i in range(N):
X.append(random())
Y.append(random())
if (X[i]**2+Y[i]**2)<1:
plt.scatter(X,Y,"b.",ms=3) # pour des points du nuage (X;Y) non reliés
Q=Q+1
else:
plt.scatter(X,Y,"r.",ms=3)
frequence=Q/N
print(frequence)
approx_pi=4*frequence
print("une approximation de pi est ",approx_pi)
plt.axis(Xmin=0,Xmax=1,Ymin=0,Ymax=1)
plt.plot(x,y) # pour des points du nuage (x;y) reliés par des segments
plt.scatter(X,Y,"b.",ms=3) # pour des points du nuage (X;Y) non reliés
title="Monte-Carlo pour ",N," simulations: pi égal " ,approx_pi, " environ"
plt.title(title)
plt.grid()
plt.show() |
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| *** Console de processus distant Réinitialisée ***
Traceback (most recent call last):
File "Z:\Users\christophe\Documents\WORK\COURS MATHS\ - LYCEE\1Spé_1920\11. Python\chapitre_TP3_p287 PI Monte Carlo\chap_9_TP3p287_Q2_perso_bis -c.py", line 31, in <module>
plt.scatter(X,Y,"r.",ms=3)
File "C:\EduPython\App\lib\site-packages\matplotlib\pyplot.py", line 3475, in scatter
edgecolors=edgecolors, data=data, **kwargs)
File "C:\EduPython\App\lib\site-packages\matplotlib\__init__.py", line 1867, in inner
return func(ax, *args, **kwargs)
File "C:\EduPython\App\lib\site-packages\matplotlib\axes\_axes.py", line 4334, in scatter
alpha=alpha
File "C:\EduPython\App\lib\site-packages\matplotlib\collections.py", line 929, in __init__
self.set_sizes(sizes)
File "C:\EduPython\App\lib\site-packages\matplotlib\collections.py", line 902, in set_sizes
scale = np.sqrt(self._sizes) * dpi / 72.0 * self._factor
TypeError: ufunc 'sqrt' not supported for the input types, and the inputs could not be safely coerced to any supported types according to the casting rule ''safe''
>>> |