Taux d'avancement final d'une transformation chimique
Programme de classe terminale, enseignement de spécialité, voie générale
Déterminer, à l’aide d’un langage de programmation, le taux d’avancement final d’une transformation, modélisée par la réaction d’un acide sur l’eau.
Principe
La réaction d'un acide sur l'eau est décrite par la réaction suivante :
Le quotient de réaction s'écrit :
avec
De plus, la constante d'acidité du couple \(\rm AH/A^-\) en fonction de \(pK_a\) s'écrit :
Lors de l'évolution du système chimique, le quotient de réaction \(Q_r\) va tendre vers la constante d'acidité \(K_a\).
L'avancement final \(x_f\) peut se déterminer par :
une résolution numérique d'une équation du second degré obtenue pour \(Q_{r,f} = K_a\).
une évolution itérative (pas à pas) du système chimique tant que \(Q_{r,f} \leq K_a\).
Le taux d'avancement final s'obtient par l'expression :
Exemple 1 : évolution pas à pas du système chimique
Le quotient de réaction
tend vers la constante d'acidité \(K_a\) lors de l'évolution du système chimique.
Dans le programme ci-dessous, la boucle while
est interrompue à l'équilibre chimique donc pour l'avancement \(x = x_f\).
# DONNEES
pKa = 4.76 # 4.76 Pour l'acide éthanoïque
n = 0.10 # (mol) Quantité de matière d'acide versé
V = 2.00 # (L) Volume d'eau
C0 = 1 # (mol/l) Concentration standard
# CALCULS
Ka = 10**(-pKa) # Constante d'acidité
x = 0 # Initialisation avancement
dx = 0.00001 # Pas d'avancement
Qr = 0 # Quotient de réaction initial
while Qr<=Ka:
x = x + dx # Incrémentation avancement de dx
C_AH = (n-x)/V # Décrémentation de la concentration AH
C_A = x/V # Incrémentation de la concentration A-
C_H30 = x/V # Incrémentation de la concentration H3O+
Qr = C_A*C_H30/(C_AH*C0) # Calcul du nouveau quotient de réaction
x_f = x # xf
x_max = n # xmax
tau = 100*x_f/x_max # tau d'avancement final
# RESULTATS
print("x_f =", x_f)
print("tau =", tau)
print("Pour ", n, "mol d'acide ( Pka =", pKa, ") versé dans", V, "L d'eau")
print("Le taux d'avancement final est de", round(tau,2), "%")
- Résultats
>>> %Run script.py
x_f = 0.0018500000000000042
tau = 1.850000000000004
Pour 0.1 mol d'acide ( Pka = 4.76 ) versé dans 2.0 L d'eau
Le taux d'avancement final est de 1.85 %
Exemple 2 : résolution numérique
A l'état final :
On obtient le polynôme du second degré suivant :
dont la résolution donne \(x_f\) connaissant \(n\), \(V\) et \(K_a = 10^{-pK_a}\).
Le programme Python ci-dessous fait appel à la classe poly1d
de la librairie numpy
pour déterminer les racines du polynôme du seconde degré.
import numpy as np
def avancement_final(pKa, n, V, C0 = 1):
""" Retourne l'avancement final de la réaction
d'un acide sur l'eau.
"""
Ka = 10**(-pKa) # Calcul de Ka
a, b, c = 1, Ka*V*C0, -Ka*n*V*C0 # Coeff. du polynome
polynome = np.poly1d([a,b,c]) # Création du polynome
solutions = polynome.roots # Solutions
return solutions[1] # Retourne la deuxième solution
# DONNEES
pKa = 4.76 # 4.76 Pour l'acide éthanoïque
n = 0.10 # (mol) Quantité de matiere d'acide versé
V = 2.00 # (L) Volume d'eau
# CALCULS
x_max = n # (mol) Avancement maximal
x_f = avancement_final(pKa, n, V) # (mol) Avancement final
tau = 100*x_f/x_max # (%) Tau d'avancement final
# Affichage
print("x_f =", x_f)
print("tau =", tau)
print("Pour ", n, "mol d'acide ( Pka =", pKa, ") versé dans", V, "L d'eau")
print("Le taux avancement final est de", round(tau,2), "%")
- Résultats
>>> %Run script.py
x_f = 0.0018469995427119795
tau = 1.8469995427119794
Pour 0.1 mol d'acide ( Pka = 4.76 ) versé dans 2.0 L d'eau
Le taux avancement final est de 1.85 %