Activité
Relier pH et concentration
Consigne
Ouvrez la page des scripts du chapitre pour consulter le code et télécharger les fichiers .py.
Objectif. Tracer en fonction du pH mesuré :
donne
est donc une droite de pente -1. Le tracé reprend les résultats de l’E.C.E. : les concentrations sont connues par dilution, et la seule ligne à compléter contient les pH mesurés.
Le script scripts/Ch01_pH.py (à ouvrir et exécuter dans EduPython) est prêt à l’emploi : une seule ligne est à compléter — la liste des pH mesurés pendant l’E.C.E.
Script élève
# -*- coding: utf-8 -*-
"""
Chapitre 1 - Acides, bases et pH
--------------------------------
Tracer log[H3O+] en fonction du pH mesure.
La relation [H3O+] = c0 * 10^(-pH) s'ecrit aussi log([H3O+]/c0) = -pH :
le graphique log[H3O+] = f(pH) doit donc etre une DROITE de pente -1.
Les points experimentaux viennent de l'E.C.E. : les concentrations sont connues
par dilutions successives, et les pH sont mesures au pH-metre.
A ouvrir et executer dans EduPython (menu "Executer" ou touche F5).
Seule la ligne des pH mesures est a completer.
"""
import math
import matplotlib.pyplot as plt
# Concentration standard (mol/L) : rend l'argument du log sans dimension.
c0 = 1.0
# --- Resultats de l'E.C.E. : solutions d'acide chlorhydrique diluees ---
solutions = ["S0", "S1", "S2", "S3"]
H3O_connue = [1.0e-2, 1.0e-3, 1.0e-4, 1.0e-5]
pH = [] # A COMPLETER : les 4 pH mesures, entre crochets, separes par des virgules
# --- Calcul de log[H3O+] pour chaque solution, une valeur a la fois ---
log_H3O = []
for h in H3O_connue:
log_H3O.append(math.log10(h / c0))
# --- Vérifier si les valeurs ont été rentrées ---
if len(pH) != len(H3O_connue):
print("A COMPLETER : mets les 4 pH mesures dans la liste pH.")
# --- Droite theorique log[H3O+] = -pH, construite point par point ---
pH_theorique = []
log_theorique = []
for k in range(15): # pH entier de 0 a 14
pH_theorique.append(k)
log_theorique.append(-k)
# --- Trace : log[H3O+] en fonction du pH (echelles lineaires) ---
plt.figure()
plt.plot(pH_theorique, log_theorique, color="gray", label="log[H3O+] = -pH")
if len(pH) == len(H3O_connue):
plt.plot(pH, log_H3O, "o", color="crimson", label="solutions diluees")
plt.xlabel("pH")
plt.ylabel("log([H3O+]/c0)")
plt.title("log[H3O+] en fonction du pH")
plt.grid(True, linestyle=":")
plt.legend()
plt.show()