Activité 1
Tracer un diagramme de distribution
Consigne
Ouvrez la page des scripts du chapitre pour consulter le code et télécharger les fichiers .py.
Objectif. Tracer le diagramme de distribution d’un couple acide-base de p donné — la capacité numérique associée à ce chapitre.
Pour chaque pH, le rapport des formes vaut (cours, §5). Le pourcentage de forme basique s’en déduit en divisant numérateur et dénominateur par : et le pourcentage de forme acide est son complément à .
Le script scripts/Ch06_distribution.py (à ouvrir et exécuter dans EduPython) doit construire les listes point par point — listes vides, append, boucle for : uniquement les outils de la fiche O5 — puis trace les deux courbes (fiche M2 pour le tracé). Un petit algorithme est à compléter, repéré par # À COMPLÉTER : écrire la boucle qui calcule, pour chaque pH, les deux pourcentages et les ajoute aux trois listes.
À interpréter ensuite, script exécuté. Que valent les deux pourcentages à ? Comment lire graphiquement le p ? Que devient le diagramme si l’on remplace le p par celui d’un autre couple ?
Script élève
# -*- coding: utf-8 -*-
"""
Chapitre 6 - Force des acides et des bases
------------------------------------------
Diagramme de distribution d'un couple acide-base de pKa donné.
Pour chaque pH, le rapport des formes vaut F = [A-]/[AH] = 10^(pH - pKa) ;
le pourcentage de forme basique est donc %A- = 100 * F / (1 + F).
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)
pKa = 4.8 # pKa du couple étudié (acide éthanoïque / ion éthanoate)
pH_liste = [] # liste des pH (fiche O5 : listes vides + append)
pA = [] # pourcentage de la forme acide AH
pB = [] # pourcentage de la forme basique A-
# À COMPLÉTER : écrire une boucle for i in range(1401). À chaque tour :
# - calculer pH = 0.01 * i, puis F et B avec les relations ci-dessus ;
# - ajouter pH à pH_liste, B à pB et le complément à 100 de B à pA.
plt.plot(pH_liste, pA, label="% AH (forme acide)")
plt.plot(pH_liste, pB, label="% A- (forme basique)")
plt.xlabel("pH")
plt.ylabel("pourcentage de chaque forme")
plt.title("Diagramme de distribution")
plt.grid(True, linestyle=":")
plt.legend()
plt.show()