Banque PT Modélisation PT 2018Sujet et corrigé
- Optique géométrique (système afocal, lentilles, prismes)
- Effet Doppler-Fizeau et ondes électromagnétiques
- Changement de référentiel des champs électromagnétiques
- Filtres électriques RL
- Comparateur à hystérésis
- Intégration numérique (méthode des trapèzes)
- Méthode d'Euler explicite
- Régression par moindres carrés
- Bases de données relationnelles et langage SQL
- Algorithmique et complexité (tri par sélection)
Téléchargements
- Rapport du jury : non disponible
Présentation du sujet
Analyse d'un 100 m à l'aide d'un cinémomètre à effet Doppler-FizeauAfficher ou masquer la section
Présentation du sujet
Le sujet étudie un cinémomètre laser utilisé pour mesurer la vitesse d'un athlète lors d'un 100 mètres. Une première partie modélise l'appareil (optique des jumelles, effet Doppler-Fizeau sur la cible en mouvement, traitement électronique du signal). Une seconde partie propose des algorithmes en Python et en SQL pour analyser le déroulement de la course, construire un modèle dynamique du coureur et stocker les performances dans une base de données.
- 12.1 Modélisation de la partie optiqueÉtude d'un système afocal à deux lentilles et de prismes redresseurs pour déterminer la focale et le grossissement des jumelles du cinémomètre.
- 22.2 Modélisation de la réflexion de l'onde sur la cible : effet DopplerDétermination de la relation entre la vitesse de la cible et le décalage de fréquence de l'onde réfléchie par changement de référentiel des champs électromagnétiques.
- 32.3 Traitement du signal reçuÉtude du photodétecteur, du filtre RL et d'un montage à comparateur pour mesurer la fréquence du signal et en déduire la vitesse, avec calcul de la résolution et de l'étendue de mesure.
- 43.1 Analyse du déroulement de la courseÉcriture de fonctions Python utilisant la méthode des trapèzes et l'interpolation linéaire pour déterminer l'instant d'arrivée et délimiter les phases d'accélération, de vitesse constante et de décélération.
- 53.2 Modélisation dynamique de la courseIdentification par régression polynomiale d'un modèle force propulsive-frottement-traînée de forme, validation par la méthode d'Euler explicite et bilan énergétique des trois composantes.
- 63.3 Stockage et mise en forme des donnéesConception d'une base de données relationnelle des performances des coureurs, écriture de requêtes SQL et de fonctions Python de traitement, dont un tri par sélection pour extraire les dix meilleurs temps.
Ces sujets peuvent vous intéresser
Lecture du sujet en ligne
L'énoncé complet, avec les formules et les figures, sans ouvrir le PDF.Afficher ou masquer la section
Lecture du sujet en ligne
Epreuve d'Informatique et Modélisation de Systèmes Physiques
L'usage de calculatrices est interdit.
Analyse d'un 100 m à l'aide d'un cinémomètre à effet Doppler-Fizeau
1. Introduction
- soit en mesurant le délai entre émission et réception, et donc la distance appareil-cible (télémétrie), à intervalles de temps réguliers,
- soit en mesurant l'écart des fréquences respectives des ondes émise et reçue (effet Doppler-Fizeau).
Etant données la configuration rectiligne de la piste (Figure 1) et la faible durée d'une course, le 100 m se prête bien à l'utilisation d'un tel appareil pour analyser les performances des coureurs. Ainsi, au cours de la dernière décennie, plusieurs épreuves prestigieuses de 100 m ont fait l'objet de mesures cinémométriques.

- dans une première partie, on modélise le cinémomètre (durée conseillée : 1 h 30 ) ;
- dans une seconde partie, on propose des algorithmes visant à exploiter les mesures du cinémomètre pour analyser les performances de la course et traiter les résultats obtenus (durée conseillée : 2h30).
2. Modélisation du cinémomètre
- un dispositif optique, identique à celui d'une paire de jumelles courantes, dont la fonction est de permettre à l'opérateur de viser la cible ;
- et un dispositif de mesure, constitué d'un émetteur laser, d'un récepteur laser et d'une chaîne de traitement du signal, dont la fonction est de déterminer la vitesse de la cible.
- la partie optique,
- la réflexion de l'onde laser sur une cible en mouvement,
- et le traitement du signal reçu par le récepteur laser pour en déduire la vitesse de la cible.
.jpg)
2.1. Modélisation de la partie optique (
12% du barème total)

