Activité
Étalonnage conductimétrique
Consigne
Ouvrez la page des scripts du chapitre pour consulter le code et télécharger les fichiers .py.
Objectif. Déterminer une concentration par étalonnage conductimétrique (loi de Kohlrausch) en exploitant une régression linéaire avec Python (EduPython).
On dispose d’une gamme étalon de chlorure de potassium et de la conductivité d’une solution inconnue :
| Solution | (molm) | (Sm) |
|---|---|---|
| étalon 1 | ||
| étalon 2 | ||
| étalon 3 | ||
| inconnue | ? |
Le script scripts/Ch02_etalonnage.py (à ouvrir dans EduPython) trace , détermine par régression linéaire le coefficient directeur de la droite avec linregress de scipy.stats, méthode donnée par la fiche M2, puis en déduit la concentration inconnue. Une seule ligne est à compléter : le calcul de à partir de la conductivité mesurée et de .
Script élève
# -*- coding: utf-8 -*-
"""
Chapitre 2 - Dosage par etalonnage conductimetrique (loi de Kohlrausch)
-----------------------------------------------------------------------
Pour une gamme etalon (concentration c connue -> conductivite sigma mesuree),
on modelise sigma = f(c) par une droite avec la fonction linregress de
scipy.stats, conformément à la fiche M2.
On en deduit la concentration d'une solution inconnue a partir de sa conductivite.
A ouvrir et executer dans EduPython (menu "Executer" ou touche F5).
Seule une ligne est a completer (le calcul de c_inc).
"""
import matplotlib.pyplot as plt
from scipy.stats import linregress
# --- Gamme etalon : concentrations connues et conductivites mesurees ---
c = [5.0, 10.0, 15.0] # concentrations (mol/m^3)
sigma = [0.075, 0.150, 0.225] # conductivites (S/m)
# --- Régression linéaire : sigma = k * c + b (fiche M2) ---
reg = linregress(c, sigma)
k = reg.slope
b = reg.intercept
r = reg.rvalue
print("coefficient directeur k =", k, "S.m2/mol")
print("ordonnee a l'origine b =", b, "(proche de 0 : proportionnalite)")
print("r^2 =", r**2)
# --- Solution inconnue ---
sigma_inc = 0.18 # conductivite mesuree (S/m)
c_inc = 0.0 # A COMPLETER : deduire c_inc de sigma_inc et de k
print("concentration inconnue : c =", c_inc, "mol/m^3")
print("soit", c_inc / 1000.0, "mol/L")
# --- Trace de la droite d'etalonnage ---
plt.plot(c, sigma, "s", label="gamme etalon")
x = []
y = []
for i in range(17): # c de 0 a 16 mol/m^3
x.append(i)
y.append(k * i + b)
plt.plot(x, y, "-", label="regression lineaire")
plt.plot(c_inc, sigma_inc, "o", label="solution inconnue")
plt.xlabel("c (mol/m^3)")
plt.ylabel("sigma (S/m)")
plt.title("Etalonnage conductimetrique")
plt.legend()
plt.grid(True)
plt.show()