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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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'' >>>
Partager