Diagramme de distribution des espèces d'un couple acide-base

Programme de classe terminale, enseignement de spécialité, voie générale

Tracer, à l’aide d’un langage de programmation, le diagramme de distribution des espèces d’un couple acide-base de pKa donné.

Théorie

Soit un couple acide/base de la forme \({\rm AH}/{\rm A^-}\) respectant la réaction suivante à l'eau :

\[{\rm AH}_{(aq)} + {\rm H_2O}_{(l)} = A^{-}_{(aq)} + {\rm H_3O^{+}}_{(aq)}\]

La proportion d'acide à l'équilibre s'écrit :

\[p_{\rm AH} = \dfrac{[{\rm AH}]_{eq}}{[{\rm AH}]_{eq} \cdot [{\rm A^-}]_{eq}} =\dfrac{1}{1+\dfrac{[{\rm AH}]_{eq}}{[{\rm A^-}]_{eq}}}\]

De plus :

\[pH = pK_a + \log(\dfrac{[{\rm A^-}]_{eq}}{[{\rm AH}]_{eq}}) \quad\implies\quad \dfrac{[{\rm A^-}]_{eq}}{[{\rm AH}]_{eq}} = 10^{pH-pK_a}\]

D'où :

\[\boxed{p_{{\rm AH}} =\dfrac{1}{1+10^{pH-pK_a}}}\]

Puis la proportion de base à l'équilibre :

\[\boxed{ p_{{\rm A^-}} = 1 - p_{{\rm AH}} } \quad\implies\quad p_{{\rm A^-}} =\dfrac{10^{pH-pK_a}}{1+10^{pH-pK_a}}\]

Programmes Python

Exemple du couple \(\rm CH_3COOH/CH_3COO^-\) (acide éthanoïque/ion éthanoate).

import numpy as np
import matplotlib.pyplot as plt


pH = np.linspace(0, 14, 100)
pKa = 4.8  # pKa du couple acide/base

p_acide = 1/(1 + 10**(pH-pKa))
p_base = 1 - p_acide


plt.plot(pH, 100*p_acide, 'r-', label = 'Proportion acide')
plt.plot(pH, 100*p_base, 'b--', label = 'Proportion base')

plt.vlines(pKa, 10, 90)   # pKa
plt.text(pKa, 10, r"$pK_a$", ha = 'center', va = 'top')

plt.title(r"Diagramme de distribution du couple $CH_3COOH/CH3C00^-$")
plt.legend()
plt.ylabel('Proportion (%)')
plt.xlabel('pH')
plt.grid()
plt.show()
Résultat

Diagramme de distribution d'un couple acide/base

Puis en mettant en évidence les parties où :

  • la forme acide est prédominante pour \(pH<pK_a-1\) ;

  • la forme basique est prédominante pour \(pH>pK_a+1\).

import numpy as np
import matplotlib.pyplot as plt


pH = np.linspace(0, 14, 100)
pKa = 4.8  # pKa du couple acide/base

p_acide = 1/(1 + 10**(pH-pKa))
p_base = 1 - p_acide


plt.plot(pH, 100*p_acide, 'r-', label = 'Proportion acide')
plt.plot(pH, 100*p_base, 'b--', label = 'Proportion base')

plt.vlines(pKa, 10, 90)   # pKa
plt.text(pKa, 10, r"$pK_a$", ha = 'center', va = 'top')

plt.axvspan(0, pKa-1, color='r', alpha=0.1)   # Zone forme acide prédominante
plt.text(pKa/2, 60, "Forme\nacide\nprédominante", color='r', ha='center')

plt.axvspan(pKa+1, 14, color='b', alpha=0.1)   # Zone forme acide prédominante
plt.text((14+pKa)/2, 60, "Forme\nbasique\nprédominante", color='b', ha='center')

plt.title(r"Diagramme de distribution du couple $CH_3COOH/CH3C00^-$")
plt.legend()
plt.ylabel('Proportion (%)')
plt.xlabel('pH')
plt.grid()
plt.show()
Résultat

Diagramme de distribution d'un couple acide/base