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() |