Question

Retrouver tous les sujets résolus.
Répondre
maxime

Question

Message par maxime » mer. 30 mars 2022 17:06

Bonjour
ou tester un script python qui commence par (site internet) :
import matplotlib.pyplot as plt
import numpy as np
dt=0.050
...

Merci
sos-math(21)
Messages : 10334
Enregistré le : lun. 30 août 2010 11:15

Re: Question

Message par sos-math(21) » mer. 30 mars 2022 17:13

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.
maxime

Re: Question

Message par maxime » mer. 30 mars 2022 17:23

Non, ca ne marche pas...
J'ai cliqué sur l'icone et rien n'apparait...
sos-math(21)
Messages : 10334
Enregistré le : lun. 30 août 2010 11:15

Re: Question

Message par sos-math(21) » mer. 30 mars 2022 17:24

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.
maxime

Re: Question

Message par maxime » mer. 30 mars 2022 17:29

sos-math(21)
Messages : 10334
Enregistré le : lun. 30 août 2010 11:15

Re: Question

Message par sos-math(21) » mer. 30 mars 2022 17:31

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.
maxime

Re: Question

Message par maxime » mer. 30 mars 2022 17:33

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()
sos-math(21)
Messages : 10334
Enregistré le : lun. 30 août 2010 11:15

Re: Question

Message par sos-math(21) » mer. 30 mars 2022 17:38

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
maxime

Re: Question

Message par maxime » mer. 30 mars 2022 17:46

Merci mais personnellement ca ne marche toujours pas alors que j'ai tout bien fais...
sos-math(21)
Messages : 10334
Enregistré le : lun. 30 août 2010 11:15

Re: Question

Message par sos-math(21) » mer. 30 mars 2022 17:53

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
maxime

Re: Question

Message par maxime » mer. 30 mars 2022 19:29

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 !
sos-math(21)
Messages : 10334
Enregistré le : lun. 30 août 2010 11:15

Re: Question

Message par sos-math(21) » mer. 30 mars 2022 19:36

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 ?
Répondre