Bonjour,
Je rencontre quelques difficulté par rapport au tracé des vecteurs de vitesse via le programme Python notamment au travail 5,6,8. Voilà mon travail (en rouge ce que j'ai modifié par rapport au programme fourni par notre prof):
Travail 1,2,3 : Tracé des successions successifs du système
Travail 4,5,6 : Tracé des vecteurs vitesses en chaque point
Travail 7,8 : Tracé des vecteurs variation de vitesse en chaque point
#importation du module numpy afin de lire le contenu du fichier csv et simplification en np
import numpy as np
#importation du module matplotlib.pyplot pour construire le graphique et simplification en plt#
import matplotlib.pyplot as plt
import csv
pointage = np.loadtxt("parabol.csv",delimiter=';',skiprows=3) #création d'une grandeur nommée pointage correspondant à l'ensemble des données situées dans le fichier ????.csv séparées par des ";" à partir de la 4 ème ligne #
t=pointage[:,0]
x=pointage[:,1] #lecture des abscisses x issues de la première colonne (notée 0) du fichier csv; les données se retrouveront dans un tableau d'une ligne#
y=pointage[:,2] #lecture des ordonnées y issues de la deuxième colonne (notée 1) du fichier csv; les données se retrouveront dans un tableau d'une ligne#
vx=[]
vy=[]
print("temps en s:" ,t)
print("Abscisses x en m :",x) #Affichage du commentaire «Abscisses x en m » suivie de la liste des valeurs correspondantes#
print("Ordonnées y en m :",y) #Affichage du commentaire «Ordonnées y en m » suivie de la liste des valeurs correspondantes
print( " vitesse x",vx)
print( " vitesse y",vy)
plt.xlim(min(x)-2*min (x),1.1*max (x))
plt.ylim(min(y)-2*min (y),1.1*max (y))
plt.grid()
""" TRAVAIL 1:
Taper ci-dessous le code Python permettant de diviser la fenêtre d'affichage en 3 et de tracer le prochain graphique dans la première cellule """
plt.subplot(1,3,1)
""" TRAVAIL 2:
taper, à la place des points entre guillemets, les légendes pour les axes, le titre du graphique"""
plt.xlabel('Distance') #affiche un commentaire sur l'axe des abscisses#
plt.ylabel('Hauteur') #affiche un commentaire sur l'axe des ordonnée#
plt.title('Evolution de la hauteur en fonction de la distance ') #affiche le titre#
""" TRAVAIL 3:
Taper ci-dessous le code Python permettant de tracer l'ordonnée du point en fonction de son abscisse. """
plt.scatter(x,y,s=50,c = 'red',marker= '+')
""" TRAVAIL 4:
Recopier ci-dessous les 5 lignes de programme précédentes et effectuer les modifications """
plt.subplot(1,3,2)
plt.xlabel('Distance') #affiche un commentaire sur l'axe des abscisses#
plt.ylabel('Hauteur') #affiche un commentaire sur l'axe des ordonnée#
plt.title('Tracé des vecteurs vitesses ') #affiche le titre#
plt.scatter(x,y,s=50,c = 'red',marker= '+')
""" TRAVAIL 5:
Créer une boucle permettant de calculer les coordonnées du vecteur vitesse en chaque point tant que cela est possible """
for i in range(len(t)-1):
deltax=( x[i+1]- x[i])/( t[i+1]- x[i])
deltay=( y[i+1]- y[i])/( y[i+1]- y[i])
""" TRAVAIL 6:
Taper ci-dessous le code python permettant de tracer le vecteur vitesse en chaque point"""
for i in range(len(t)-1):
plt.quiver(x0, y0, deltax, deltay, angles='xy', scale=1, scale_units='xy')
""" TRAVAIL 7: """
""" TRAVAIL 8:"""
""" fin du travail """
J'ai déjà donné la réponse :
Mon professeur a lui fait ainsi :
""" TRAVAIL 5:
Créer une boucle permettant de calculer les coordonnées du vecteur vitesse en chaque point tant que cela est possible """
for i in range(len(t)-1):
vitessex = (x[i+1]-x[i])/(t[i+1]-t[i])
vx.append(vitessex)
vitessey = (y[i+1]-y[i])/(t[i+1]-t[i])
vy.append(vitessey)
""" TRAVAIL 6:
Taper ci-dessous le code python permettant de tracer le vecteur vitesse en chaque point"""
for n in range(len(t)-1) :
plt.quiver(x[n], y[n], vx[n], vy[n], angles='xy',scale=30, scale_units='xy',color='red')
Je ne sais pas si c'est la même chose (n'étant pas très doué avec ce logiciel) ... Merci infiniment pour votre aide
On va prendre un exemple :
vx=[1,5]
vx.append(6)
conduit à vx qui vaut [1,5,6]
append veut dire en anglais joindre à
Ici on joint 6 à vx, ou si vous préférez, on ajoute 6 à la fin de la liste vx
plt.quiver(x, y, dx, dy)
Trace le vecteur (dx,dy) au point (x,y)
deltax et x sont des listes pour lesquelles on accède au point i par deltax[i] et x[i] comme vous l'avez déjà fait pour calculer la vitesse.
Quelle différence de notation voyez-vous entre :
plt.quiver(x[n], y[n], vx[n], vy[n], angles='xy',scale=30, scale_units='xy',color='red')
et
plt.quiver(x, y, dx, dy)
C'est la même chose, j'ai juste indiqué les paramètres obligatoires alors que dans votre programme vous avez indiqué des options du type couleur .
x[n] est la coordonnée x du point n et idem pour y vx vy
Vous pouvez écrire si vous voulez en détaillant :
for n in range(len(t)-1) :
x0= x[n] # abscisse point courant
y0= y[n]
deltax = vx[n] # composante x de la vitesse du point courant
delta y= vy[n]
plt.quiver(x0, y0,detax,deltay, angles='xy',scale=30, scale_units='xy',color='red')
Mais à vrai dire, je ne comprends pas trop ce que vous ne comprenez pas.
Oui effectivement cette dernière notation me parle plus. Mais pourquoi mon professeur a utilisé une scale de 30 ?
Pour ce qui est de l'échelle, cela dépend fortement de vos données : l'échelle initiale est définie par l'excursion en x et en y exprimés disons en m, alors que votre vitesse étant en m/s, il faut définir une nouvelle échelle. Pour une même trajectoire de dimension 1mx1m on peut avoir des vitesses de 0,1 m/s ou 10 m/s, il faut donc adopter l'échelle des vitesses je dirai de manière très expérimentale, on laisse l'échelle par défaut, on regarde si les vecteurs sont trop grands ou trop petit et on adapte.
Vous devez être membre accéder à ce service...
Pas encore inscrit ?
1 compte par personne, multi-compte interdit !
Ou identifiez-vous :