| Caractéristiques optiques du cinémomètre | |
| Grossissement |
|
| Focale de l'oculaire | 25 mm |
| Longueur de l'hypoténuse des prismes | 10 mm |
| Encombrement | 17 cm |
| Indice de réfraction des prismes | 1,5 |
L'objectif de cette partie est de :
- déterminer la longueur focale compatible avec le grossissement choisi,
- et justifier la présence des prismes redresseurs.
2.1.1. Détermination de la longueur focale
.jpg)
a. Qu'est-ce qu'un système afocal ?
b. Quel est l'intérêt d'un tel système pour un être humain?
c. Représenter le trajet d'un faisceau lumineux arrivant sur l'objectif et incliné d'un angle
Q. 2. a. Etablir l'expression du grossissement en fonction de
b. En déduire la valeur de
c. En déduire la valeur numérique de la longueur focale des jumelles, c'est-à-dire la distance
2.1.2. Intérêt des prismes redresseurs
Q. 3. a. Tracer le cheminement du rayon arrivant sous incidence normale sur le premier prisme puis déterminer la valeur minimale de l'indice de réfraction des prismes.
b. Démontrer que la distance parcourue par le rayon lumineux dans un prisme est égale à la longueur
c. Exprimer le chemin optique parcouru par ce rayon dans ces deux prismes accolés en fonction de
d. Retrouver la valeur de l'encombrement donné dans l'énoncé.
e. Quel est l'intérêt des prismes redresseurs?
2.2. Modélisation de la réflexion de l'onde sur la cible : effet Döppler (
12% du barème total)

2.2.1. Expression des champs dans le référentiel de la cible
Q. 4. a. Ecrire l'expression de la force de Lorentz subie par une particule de charge
La loi de composition des vitesses indique que les vitesses vérifient la relation
b. Les forces restent invariantes par changement de référentiel. Montrer que les champs
2.2.2. Expression de l'onde réfléchie
b. En déduire les expressions respectives de
Q. 6. a. Montrer grâce à des considérations énergétiques qu'à l'intérieur d'un conducteur parfait le champ électrique est nul.
On admet que dans le référentiel
c. En déduire la fréquence
d. En supposant
Q. 7. La cible se déplace à la vitesse de
2.3. Traitement du signal reçu (16 % du barème total)

2.3.1. Intensité lumineuse reçue par le photodétecteur
Q. 8. Montrer que
2.3.2. Filtrage du signal
.jpg)
Q.9. a. En supposant que seule la composante sinusoïdale est présente (ce qui revient à supposer
b. De même, si l'on suppose que seule la composante continue est présente, que vaut

2.3.3. Mesure de la fréquence
Pour déterminer la vitesse, on mesure la fréquence de
Q. 10. a. Donner le nom de ce montage.
b. En justifiant la réponse, indiquer quelles sont les deux valeurs prises par la tension
c. Donner l'expression de la tension
d. En déduire les deux seuils de basculement
e. Tracer la caractéristique de transfert, c'est-àdire la relation
.jpg)
- relève le nombre binaire
n à la sortie du compteur, - multiplie ce nombre (après conversion en flottant) par le gain
G adéquat de sorte à obtenir la vitesse de la cible exprimée en mètres par seconde, - et déclenche la remise à zéro du compteur.
Q. 11. a. Exprimer le nombre
b. En déduire l'expression du gain
c. Quelle est la valeur maximale que peut prendre
d. Déterminer la valeur numérique de la résolution
3. Traitement des données recueillies
- analyser le déroulement de la course (partie 3.1),
- identifier les efforts aérodynamiques et propulsifs exercés sur le coureur (partie 3.2),
- traiter les données ainsi recueillies pour fournir des indications aux entraîneurs (partie 3.3).
Les fonctions et programmes demandés seront réalisés dans le langage Python. On supposera que le module math a été importé. Il est fortement conseillé d'utiliser des noms de variables ne laissant aucune ambiguïté et de commenter le code dès que vous le jugez nécessaire : un algorithme correct, même avec des erreurs de code, peut rapporter des points.
3.1. Analyse du déroulement de la course (20% du barème total)
- LT, qui contient les instants de mesure
t_i exprimés en secondes, - et LVexp, qui contient les vitesses mesurées
v_i = v(t_i) exprimées en mètres par seconde.

