Activité
Suivre les quantités pendant un titrage
Consigne
Ouvrez la page des scripts du chapitre pour consulter le code et télécharger les fichiers .py.
Objectif. Représenter l’évolution des quantités de matière des espèces au cours d’un titrage, en fonction du volume de solution titrante versé — c’est la capacité numérique du programme associée aux titrages.
On a titré d’une solution d’hydroxyde de sodium () par de l’acide chlorhydrique () de concentration , la réaction support étant . La méthode des tangentes parallèles a donné , d’où .
Le script scripts/Ch04_evolution_quantites.py (à ouvrir et exécuter dans EduPython) trace et en fonction du volume versé . Il n’utilise que les outils de la fiche O5 — listes, append, boucle for, condition if/else. Un petit algorithme est à compléter, repéré par # À COMPLÉTER : écrire la boucle qui parcourt les volumes, distingue l’avant et l’après-équivalence, puis ajoute à chaque tour une valeur aux listes n_H3O et n_HO. Les expressions scientifiques viennent du tableau d’avancement de la Méthode B.
À interpréter ensuite, script exécuté. Pourquoi décroît-elle linéairement ? Que représente le point où les deux courbes se rejoignent sur l’axe des abscisses, et comment retrouve-t-on ainsi sur le graphe ?
Script élève
# -*- coding: utf-8 -*-
"""
Chapitre 4 - Titrages
---------------------
Evolution des quantités de matière au cours d'un titrage.
On titre V_B = 20,0 mL d'une solution d'hydroxyde de sodium (Na+ + HO-)
par de l'acide chlorhydrique (H3O+ + Cl-) de concentration
c_A = 1,00e-1 mol/L. Réaction support : H3O+ + HO- -> 2 H2O.
Le titrage pH-métrique a donné V_E = 12,3 mL, d'où c_B = 6,15e-2 mol/L.
Objectif : tracer n(H3O+) et n(HO-) en fonction du volume V_A versé.
A ouvrir et exécuter dans EduPython.
Un petit algorithme est à compléter (repéré par # À COMPLÉTER).
"""
import matplotlib.pyplot as plt # tracé de graphes (fiche M2)
# --- Constantes du titrage ---
c_A = 1.00e-1 # concentration de l'acide versé (mol/L)
c_B = 6.15e-2 # concentration de la solution titrée (mol/L)
V_B = 20.0 # volume de solution titrée (mL)
# --- Liste des volumes versés : de 0 à 25,0 mL par pas de 0,1 mL ---
volumes = [] # liste vide (fiche O5)
for i in range(251): # i = 0, 1, 2, ..., 250
volumes.append(0.1 * i)
# --- Quantités de matière (en mol) pour chaque volume versé ---
# Rappel : c (mol/L) * V (mL) donne des millimoles, d'où le facteur 1e-3.
n_H3O = [] # quantités d'ions oxonium H3O+
n_HO = [] # quantités d'ions hydroxyde HO-
# À COMPLÉTER : écrire une boucle « for V_A in volumes » contenant un
# bloc if/else. Avant l'équivalence, H3O+ est entièrement consommé et il
# reste des ions HO-. Après l'équivalence, HO- est épuisé et H3O+
# s'accumule. À chaque tour, ajouter une valeur à n_H3O et à n_HO.
# --- Tracé ---
plt.plot(volumes, n_HO, label="n(HO-)")
plt.plot(volumes, n_H3O, label="n(H3O+)")
plt.xlabel("Volume d'acide versé V_A (mL)")
plt.ylabel("Quantité de matière (mol)")
plt.title("Évolution des quantités de matière au cours du titrage")
plt.grid(True, linestyle=":")
plt.legend()
plt.show()