Présentation de l'activité et objectif

Vous disposez de votre fichier de pointage au format csv contenant les positions du ballon au cours du temps.

Le programme en Python va permettre :

  • d'ouvrir ce fichier de pointage ;

  • de créer les grandeurs nécessaires au calcul de l'énergie cinétique, de l'énergie potentielle de pesanteur et de l'énergie mécanique ;

  • de calculer les valeurs de ces énergies au cours du mouvement ;

  • de tracer la représentation graphique de leurs variations au cours du temps.

Rappel : Expressions utiles au calcul des énergies

Expressions des énergies

\[E_C = \dfrac{1}{2} \cdot m \cdot v^2\]
\[E_P = m \cdot g \cdot z\]
\[E_M = \underbrace{E_C}_\text{Énergie cinétique} + \underbrace{E_P}_\text{Énergie potentielle}\]

On rappelle la définition du vecteur vitesse et les éléments nécessaires à la détermination de la valeur de la vitesse :

\[\vec v = \begin{pmatrix} v_x \\ v_y \end{pmatrix}\]

avec

\[v_x \left(t_i \right) = \dfrac{x_{i+1} - x_{i-1}}{2 \times \Delta t}\]
\[v_y \left(t_i \right) = \dfrac{y_{i+1} - y_{i-1}}{2 \times \Delta t}\]

d'où la valeur de la vitesse :

\[v = \| \vec v\| = \sqrt {\left( v_x^2 + v_y^2\right)} = \left(v_x^2 + v_y^2 \right)^{1/2}\]

Programme à compléter

Question

Le programme complété doit permettre :

  • d'obtenir les valeurs de l'énergie cinétique Ec, potentielle de pesanteur Ep et mécanique EM à tout instant ;

  • la représentation graphique des variations de chaque énergie au cours du temps.

Quelques éléments de syntaxe Python :

  • len(nom_liste) renvoie le nombre de termes d'une liste ;

  • le premier terme d'une liste a pour indice 0 et le dernier len(liste)-1.

  • x[ : :2] extrait un terme sur 2 d'une liste ;

  • x[1 :-1 :] ne prend pas en compte le deuxième et le dernier terme d'une liste.

  • en Python, la syntaxe de la puissance est le double astérisque ** : \(b^2\) s'écrit dans un programme b**2. La racine carrée peut s'écrire b**0.5.

On donne ci-dessous le programme commenté à compléter pour obtenir le tracé des vecteurs vitesse et variation de vitesse.

Vous pourrez en faire un copier-coller dans votre éditeur Python en activant d'abord l'affichage en texte brut :

1
# Ce programme permet d'obtenir les variations des énergies potentielle, cinétique
2
# et mécanique au cours du temps à partir d'un fichier csv contenant les positions
3
# x et y au cours du temps (obtenu par un pointage sur une vidéo)
4
# Les zones marquées À COMPLÉTER attendent que vous entriez les valeurs ou expressions correctes.
5
6
from tkinter.filedialog import askopenfilename
7
import matplotlib.pyplot as plt
8
from numpy import loadtxt
9
10
# Ouverture en mode graphique d'un fichier de pointage au format CSV
11
# Ne pas modifier les lignes 7 à 17
12
13
# on peut donner le chemin d'accès vers le fichier ou la fonction askopenfilename
14
name = askopenfilename(filetypes=(("Fichier CSV", "*.csv"), ("Fichier Texte",
15
                                                             "*.txt"), ("Tous les fichiers", "*.*")), title="Choisir un fichier")
16
17
# name contient le chemin et le nom du fichier à traiter.
18
# On importe les valeurs de la date t, de l'abscisse x et de l'ordonnée y dans trois listes.
19
t, x, y = loadtxt(name, skiprows=1, delimiter=";",
20
                  unpack=True, usecols=(0, 1, 2))
21
22
# On dispose à ce stade des trois listes contenant les coordonnées du ballon.
23
24
dt = t[1] - t[0]  # Détermination de l'intervalle de temps entre deux pointages
25
26
# FIN D'IMPORTATION DES DONNÉES DE POSITION
27
28
# Saisie au clavier de la masse de la balle
29
m = float(input("Entrez la masse de l'objet en kg : "))
30
g = 9.8  # intensité de la pesanteur
31
dt = t[1] - t[0]  # Calcul de l'intervalle de temps entre deux pointages
32
33
"""Calcul des coordonnées des vecteurs vitesse
34
Compléter les zones indiquées en adaptant en Python les relatins données dons
35
la description de l'activité"""
36
37
# la vitesse n'est pas calculable à la première et à la dernière position
38
vx = [À COMPLÉTER for i in range(1, len(t)-1)]
39
vy = [À COMPLÉTER for i in range(1, len(t)-1)]  # même remarque
40
v = [À COMPLÉTER for i in range(len(vx))]
41
42
"""Calcul des énergies
43
Compléter les zones indiquées en adaptant en Python les relatiosn données dans
44
la description de l'activité"""
45
46
# y[1:-1:] : on ne calcule pas pour la première et la dernière position
47
Ep = [À COMPLÉTER for val in y[1:-1:]]
48
Ec = [À COMPLÉTER for val in v]
49
Em = [À COMPLÉTER for i in range(len(Ep))]
50
51
# Calcul des coordonnées des vecteurs variation de vitesse
52
"""Les listes en abscisses et ordonnées doivent avoir les mêmes dimensions :
53
    on supprime la première et la dernière date de la liste t"""
54
55
plt.close()
56
plt.plot(t[1:-1:], Ep, "b+", label="Énergie potentielle")
57
plt.plot(t[1:-1:], Ec, "r+", label="Énergie cinétique")
58
plt.plot(t[1:-1:], Em, "g+", label="Énergie mécanique")
59
plt.title("Évolution des énergies au cours du temps")
60
plt.xlabel("t (s)")
61
plt.ylabel("Énergies en J")
62
plt.grid()
63
plt.legend()
64
plt.show()
65

Questions :

  1. Dans une boucle for, range(50) permet de faire varier l'indice de 0 à 49 : la valeur 50 n'est pas atteinte.

    Pourquoi choisit-on range(1, len(t) - 1) aux lignes 38 et 39 du programme ?

  2. Compléter le programme (lignes 38 à 40) de façon à obtenir les coordonnées du vecteur vitesse au point n°i (listes vx et vy) et la valeur de la vitesse (liste v).

  3. Compléter les lignes 47 à 49  de façon à calculer les énergies Ep, Ec et Em.

  4. Une fois votre programme complété, utilisez-le avec votre fichier de pointage sur le ballon de basket. On prendra la masse du ballon \(m = 0{,}6\ \mathrm{kg}\)

En cas de problème avec le programme à compléter, vous pouvez récupérer la version complète dans la Solution.