- déterminer l'instant auquel le coureur atteint la ligne d'arrivée,
- et délimiter les différentes phases de la course (accélération, vitesse constante et décélération).
3.1.1. Détermination de l'instant d'arrivée
Q. 12. a. Donner la relation entre
b. Donner l'expression approchée de
c. Ecrire une fonction inte (LV, LT) prenant pour arguments une liste LV de vitesses et une liste LT d'instants de mesure, et renvoyant la liste des positions estimées.

Q. 13. A l'aide de la documentation en annexe, donner la suite d'instructions permettant d'obtenir le tracé de la Figure : positions estimées repérées par des marqueurs points, droite horizontale à 100 m allant de 0 à 10 s en pointillés ("dotted line"), étiquettes sur les deux axes, légende. On rappelle que pour tracer une droite, il suffit de deux points.
Pour estimer l'instant d'arrivée du coureur avec une résolution inférieure à l'intervalle de temps séparant deux mesures, on propose de procéder par interpolation linéaire. Si l'on appelle
- on recherche dans un premier temps le premier indice
i_A pour lequelx_(IA) ≥ d , - puis, en se basant sur l'hypothèse que la position évolue de manière affine entre
t_(iA − 1) ett_(iA) , on détermine l'instant d'arrivéeT tel quex(T) = d .
Q. 14. a. Donner l'expression de l'instant d'arrivéeT en fonction deX_(IA) ,x_(i/ − 1), t_(i/λ), t_(i/λ − 1) etd .
b. Ecrire une fonction arrivee (LX, LT, d) prenant pour arguments la liste LX des positions estimées et la liste LT des instants de mesure, et renvoyant l'instant d'arrivée à la distanced , déterminé selon le principe ci-dessus. Si d n'est jamais atteinte, la fonction renverra False.
c. Donner l'instruction affichant à l'écran l'instant de l'arrivée à 100 m à partir des listes LXexp et LTexp.
.jpg)
3.1.2. Délimitation des phases de la course
def f(LV,LT):
LY = []
for k in range(len(LT)-1):
LY.append((LV[k+1]-LV[k])/(LT[k+1]-LT[k]))
return LY
Le résultat de f (LVexp, LTexp) est représenté Figure 12 en fonction des instants de mesure. On a également repéré la bande à

