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.
  • 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] =