Mouvement circulaire − Vecteur vitesse Vecteur accélération¶
- Objectif : Représenter, à l’aide de python, des vecteurs accélération d’un point lors d’un mouvement circulaire.
- Ce premier script utilise les mesures expérimentales du mouvement d'une centrifugeuse stockées dans un fichier csv.
- Coller le bloc suivant en premier. Il importe les librairies nécessaires et crée une fonction permettant de tracer des vecteurs.
In [1]:
# Importation des modules
import numpy as np
import matplotlib.pylab as plt
import csv
# Création d'une fonction permettant de tracer des vecteurs avec la légende
def trace_vect(x,y,Vectx,Vecty,titre,couleur,position_du_titre):
# Champs de vecteur
q = plt.quiver(x,y,Vectx,Vecty,color = couleur,width=0.003)
# Légende des vecteurs
plt.quiverkey(q, X=0.075,Y=position_du_titre,U=10,label=titre,labelpos='E',color=couleur)
Le bloc suivant lit et traite le fichier csv « pointage_200ms.csv »
Ce fichier doit se trouver dans le même dossier que le script.
Ne tentez pas d'ouvrir ce fichier texte avec LibreOffice. Sinon, recommencez.
Ce fichier doit se trouver dans le même dossier que le script.
Ne tentez pas d'ouvrir ce fichier texte avec LibreOffice. Sinon, recommencez.
- Coller le bloc suivant à la suite du précédent.
In [2]:
# Importation des données du fichier csv
# Création d'une liste vide appelée « table »
table = []
# Importation des données du fichier dans la liste « table »
# Le fichier csv comporte N+1 lignes de 0 à N − La première ligne contient la légende
with open('pointage_200ms.csv', newline='') as csvfile:
spamreader = csv.reader(csvfile, delimiter=';', quotechar='|')
for row in spamreader:
table.append(row)
# Nombre d'entrées valides de la liste « table » ie nombre de positions
N = len(table) - 1
- À partir des données importées, le bloc suivant crée trois listes temps, x et y, correspondant à la position de la cabine de la centrifugeuse.
- On initialise ensuite des listes pour les composantes de la vitesse et de l'accélération.
- On prévoit leur calcul.
In [3]:
# Initialisation du temps et des positions
temps,x,y = [],[],[]
# Importation des coordonnées X, Y et temps
# Les listes temps, x et y contiennent N valeurs de 0 à N-1.
for i in range(1,N+1):
# La première ligne de « table » contient la légende : on démarre à 1
# Le range ne balaye pas la dernière borne : [1,N+1[ ==> N valeurs de positions
# Génération des listes, avec transformation des données
temps.append(float(table[i][0].replace(',','.')))
x.append(float(table[i][1].replace(',','.')))
y.append(float(table[i][2].replace(',','.')))
# Initialisation des vitesses et des accélérations
# Autant de valeurs possibles que de positions, mais toutes ne sont pas calculables, auquel cas elle valent 0
vx =np.zeros(N) # Vitesse calculée selon l'axe des abscisses
vy =np.zeros(N) # Vitesse calculée selon l'axe des ordonnées
ax =np.zeros(N) # Accélération calculée selon l'axe des abscisses
ay =np.zeros(N) # Accélération calculée selon l'axe des ordonnées
# Coller ici le bloc complété à la question Q2
# Puis coller ici le bloc complété à la question Q3
- Coller le bloc suivant qui gère l'affichage des courbes.
- Donner un titre à votre graphique.
- Exécuter le code.
In [ ]:
# Imposer la taille de la zone de travail
plt.figure(1, figsize=(10,10))
# Tracer le centre de rotation
plt.plot(0,0,"bo")
# Tracer les positions de la cabine
plt.plot(x,y,color='cornflowerblue',marker='.',linestyle='',label="Positions de la cabine")
# Tracer les rayons
for i in range(0,N):
plt.plot([0, x[i]], [0, y[i]], 'k--', lw=0.2)
# Tracer les vecteurs
#trace_vect(x[1:-1],y[1:-1],vx[1:-1],vy[1:-1],"Vecteur vitesse",'seagreen',0.98)
#trace_vect(x[2:-2],y[2:-2],ax[2:-2],ay[2:-2],"Vecteur accélération",'crimson',0.96)
# Position du bloc légende
plt.legend(loc='upper right')
# Étiquettes des axes
plt.xlabel(r'$ x $'+' (m)')
plt.ylabel(r'$ y $'+' (m)')
# Titre du graphique
plt.title('TITRER LE GRAPHIQUE',loc='left')
# Affichage
plt.show()
Q1.
- Décrire le mouvement de la cabine.
Q2.
- Coller le bloc suivant à l'endroit prévu.
- Compléter le bloc pour calculer les composantes du vecteur vitesse.
- Ne pas oublier de décommenter le tracé des vecteurs, et de modifier le titre du graphique.
- Exécuter le code et comparer les résultats à vos prévisions.
In [ ]:
### CALCUL DES COMPOSANTES DU VECTEUR VITESSE ###
# Calculs approchés des coordonnées des vitesses
# N-2 valeurs de vitesse de 1 à N-2
for i in range(1,N-1): # Balaye de [1,N-1[
vx[i] =
vy[i] =
Q3.
- Coller le bloc suivant à l'endroit prévu.
- Compléter le bloc pour calculer les composantes du vecteur accélération.
- Ne pas oublier de décommenter le tracé des vecteurs, et de modifier le titre du graphique.
- Exécuter le code et comparer les résultats à vos prévisions.
In [ ]:
### CALCUL DES COMPOSANTES DU VECTEUR ACCÉLÉRATION ###
#Calculs approchés des coordonnées des accélérations
# N-4 valeurs d'accélération de 2 à N-3
for i in range(2,N-2):
ax[i] =
ay[i] =