b. On rappelle que les deux listes passées en argument de la fonction plot doivent être de même longueur. Donner une instruction permettant de tracer
En notant LY
- la phase à vitesse constante débute au premier instant où LY entre dans la bande à
± 50% de la valeur moyenne de LY (on supposera qu'il n'y entre pas forcément par au-dessus) ; - la phase de décélération débute au premier instant où LY sort de la bande à
± 50% par en-dessous et reste en-dessous de cette bande jusqu'à la fin de la mesure.
Par exemple, sur la Figure 12, la phase à vitesse constante débute à3, 8 s et la phase de décélération à9, 2 s . Mais, s'il y avait eu un dernier point dans la bande à± 50% , alors la phase de décélération n'aurait pas pu être définie pour cette mesure.
Q. 17. Ecrire une fonction instants (LY, LT) prenant pour arguments une liste LY obtenue par
Q. 18. Donner, en justifiant la réponse, la complexité de instants (
3.2.Modélisation dynamique de la course (
15% du barème total)
- une force propulsive que l'on suppose constante en première approximation,
- une traînée de frottement (proportionnelle à la vitesse),
- et une traînée de pression, également appelée de forme (proportionnelle au carré de la vitesse).
- d'identifier A, B et C et de valider le modèle,
- d'exploiter le modèle pour estimer la traînée subie par le coureur tout au long de la course et en déduire la force propulsive qu'il a exercée,
- et d'estimer les travaux respectifs de chacune des trois composantes ci-dessus.
3.2.1. Identification et validation du modèle
- LT, qui contient les instants de mesure
t_i exprimés en secondes, - et LVexp, qui contient les vitesses mesurées
v_i = v(t_i) exprimées en mètres par seconde.
polyfit(x, y, deg)
permet d'obtenir un polynôme à partir d'un ensemble de points (x,y).
Arguments d'entrée : x et y, deux listes de même longueur
deg, entier, degré du polynôme
Argument de sortie : p, liste des coefficients polynomiaux, la puissance
la plus élevée en premier.
Q. 19. Donner l'instruction permettant d'identifier les coefficients du modèle à partir des listes LAexp et LVexp et de les placer dans une liste P. Préciser, pour chaque terme de P, s'il s'agit de
On souhaite valider le modèle en résolvant numériquement l'équation ci-dessus et en comparant les vitesses simulées aux vitesses mesurées. On se propose pour cela d'utiliser la méthode d'Euler explicite. On rappelle que les instants de mesure ne sont pas espacés de façon rigoureusement régulière.
Q. 20. a. En appliquant la méthode d'Euler explicite, déterminer la relation de récurrence permettant de calculer
b. Ecrire une fonction simu (

LVsim = simu(LTexp,P)
N,D = 0,0
for i in range(len(LVexp)):
N = N + (LVsim[i]-LVexp[i])**2
D = D + LVexp[i]**2
print(sqrt(N/D))
On se donne un seuil de
3.2.2. Exploitation du modèle pour estimer les efforts sur le coureur
On dispose toujours des listes lt, lVexp et lAexp définies à la partie 2.1, ainsi que de la liste P des coefficients. Pour identifier
def composantes (LV,LA,P):
a, b = P[0], P[1]
LA0, LA1, LA2 = [], [], []
for k in range(len(LA)):
LA2 [k] = a*LV[k]**2
LA1[k] = LA1 + b*LV[k]
LA0[k] = LA[k] - LA1[k] - LA2[k]
return (LA0,LA1,LA2)
IndexError: list assignment index out of range

3.2.3. Bilan énergétique de la course
On dispose pour cela de l'ensemble des données calculées précédemment : les instants de mesure lTexp, les vitesses mesurées LVexp, les accélérations expérimentales lAexp et les trois composantes LA0exp, LA1exp et LA2 exp. On rappelle que dans cette partie, toutes ces listes sont de même longueur.
Q. 23. Ecrire une fonction travail, dont les arguments d'entrée sont à définir mais incluent au moins une force massique LA, qui retourne un flottant égal au travail massique de cette "force" tout au long de la course. Cette fonction pourra appeler n'importe quelle fonction définie dans ce sujet conformément à son en-tête, qu'elle ait été codée ou non.
Pour le 100 m d'Usain Bolt, on obtient un travail massique d'environ
3.3. Stockage et mise en forme des données (
25% du barème total)

3.3.1. Mise en œuvre de la base de données
| Table coureurs | ||
| Attribut | Type | Description |
| id | Entier | Identifiant du coureur (clé primaire) |
| nom | Chaîne | Nom du coureur |
| prenom | Chaîne | Prénom du coureur |
| Table epreuves | ||
| Attribut | Type | Description |
| id | Entier | Identifiant de l'épreuve (clé primaire) |
| nom | Chaîne | Nom précis de l'épreuve |
| date | Chaîne | Date de l'épreuve au format ' AAAA-MM-JJ' |
| distance | Flottant | Distance courue (m) |
| Table performances | ||
| Attribut | Type | Description |
| id coureur | Entier | Identifiant du coureur |
| id_epreuve | Entier | Identifiant de l'épreuve |
| temps | Flottant | Temps, ou instant d'arrivée (s) |
| inst cte | Flottant | Instant initial de la phase à vitesse constante (s) |
| inst dec | Flottant | Instant initial de la phase de décélération (s) |
| travail | Flottant | Travail massique de la force de propulsion (J/kg) |
Q. 24. Justifier que ce couple d'identifiants constitue bien une clé primaire pour cette table.
Q. 25. Ecrire une requête SQL renvoyant les noms et dates de toutes les épreuves de " 100 m " enregistrées dans la base.
Q. 26. Que fait la requête suivante ?
SELECT p.temps, p.inst_cte, p.inst_dec, p.travail
FROM performances p
JOIN epreuves e ON e.id = p.id_epreuve
WHERE e.distance = 100 AND temps <= 12
3.3.2. Traitement des données récupérées
[nom_coureur, prenom_coureur, nom_epreuve, date_epreuve, temps]
3.3.2.1. Evolution des performances des coureurs au fil du temps
- list(s) renvoie la liste des caractères de s; par exemple, list('abc') renvoie ['a','b','c'];
- s.split(c) "découpe" s à chaque occurrence du caractère c et renvoie la liste des "morceaux" sans
modifiers;par exemple,'Je suis là'.split(' ') renvoie [Je','suis','là'];
- int(s) convertit s en un entier, si s peut être interprétée comme telle ; par exemple, int('1') et
int(' 1 ') renvoient toutes deux l'entier 1;
- float(s) fait de même avec un flottant;par exemple, float('1') renvoie le flottant 1.0;
- s.lower() passe s en minuscules; par exemple, 'Bonjour'.lower() renvoie 'bonjour';
- s.upper()passe s en majuscules; par exemple, 'Bonjour'.upper() renvoie 'BONJOUR'.
- prend pour arguments deux dates qui sont des listes au format [annee, mois, jour], où annee, mois et jour sont des entiers,
- et renvoie le nombre (entier) de jours séparant les deux dates.
Q. 28. Ecrire une fonction performances (nom, prenom,
- jours [i] contienne le nombre entier de jours séparant la date de l'épreuve du 1er janvier 2000 (on utilisera la fonction nb_j ours pour réaliser le calcul) ;
- et temps [i] contienne le temps en secondes, au format flottant.
3.3.2.2. Extraction des dix meilleurs temps
- On recherche le plus petit élément de L et on l'échange avec le premier élément.
- On recherche le deuxième plus petit élément de L (qui est donc le plus petit élément de
L[1 : ] ) et on l'échange avec le second élément. - On recherche le troisième plus petit élément de
L (qui est donc le plus petit élément deL[2 : ] )... et ainsi de suite jusqu'à ce que la liste soit entièrement triée.
Q. 29. Ecrire une fonction top10 (
Q. 30. a. En justifiant la réponse, donner la complexité de la fonction top10 en fonction du nombre
b. Si l'on suppose
c. Le tri par sélection serait-il toujours avantageux si l'on souhaitait trier entièrement
4. Annexe : documentation partielle
4.1. Fonction plot
Plot lines and/or markers to the Axes. args is a variable length argument, allowing for multiple
plot(x, y) # plot x and y using default line style and color
plot(x, y, 'bo') # plot x and y using blue circle markers
plot(y) # plot y using x as index array 0..N-1
plot(y, 'r+') # ditto, but with red plusses
a.plot(x1, y1, 'g^', x2, y2, 'g-')
| character | description |
| '-' | solid line style |
| '--' | dashed line style |
| '-.' | dash-dot line style |
| ' : ' | dotted line style |
| '.' | point marker |
|
|
pixel marker |
| '
|
circle marker |
|
|
triangle_down marker |
| ' ^ ' | triangle_up marker |
|
|
triangle_left marker |
| '>' | triangle_right marker |
| '1' | tri_down marker |
| '2' | tri_up marker |
| '3' | tri_left marker |
| '4' | tri_right marker |
| 's' | square marker |
| 'p' | pentagon marker |
| '*' | star marker |
| ' h ' | hexagon1 marker |
| ' H ' | hexagon2 marker |
| '+' | plus marker |
|
|
x marker |
| ' D ' | diamond marker |
| 'd' | thin_diamond marker |
| character | description |
| '।' | vline marker |
| '_' | hline marker |
| character | color |
|
|
blue |
|
|
green |
|
|
red |
|
|
cyan |
|
|
magenta |
|
|
yellow |
|
|
black |
|
|
white |
4.2. Fonctions annexes pour la mise en forme
- xlabel(s) : écrit le contenu de la chaîne
s comme étiquette des abscisses. - ylabel(s) : écrit le contenu de la chaîne
s comme étiquette des ordonnées. - title(s) : écrit le contenu de la chaîne s comme titre du graphique.
- legend (L) : donne une légende au graphique. L doit être une liste de chaînes: L [ 0 ] est la légende de la première courbe, L [1] de la deuxième, etc.
Questions fréquentes
3 questionsSur quels chapitres porte l'épreuve de modélisation PT 2018 sur le cinémomètre Doppler ?Afficher ou masquer la section
Questions fréquentes
3 questionsSur quels chapitres porte l'épreuve de modélisation PT 2018 sur le cinémomètre Doppler ?
Le sujet combine optique géométrique et effet Doppler en physique, avec de l'algorithmique Python (intégration numérique, méthode d'Euler, tri) et des bases de données SQL en informatique.
Quelles parties du sujet sont indépendantes ?
La première partie sur la modélisation du cinémomètre (1h30 conseillées) et la seconde sur le traitement informatique des données (2h30 conseillées) sont indépendantes, de même que les sous-parties 3.1, 3.2 et 3.3.
Faut-il connaître le langage SQL pour ce sujet ?
Oui, la partie 3.3 demande d'écrire plusieurs requêtes SQL portant sur une base de données à trois tables (coureurs, épreuves, performances).
Pas de description pour le moment
