Bonjour,
j'ai rédigé le script suivant afin de représenter une trajectoire et le vecteur vitesse à partir d'un fichier csv qui comporte sur chaque ligne
trois valeurs : le temps, l'abscisse et l'ordonnée mais rien n'apparaît sur les figures, pourriez-vous me dire où est mon erreur pour que je la corrige. Merci :

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
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
 
import os
 
 
fichier = open('chute_libre.csv','r')
lignes = fichier.readlines()
 
##########Extraction des données#########
#chaque ligne contient au moins 3 données. Le temps, l'abscisse et l'ordonnée de chaque point.
#on créer pour chacun une liste, qui contiendra chacune de ces valeurs
listeTemps = []
listeX = []
listeY=[]
 
#Pour chaque ligne on extrait les 3 données, puis on ajoute dans la liste
 
################# PARTIE 1 A COMPLÉTER############################
for ligne in lignes[1:] :
    try :  # nécessaire pour certaines lignes avec des caractères
        t, x, y = ligne.split('\t') # '\t' correspond au caractère "tabulation"
        listeTemps.append(float(t.replace(',', '.').rstrip('\t\n')))
        listeX.append(float(x.replace(',', '.').rstrip('\t\n')))
        listeY.append(float(y.strip().replace(',', '.').rstrip('\t\n')))
    except : pass
print("listeTemps : ",listeTemps)
print("listeX : ", listeX)
print("listeY : ", listeY)
 
##################################################################
 
 
###########tracé des courbes souhaitées###########
#on trace les ordonnées en fonction du temps :
import matplotlib.pyplot as plt
import math
 
##on veut ici tracer X=f(t) et Y=f(t) sur le même graphique
################# PARTIE 2 A COMPLÉTER############################
plt.figure(1)
plt.plot(listeTemps, listeY,  label = "ordonnées")
plt.plot(listeTemps, listeX,  label = "abscisses")
plt.legend()
plt.show()
 
##################################################################
 
##on souhaite maintenant calculer les vitesses instantanées à partir
## des coordonnées des points.
vitessesX = [] # on crée la liste des vitesses en X
vitessesY = [] # on crée la liste des vitesses en Y
vitesses = [] #cette liste contiendra la valeur du vecteur vitesse
 
echelleVitesses=1.5 #a changer pour augmenter la longueur des fleches si besoin
 
################# PARTIE 3 A COMPLÉTER############################
# calculer la vitesse  en X instantanée en 1 point et l'ajouter à la liste vitessesX.
# calculer la vitesse  en Y instantanée en 1 point et l'ajouter à la liste vitessesY.
# calculer la longueur du vecteur vitesse et l'ajouter à la liste vitesses.
for i in range(1, len(listeX)-1) :
    vitessesX.append(echelleVitesses * (listeX[i + 1] - listeX[i - 1]) / (listeTemps[i + 1] - listeTemps[i - 1]))
    vitessesY.append(echelleVitesses * (listeY[i + 1] - listeY[i - 1]) / (listeTemps[i + 1] - listeTemps[i - 1]))
    vitesses.append(math.sqrt(vitessesY[i - 1] ** 2 + vitessesX[i - 1] ** 2))  # on calcule la norme si besoin
    None
 
##################################################################
print("Vitesses :", vitesses)
 
#On affiche les vecteurs vitesses aux points.
plt.quiver(listeX[1:-1],  listeY[1:-1], vitessesX,  vitessesY)
plt.show()
 
#montrer graphiquement que la vitesse verticale est proportionnelle au temps
# et que la vitesse horizontale est constante
################# PARTIE 4 A COMPLÉTER############################
plt.figure(2)
plt.plot(vitesses, listeY[1:-1],  label = "ordonnées")
plt.legend()
plt.show()