Deux projets inspirés de sujets d'ECE, dans lesquels c'est vous qui écrivez l'essentiel du programme. Chaque projet se valide étape par étape : rien ne presse, la solution reste disponible après un premier essai.
8.1 Les quantités de matière au cours d'un titrage
Au programme de terminale
« Représenter, à l'aide d'un langage de programmation, l'évolution des quantités de matière des espèces en fonction du volume de solution titrante versé. »
Rappel de cours — Titrage et équivalence
À l'équivalence, les réactifs ont été introduits dans les proportions stœchiométriques de la réaction support du titrage. Avant l'équivalence, le réactif titrant versé est entièrement consommé ; après, c'est le réactif titré qui a disparu, et le titrant s'accumule.
CH3COOH + HO− → CH3COO− + H2O à l'équivalence : n0(HO−) = cA × VE
D'après ECE PC, banque 2026, sujet n° 3. On titre V0 = 20,0 mL de soude diluée (ions Na+ et HO−, cB = 5,0 × 10⁻² mol·L⁻¹) par du vinaigre dilué, une solution d'acide éthanoïque CH3COOH de concentration cA = 0,10 mol·L⁻¹ (valeurs construites). Une concentration en mol·L⁻¹ multipliée par un volume en mL donne une quantité en mmol.
- Compléter la fonction
n_hydroxyde(V), qui renvoie la quantité d'ions HO− (en mmol) quand on a versé V mL d'acide.
- Écrire la fonction
n_acide(V) pour l'acide éthanoïque.
- Écrire la fonction
n_ethanoate(V) pour les ions éthanoate, puis exécuter et interpréter le graphique.
- Avant l'équivalence, chaque mmol d'acide versée consomme une mmol d'ions HO− :
n0 - cA * V. Après, il n'en reste plus.
- L'acide versé avant l'équivalence est consommé : il n'en reste pas. Après, ce qui est versé en plus de
cA * VE s'accumule : cA * V - n0.
- Les ions éthanoate se forment à mesure que l'acide réagit :
cA * V avant l'équivalence ; après, leur quantité ne change plus.
Voir une solution
def n_hydroxyde(V):
if V < VE:
return n0 - cA * V
else:
return 0
def n_acide(V):
if V < VE:
return 0
else:
return cA * V - n0
def n_ethanoate(V):
if V < VE:
return cA * V
else:
return n0
Les quatre courbes changent de pente à VE = 10,0 mL : les ions HO− disparaissent, l'acide commence à s'accumuler, les ions éthanoate cessent de se former. Les ions Na+, spectateurs, restent à 1,0 mmol. Ce sont ces changements de pente qu'exploite un titrage conductimétrique.
8.2 Projet : le record de plongeon
Au programme de terminale
« Représenter, à partir de données expérimentales variées, l'évolution des grandeurs énergétiques d'un système en mouvement dans un champ uniforme à l'aide d'un langage de programmation ou d'un tableur. »
D'après ECE PC, banque 2026, sujet n° 34. En 2015, un plongeur a battu le record du monde de plongeon de haut vol : 58,8 m. On annonce une chute de 3,58 s et une entrée dans l'eau à 123 km/h, dans un bassin de 8 m de profondeur. Le fichier plongeon.csv donne l'altitude z du plongeur au-dessus de l'eau, pointée sur la vidéo (valeurs construites d'après le sujet). Masse du plongeur et de sa combinaison : m = 73 kg ; leur volume : V = 76 L.
Étape 1 — L'énergie mécanique se conserve-t-elle ?
- Compléter les deux fonctions et les lignes qui calculent
vz, Ec et Epp, puis exécuter.
- L'énergie mécanique est-elle constante ? Le modèle de la chute libre convient-il ?
Étape 2 — La vitesse d'entrée dans l'eau
- Modéliser
vz en fonction du temps par une droite, et comparer le coefficient directeur à g.
- Calculer la vitesse à t = 3,58 s avec ce modèle, et l'afficher en km/h. L'annonce de 123 km/h est-elle crédible ?
Étape 3 — Et dans l'eau ?
Rappel de cours — Poussée d'Archimède
Un corps immergé subit la poussée d'Archimède, verticale vers le haut, de valeur PA = ρeau × V × g, avec ρeau = 1,0 kg·L⁻¹ et V en litres. S'il n'est soumis qu'à son poids et à cette poussée, son accélération est constante, et sa profondeur maximale vaut :
a = PA − Pm zmin = − v0²2 × a
- Calculer le poids
P, la poussée d'Archimède P_A et l'accélération a dans l'eau.
- Calculer la profondeur atteinte
z_min avec la vitesse d'entrée de l'étape 2. Le bassin de 8 m suffit-il ? Qu'est-ce que ce modèle oublie ?
Voir une solution
# étape 1
def energie_cinetique(m, v):
return 0.5 * m * v ** 2
def energie_potentielle(m, z):
return m * g * z
vz = (z[2:] - z[:-2]) / (t[2:] - t[:-2])
Epp = energie_potentielle(m, z[1:-1])
# étape 2
a, b = np.polyfit(tv, vz, 1)
v = a * 3.58 + b
print('a =', round(a, 2), 'm/s² ; v =', round(abs(v) * 3.6), 'km/h')
# étape 3
P = m * g
P_A = rho * V * g
a = (P_A - P) / m
z_min = -v0 ** 2 / (2 * a)
print('a =', round(a, 2), 'm/s² ; z_min =', round(z_min), 'm')
Étape 1 : Em ≈ 42 000 J, constante aux erreurs de pointage près ; elle vaut bien m × g × 58,8 m. Étape 2 : a ≈ −9,82 m·s⁻², et v(3,58 s) ≈ 35,1 m·s⁻¹ ≈ 127 km/h. Étape 3 : a ≈ 0,40 m·s⁻², donc zmin ≈ −1 530 m. Ce résultat absurde montre que le poids et la poussée d'Archimède ne suffisent pas : dans l'eau, les frottements sont considérables, et ce sont eux qui arrêtent le plongeur en quelques mètres.