Tracer vecteurs vitesses sur Python

Tracer vecteurs vitesses sur Python

Messagede g9moutiers » 03 Mai 2019, 14:17

Bonjour,

Comme beaucoup je suis en train de bosser Python pour l'an prochain :
Sur un TP : pointage vidéo puis récupération des coordonnées
Je rentre les coordonnées sur python et j'affiche le nuage de points puis après j'essaie d'afficher les vecteurs vitesses et là ça bugue... j'arrive pas à trouver mon erreur (je démarre avec Python donc c'est pas évident). Est-ce que quelqu'un pourrait m'aider et me dire ce qui ne va pas pour l'affichage des vecteurs vitesses ?

Voici mon code :

import matplotlib.pyplot as plt
import numpy as np
# Données expérimentales
x = np.array([0.0414,0.507,1.27,2.02,2.74,3.46,4.15,4.82]) # Liste des positions horizontales du ballon
y = np.array([1.59,2.37,3.35,3.85,3.94,3.61,2.84,1.73]) # Liste des positions verticales du ballon
dt = 0.200
# Vecteur vitesse
def vecteur_vitesse(x,y,dt,i) : # Fonction traçant un vecteur vitesse en Mi
vx = (x[i+1]-x[i-1]/2*dt)
vy = (y[i+1]-y[i-1]/2*dt)
plt.quiver(x[i],y[i],vx,vy,angles="xy", scale_units="xy", scale=1, color="red")
# Affichage
plt.plot(x,y,"bo") # b : blue , o : forme des points
plt.xlabel("x (m)")
plt.ylabel("y (m)")
plt.title("Trajectoire du ballon")
plt.show()

Merci beaucoup à ceux qui prendront le temps de m'aider !
Gwendoline
g9moutiers
 
Messages: 132
Inscription: 19 Sep 2012, 16:30
Académie: créteil
Poste: Enseignant en Collège/Lycée

Re: Tracer vecteurs vitesses sur Python

Messagede ikik98712 » 03 Mai 2019, 14:25

Bonjour,

pour pouvoir t'aider,
- peux tu poster ton fichier py pour eviter de le retaper ?
- peux tu egalement nous envoyer l'erreur affichée par ton editeur. ?
ikik98712
 
Messages: 57
Inscription: 07 Oct 2018, 09:23
Académie: académie de Grenoble
Poste: Enseignant en Lycée

Re: Tracer vecteurs vitesses sur Python

Messagede g9moutiers » 03 Mai 2019, 14:30

Bonjour,
Merci de me répondre

Voici le fichier joint, je n'ai aucune erreur qui s'affiche simplement les vecteurs vitesses qui n'apparaissent pas !
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
g9moutiers
 
Messages: 132
Inscription: 19 Sep 2012, 16:30
Académie: créteil
Poste: Enseignant en Collège/Lycée

Re: Tracer vecteurs vitesses sur Python

Messagede g9moutiers » 03 Mai 2019, 14:44

J'ai trouvé !

J'ai rajouté une ligne de code :
vecteur_vitesse(x,y,dt,5)

Par contre je n'arrive pas à afficher tous les vecteurs vitesses en même temps (avec cette ligne de code c'est celui au point M5 qui s'affiche si je veux celui en M2 je change le 5 en 2 dans ma ligne de code). Est-ce que quelqu'un à une solution ?

Gwendoline
g9moutiers
 
Messages: 132
Inscription: 19 Sep 2012, 16:30
Académie: créteil
Poste: Enseignant en Collège/Lycée

Re: Tracer vecteurs vitesses sur Python

Messagede ikik98712 » 03 Mai 2019, 14:45

une boucle for
ikik98712
 
Messages: 57
Inscription: 07 Oct 2018, 09:23
Académie: académie de Grenoble
Poste: Enseignant en Lycée

Re: Tracer vecteurs vitesses sur Python

Messagede fraffin » 03 Mai 2019, 15:28

Attention la définition du vecteur vitesse est différentes dans les nouveaux programmes .
fraffin
 
Messages: 409
Inscription: 09 Avr 2011, 13:17
Académie: Poitiers
Poste: Enseignant en Lycée

Re: Tracer vecteurs vitesses sur Python

Messagede g9moutiers » 03 Mai 2019, 15:33

euh je sais pas trop ce qu'est une boucle for mais je vais chercher merci !

Sinon ce que j'ai fais c'est dupliquer la ligne vecteur_vitesse(x,y,dt,5) en changeant le chiffre à chaque fois mais ça va bien si on a que quelques tracés à faire sinon c'est galère !
g9moutiers
 
Messages: 132
Inscription: 19 Sep 2012, 16:30
Académie: créteil
Poste: Enseignant en Collège/Lycée

Re: Tracer vecteurs vitesses sur Python

Messagede ikik98712 » 03 Mai 2019, 15:55

for i in range(0,n): # n etant le nombre de vecteur a tracer
vecteur_vitesse(x,y,dt,i) # decaler la ligne
ikik98712
 
Messages: 57
Inscription: 07 Oct 2018, 09:23
Académie: académie de Grenoble
Poste: Enseignant en Lycée

Re: Tracer vecteurs vitesses sur Python

Messagede ike » 03 Mai 2019, 16:07

tu peux remplacer ton bloc def vecteur... par ceci

for i in range(0,7):
vx = (x[i+1]-x[i])/dt
vy = (y[i+1]-y[i])/dt
plt.quiver(x[i],y[i],vx,vy,angles="xy", scale_units="xy", scale=10, color="red")

Attention au 7 qui est le nombre de points moins 1 que tu as dans ton tableau.
En faire une variable pourrait être mieux.
J'ai aussi ajusté scale car sinon les vecteurs sortent de la figure...
Et j'ai modifié la formule pour coller aux "nouveaux" standards :lol: :lol: :lol: eh oui en Physique on se passe difficilement, non pas du tout des maths !

P.S. moi aussi je débute :)
Edit : devancé par ikik98712 :D
Dans l'art de la guerre, la destruction de l'ennemi n'est qu'un pis-aller, le raffinement suprême c'est la destruction de ses plans... SunTzu
La connerie c'est comme le judo, il faut se servir de la force de l'autre... Jean Yanne
ike
 
Messages: 721
Inscription: 20 Aoû 2012, 11:32
Académie: Strasbourg
Poste: Professeur retraité

Re: Tracer vecteurs vitesses sur Python

Messagede Thibaut » 03 Mai 2019, 17:20

Pour améliorer un petit peu, on peut modifier la sélection
for i in range(0,7): signifie qu'on va balayer i de 0 à 7
for i in range(7): fait la même chose

La fonction len(x) renvoie le nombre d'élément dans la liste x
for i in range(len(x)-1) permet de balayer cette liste. Le -1 permet d'exclure le calcul impossible du dernier point
Thibaut
 
Messages: 243
Inscription: 21 Aoû 2011, 13:48
Académie: Ile de France
Poste: Enseignant en Collège/Lycée

Suivante

Retourner vers Mouvements et interactions

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité