Le Brachistochrone (temps le plus court en grec ancien) est le nom donné à une expérience qui permet de montrer que le chemin le plus rapide n'est pas toujours celui que l'on croît ! Nous avons repris les images d'une expérience réalisée à l'EPFL en Suisse. L'expérience a été filmée avec une caméra rapide avec 940 images par seconde.
Les boules partent au même moment avec une vitesse initiale nulle. Après avoir constaté l'ordre d'arrivée des boules, on souhaite analyser plus en détail cette expérience:
Note : Pour ce TP, il sera nécessaire d'importer les bibliothèques suivantes :numpy
, matplotlib.pyplot
et imageio
On ne s'intéresse, dans un premier temps, qu'à la boule blanche qui est placée sur le plan incliné. En négligeant la contribution des forces de frottement mais en tenant compte de l'inertie de la boule, il est possible de montrer que la distance horizontale parcourue $x(t)$ évolue comme :
$$x= A t^2, \quad A = K g \cos (\alpha) \sin (\alpha)$$où $g=9.81 m/s^2$ est l’accélération de la gravité, $\alpha$ est l’angle entre le plan incliné et l’horizontale, et $t$ est le temps compté depuis le lâcher de la boule.
Nous allons calculer la valeur de $K$ qui permet d'approcher au mieux les mesures de l'expérience.
1) Lisez l’image brachistochroneSolo.png avec imread
et affichez-la dans une fenêtre graphique avec imshow
.
2) En survolant avec votre souris l'image, relevez les coordonnées en pixel de la base de la plaque en bois qui nous sert d'étalon. La base du triangle est indiquée par la flèche rouge sur la figure de l'énoncé. Notez les valeurs relevées dans le script et déduisez-en taillepix la taille d’un pixel de l’image en mètres, sachant que la largeur de la plaque en bois vaut $L=0.80m$.
# La ligne magique ""%matplotlib auto" ne sert que pour les notebook jupyter pour activer les plots interactifs.
# Elle est inutile sous Spyder.
# %matplotlib auto
# Importation des bibliothèques utiles pour le TP.
import numpy as np
import matplotlib.pyplot as plt
import imageio.v3 as imageio
## Partie I.
# Mouvement d'une boule sur un plan incliné
# Paramètres du problème
g = 9.81
fps = 940 # Nombre d'images par seconde (frame per sec)
larg_sousim_pix = 1280 # nombre de pixels dans la direction X pour une image
L = 0.8 # largeur de la base de la plaque en metres
# Réponse
3) Pour construire l'image multiple 'brachistochrone9.png'
, nous avons retenu 9 images sur les 649 images du film. Cette image multiple de 2160x3840 pixels est constituée de 9 sous images de 720x1280 pixels. Le temps défile en parcourant les images du haut en bas puis de gauche à droite. Affichez l'image 'brachistochrone9.png'
dans une nouvelle figure. A l'aide de plt.ginput
, mesurez (en pixels) sur l'image les positions horizontales aux différents instants de la boule blanche. On appelle $x(t)$ la distance horizontale de la boule aux temps t successifs. La première image de la boule correspond au point $x=0$. Utiliser la taille d’un pixel calculée à la question 2, et si besoin la taille des sous-images pour en déduire les 9 valeurs successives de $x(t)$ en mètres. Les lignes de codes sont données mais il faut en comprendre la logique.
# Question 3
plt.figure(2)
brac9 = imageio.imread('brachistochrone9.png')
plt.imshow(brac9)
plt.show()
# Version sophistiquée de saisie des coordonnées avec un test sur l'existence du fichier
import os
if os.path.exists('coordonnees.dat'):
print('Je relis les coordonnées dans le fichier coordonnees.dat')
coord = np.loadtxt('coordonnees.dat')
else :
print('Saisir les coordonnées sur la figure')
coord = np.array(plt.ginput(9,40.0)) #permet de recuperer les coordonnees de la balle blanche.
np.savetxt('coordonnees.dat',coord)
xpixel = coord[:,0] # On extrait dans xpixel la première colonne de coord
# On soustrait la largeur de la sous-image pour les sous images des col 2 et 3
xpixel[3:6] = xpixel[3:6] - larg_sousim_pix
xpixel[6:9] = xpixel[6:9] - 2*larg_sousim_pix
xbr = (xpixel - xpixel[0])*taillepix # On soustrait la premiere valeur pour translater le repere.
# On convertit les pixels en metres.
4) Les images sont retenues toutes les 81 images. Le film est pris à 940 images par seconde. Construisez le tableau tvec qui contient les valeurs successives des temps de chacune des images sur l'image multiple. Ce tableau a 9 éléments: le nombre de prises de vue selectionnées. Pour la première image on fixe $t=0$.
# Réponse
5) Tracez sur une nouvelle figure, la courbe de $x$ (en mètres) en fonction de $t$ (en secondes). Annotez votre graphique : label de la courbe et axes, mettre les unités.
# Réponse
Nous allons maintenant comparer ce graphique expérimental avec le modèle théorique
6) A l'aide de l'image brachistochroneSolo.png, en mesurant la hauteur $H$, trouvez l'angle $\alpha$ en radians que fait le plan incliné avec l'horizontale.
# Réponse
7) On choisit une première valeur test de $K=K_{test}=0.45$. Superposez la courbe expérimentale avec la formule théorique (avec $K_{test}$). Ajoutez une légende. Etes-vous satisfait de ce résultat?
# Réponse
8) Pour quantifier l'erreur entre les courbes expérimentale et théorique pour $K_{test}$, on la calcule au sens des moindres carrés :
$$ E= \sqrt{ \sum_{i=1}^{9} (x^{exp}_i - x^{test}_i)^2 }$$Que vaut $E$ pour $K_{test}$?
# Réponse
Amélioration du modèle : On veut maintenant voir quelle valeur de $K$ permet d'approcher au mieux la courbe expérimentale au sens des moindres carrés.
9) Faire varier $K$ entre $0.25$ et $0.50$, avec un pas de $0.005$. Tracer l'erreur $E$ en fonction de $K$, et identifier la valeur optimale $K_{opt}$ qui permet de minimiser l'erreur au sens des moindres carrés.
# Réponse
10) Superposer la courbe expérimentale avec la formule théorique obtenue avec $K_{opt}$. Ajouter une légende. La théorie donne $K_{theo}=5/14$. Quel est l'écart entre $K_{opt}$ et $K_{theo}$?
Pensez-vous que cet écart entre dans les incertitudes de mesure?
# Réponse
# Réponse
12) En plaçant le centre $O$ d'un système cartésien $(0,\vec{x},\vec{y})$ au point de départ des trajectoires, effectuez le changement de repère nécessaire et tracez dans une nouvelle figure les courbes $y(x)$ représentant chaque trajectoire avec $x$ et $y$ en mètres.
# Réponse
13) A partir des relevés des coordonnées des tracés, calculez une valeur approchée de la longueur en mètre de chaque tracé.
# Réponse
14) Le première image est à $t=0s$. Les boules blanche, rouge et jaune arrivent respectivement à la 649e, 521e, 577e image. Calculez la vitesse moyenne de chaque boule. Concluez.
# Réponse