Chapitre 02

Activités Python

Analyses physiques

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 cc (mol\cdotm3^{-3}) σ\sigma (S\cdotm1^{-1})
étalon 1 5,05{,}0 0,0750{,}075
étalon 2 10,010{,}0 0,1500{,}150
étalon 3 15,015{,}0 0,2250{,}225
inconnue ? 0,180{,}18

Le script scripts/Ch02_etalonnage.py (à ouvrir dans EduPython) trace σ=f(c)\sigma = f(c), détermine par régression linéaire le coefficient directeur kk 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 cc à partir de la conductivité mesurée et de kk.

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()

← Retour au portail du chapitre