Titrage - Evolution des quantités de matière
Programme de classe terminale, enseignement de spécialité, voie générale
Représenter, à l’aide d’un langage de programmation, l’évolution des quantités de matière des espèces en fonction du volume de solution titrante versé.
Dosage par titrage par suivi conductimétrie
Titrage par conductimétrie de l'acide ascorbique (\(\rm C_6H_8O_6\)) par une solution d'hydroxyde de sodium / soude (\(\rm Na^+ + OH^-\)).
Méthode 1 : tableaux Numpy sans conditionnelle if
Évolution de quantités de matière des espèces en fonction du volume de solution titrante versé connaissant \(V_E\) et donc \(C_A\).
"""
Titrage par conductimétrie de l'acide ascorbique (C6H8O6)
par une solution d'hydroxyde de sodium / soude (Na+ HO-)
"""
import numpy as np
import matplotlib.pyplot as plt
# VARIABLES
VA = 40.0 # (mL) Volume de solution titrée
CB = 0.010 # (mol/L) Concentration de soude
VE = 8.2 # (mL) Volume de soude versé à l'équivalence
CA = CB*VE/VA # (mol/L) Concentration initiale d'acide ascorbique
# AVANT EQUIVALENCE
VB1 = np.linspace(0, VE, 20) # Valeurs de VB avant équivalence
nAH_1 = CA*VA*1E-3 - CB*VB1*1E-3
nNa_1 = CB*VB1*1E-3
nOH_1 = 0*VB1
nA_1 = CB*VB1*1E-3
# APRES EQUIVALENCE
VB2 = np.linspace(VE, 20, 20) # Valeurs de VB avant équivalence
nAH_2 = 0*VB2
nNa_2 = CB*VB2*1E-3
nOH_2 = CB*(VB2-VE)*1E-3
nA_2 = 0*VB2 + CB*VE*1E-3
# COURBES
plt.plot(VB1, nAH_1, "c+-", label=r"$AH$")
plt.plot(VB2, nAH_2, "c+-")
plt.plot(VB1, nNa_1, "b+-", label=r"$Na^+$")
plt.plot(VB2, nNa_2, "b+-")
plt.plot(VB1, nOH_1, "g+-", label=r"$OH^-$")
plt.plot(VB2, nOH_2, "g+-")
plt.plot(VB1, nA_1, "r+-", label=r"$A^-$" )
plt.plot(VB2, nA_2, "r+-")
plt.axvline(VE, color="gray", linestyle ="dashed")
plt.xlabel("Volume de solution titrante (mL)")
plt.ylabel("Quantité de matière (mol)")
plt.legend()
plt.grid()
plt.show()
- Résultats

Méthode 2 : listes avec conditionnelle if
Évolution de quantités de matière des espèces en fonction du volume de solution titrante versé connaissant \(V_E\) et donc \(C_A\).
"""
Titrage par conductimétrie de l'acide ascorbique (C6H8O6)
par une solution d'hydroxyde de sodium / soude (Na+ HO-)
"""
import numpy as np
import matplotlib.pyplot as plt
# VARIABLES
VA = 40.0 # (mL) Volume de solution titrée
CB = 0.010 # (mol/L) Concentration de soude
VE = 8.2 # (mL) Volume de soude versé à l'équivalence
CA = CB*VE/VA # (mol/L) Concentration initiale d'acide ascorbique
VB = []
nAH = []
nNa = []
nOH = []
nA = []
Vmax = 20
N = 40
for i in range(0, N):
VB.append(Vmax*i/N)
if VB[i]<VE:
nAH.append(CA*VA*1E-3 - CB*VB[i]*1E-3)
nNa.append(CB*VB[i]*1E-3)
nOH.append(0)
nA.append(CB*VB[i]*1E-3)
else:
nAH.append(0)
nNa.append(CB*VB[i]*1E-3)
nOH.append(CB*(VB[i]-VE)*1E-3)
nA.append(CB*VE*1E-3)
# COURBES
plt.plot(VB, nAH, "r+-", label=r"$AH$")
plt.plot(VB, nA, "c+-", label=r"$A^-$" )
plt.plot(VB, nNa, "b+-", label=r"$Na^+$")
plt.plot(VB, nOH, "g+-", label=r"$OH^-$")
plt.axvline(VE, color="gray", linestyle ="dashed")
plt.xlabel("Volume de solution titrante (mL)")
plt.ylabel("Quantité de matière (mol)")
plt.legend()
plt.grid()
plt.show()
- Résultats

Méthode 3 : pas à pas
Évolution de quantités de matière des espèces en fonction du volume de solution titrante versé connaissant \(C_A\).
Détermination de \(V_E\).
"""
Titrage par conductimétrie de l'acide ascorbique (C6H8O6)
par une solution d'hydroxyde de sodium ou soude (Na+ HO-)
Détermination de Ve connaissant CA
"""
import numpy as np
import matplotlib.pyplot as plt
# VARIABLES
CA = 0.0025
VA = 40.0 # (mL) Volume de solution titrée
CB = 0.010 # (mol/L) Concentration de soude
VB = [0]
nAH = [CA*VA*1E-3]
nNa_plus = [0]
nOH_moins = [0]
nA_moins = [0]
VB_pas = 0.1 # mL
while VB[-1]<20:
if nAH[-1]>0:
nAH.append(nAH[-1] - CB*VB_pas*1E-3) # Consommation AH
nNa_plus.append(nNa_plus[-1] + CB*VB_pas*1E-3) # Apport de Na+
nOH_moins.append(0) # OH- est totalement consommé
nA_moins.append(nA_moins[-1] + CB*VB_pas*1E-3) #
VE = VB[-1]
else:
nAH.append(nAH[-1])
nNa_plus.append(nNa_plus[-1] + CB*VB_pas*1E-3)
nOH_moins.append(nOH_moins[-1] + CB*VB_pas*1E-3)
nA_moins.append(nA_moins[-1])
VB.append(VB[-1]+VB_pas)
print("VE = ", VE, "mL")
# COURBES
plt.plot(VB, nAH, "r-", label="AH")
plt.plot(VB, nA_moins, "c-", label=r"$A^-$" )
plt.plot(VB, nOH_moins, "b-", label=r"$OH^-$")
plt.plot(VB, nNa_plus, "g-", label=r"$Na^+$")
plt.axvline(VE, color="gray", linestyle ="dashed")
plt.title("Avec un pas de " + str(VB_pas) + " mL")
plt.xlabel("Volume de solution titrante (mL)")
plt.ylabel("Quantité de matière (mol)")
plt.legend()
plt.grid()
plt.show()
- Résultats

