Page 1 sur 1

Question

Posté : mer. 30 mars 2022 17:06
par maxime
Bonjour
ou tester un script python qui commence par (site internet) :
import matplotlib.pyplot as plt
import numpy as np
dt=0.050
...

Merci

Re: Question

Posté : mer. 30 mars 2022 17:13
par sos-math(21)
Bonjour,
tu peux essayer avec la plateforme basthon, en mode console : https://basthon.fr/
Normalement, cela fonctionne, il faut cliquer sur l'icône des images pour obtenir le graphique si tu en as un à afficher :
basthon_exemple.jpg
Dis moi si cela fonctionne.

Re: Question

Posté : mer. 30 mars 2022 17:23
par maxime
Non, ca ne marche pas...
J'ai cliqué sur l'icone et rien n'apparait...

Re: Question

Posté : mer. 30 mars 2022 17:24
par sos-math(21)
Bonjour,
quel est ton programme ?
L'as-tu exécuté ? Peut-être faut-il appeler une fonction ?
Merci de m'envoyer ton script et j'essaierai de l'exécuter.

Re: Question

Posté : mer. 30 mars 2022 17:29
par maxime

Re: Question

Posté : mer. 30 mars 2022 17:31
par sos-math(21)
Essaie de rajouter la ligne suivante à la fin de ton script :

Code : Tout sélectionner

plt.show()
Si tu veux que je l'exécute, il faut me l'envoyer au format texte pour ne pas avoir à tout ressaisir.

Re: Question

Posté : mer. 30 mars 2022 17:33
par maxime
Toujours pas...

voila
import matplotlib.pyplot as plt
import numpy as np
dt=0.050

x=np.array([0.000,0.1270,0.2520,0.3770,0.5040,0.6290,0.7510,0.8750,0.9970,1.120,1.250,1.370,1.490,1.620,1.750])
y=np.array([0.000,0.1880,0.3600,0.5010,0.6230,0.7200,0.7890,0.8390,0.8610,0.8640,0.8450,0.8010,0.7290,0.6370,0.5260])
plt.plot(x,y,"b*")
N=14
for i in range(1,N-1) :
vx=((x[i+1])-(x[i-1]))/(2*dt)
vy=((y[i+1])-(y[i-1]))/(2*dt)
echelle=0.05
vx=vx*echelle
vy=vy*echelle
plt.quiver(x,y,vx,vy,color="red",scale=1,scale_units="xy")

plt.title("Trajectoire de la balle et vecteurs vitesse")
plt.xlabel("Position en abscisse (m)")
plt.ylabel("Position en ordonnée (m)")
plt.axis()

Re: Question

Posté : mer. 30 mars 2022 17:38
par sos-math(21)
Merci,
pour moi,
avec ce script :

Code : Tout sélectionner

import matplotlib.pyplot as plt
import numpy as np
dt=0.050

x=np.array([0.000,0.1270,0.2520,0.3770,0.5040,0.6290,0.7510,0.8750,0.9970,1.120,1.250,1.370,1.490,1.620,1.750])
y=np.array([0.000,0.1880,0.3600,0.5010,0.6230,0.7200,0.7890,0.8390,0.8610,0.8640,0.8450,0.8010,0.7290,0.6370,0.5260])
plt.plot(x,y,"b*")
N=14
for i in range(1,N-1) :
    vx=((x[i+1])-(x[i-1]))/(2*dt)
    vy=((y[i+1])-(y[i-1]))/(2*dt)
echelle=0.05
vx=vx*echelle
vy=vy*echelle
plt.quiver(x,y,vx,vy,color="red",scale=1,scale_units="xy")

plt.title("Trajectoire de la balle et vecteurs vitesse")
plt.xlabel("Position en abscisse (m)")
plt.ylabel("Position en ordonnée (m)")
plt.axis()
plt.show()

cela fonctionne :
basthon_2.jpg
Pense à bien décaler tes lignes pour la boucle for et à rajouter plt.show() à la fin.
Bonne continuation

Re: Question

Posté : mer. 30 mars 2022 17:46
par maxime
Merci mais personnellement ca ne marche toujours pas alors que j'ai tout bien fais...

Re: Question

Posté : mer. 30 mars 2022 17:53
par sos-math(21)
On reprend :
tu fermes la fenêtre de basthon qui serait encore ouverte et tu ouvres une nouvelle fenêtre de ton navigateur :
Tu vas sur le site Basthon : https://basthon.fr/
Tu choisis le mode console python.
Tu copies le code que j'ai donné dans mon précédent message.
import matplotlib.pyplot as plt
import numpy as np
dt=0.050

x=np.array([0.000,0.1270,0.2520,0.3770,0.5040,0.6290,0.7510,0.8750,0.9970,1.120,1.250,1.370,1.490,1.620,1.750])
y=np.array([0.000,0.1880,0.3600,0.5010,0.6230,0.7200,0.7890,0.8390,0.8610,0.8640,0.8450,0.8010,0.7290,0.6370,0.5260])
plt.plot(x,y,"b*")
N=14
for i in range(1,N-1) :
vx=((x[i+1])-(x[i-1]))/(2*dt)
vy=((y[i+1])-(y[i-1]))/(2*dt)
echelle=0.05
vx=vx*echelle
vy=vy*echelle
plt.quiver(x,y,vx,vy,color="red",scale=1,scale_units="xy")

plt.title("Trajectoire de la balle et vecteurs vitesse")
plt.xlabel("Position en abscisse (m)")
plt.ylabel("Position en ordonnée (m)")
plt.axis()
plt.show()

Tu cliques sur l'icône exécuter
Puis tu cliques à droite sur l'icone représentant une image.
Il faut parfois un peu de temps mais tu devrais avoir ton graphique.
Sinon essaie avec trinket : https://trinket.io/python3
Bonne continuation

Re: Question

Posté : mer. 30 mars 2022 19:29
par maxime
Merci infiniment SOS21, j'ai réussi.

J'avais une petite question : pourquoi les instructions de la boucle "for" ne peuvent ils pas être réaliser une énième fois ?
Je pense que je dois regarder ce qui est indiqué dans l'instruction "For i in range(1,N-1) mais après je ne sais pas trop..

Merci !

Re: Question

Posté : mer. 30 mars 2022 19:36
par sos-math(21)
Bonjour,
tu as réussi sur Basthon ou sur Trinket ?
ta liste contient 15 valeurs, qui sont repérées par les indices de 0 à 14.
Comme tu calcules ton vecteur vitesse de proche en proche en faisant un écart entre deux positions :

Code : Tout sélectionner

vx=((x[i+1])-(x[i-1]))/(2*dt)
vy=((y[i+1])-(y[i-1]))/(2*dt)
Tu pars de l'indice i = 1 et tu fais l'écart entre les positions i-1 = 0 et i+1 = 2;
puis tu passes à l'indices suivant : i = 2, écart entre les positions 1 et 3;
et ainsi de suite jusqu'à i = 13 : écart entre les positions 12 et 14.
En python, le range est un itérateur qui n'inclut pas la borne de droite : range(1,14) correspond à la séquence 1,2,3,...,13.
Du fait de la construction de ta liste, tu ne peux pas avoir d'itération supplémentaire puisque la dernière fait le calcul entre les positions 12 et 14, et 14 est la dernière position de la liste.
Est-ce plus clair ?