Calcul de pH

UPMC, Paris. (P Reinhardt, LCT)

Clear["Global`*"]

Introduction

On veut calculer la concentration des espèces présentes dans une solution préparée en introduisant 0,01 mole d'un acide AH dans une fiole jaugée d'un litre, que l'on a complétée avec de l'eau distillée. La constante d'acidité de l'acide vaut Ka = 0.00001.

Construction

- Rappeler les 4 équations reliant les concentrations de toutes les espèces chimiques qui doivent être respectées simultanément. Résoudre le système d'équation. Toutes les solutions sont-elles valables ?

c=0.01;
Ka=0.00001;

Solve[{Ka==A *H3O/AH, c==A+AH,(10^(-14))==OH *H3O, H3O==OH+A},{H3O,A,AH,OH}]

- Pour trouver une solution unique valable, déterminer les valeurs des concentrations en utilisant la fonction FindInstance et en rajoutant des conditions sur les valeurs possibles des concentrations.

solution=FindInstance[Ka==A* H3O/AH&& c==A+AH&&(10^(-14))==OH* H3O&& H3O==OH+A && H3O> 0,{H3O,A,AH,OH}]

{{H3O->0.0003112673083346859`,A->0.0003112672762079584`,AH->0.009688732723792042`,OH->3.2126727517583176`*^-11}}

- Calculer le pH de la solution et le taux de dissociation de l'acide.

H3Oexact=H3O/.solution[[1]]
t=A/.solution[[1]]
tauxexact=t/c 
pHexact=-Log[10,H3Oexact]

- Le calcul exact dans une seule ligne, en combinant les lignes précédentes :

pHexact=-Log[10,H3O/.FindInstance[Ka==A* H3O/AH&& c==A+AH&&(10^(-14))==OH* H3O&& H3O==OH+A && H3O> 0,{H3O,A,AH,OH}][[1]]]

- Comparer avec les approximation d'acide fort, d'acide faible et de la solution de l'équation quadratique K=(((α^2)c)/(1-α)) qui donne le pH par [H3O+] = α c

pHfort=-Log[10,c]
pHfaible=1/2(-Log[10,Ka]-Log[10,c])
solution=FindInstance[{Ka==α^2 c/(1-α),α>0},α];
tauxquad=α/.solution[[1]]
pHquad=-Log[10,tauxquad c]

Affichage élégante :

Print["Avec c = ",c," et Ka = ",Ka," (pKa = ",-Log[10,Ka],")"] 
Print["nous obtenons \n pHexact = ",pHexact,"\n pHfort = ",pHfort,"\n pHfaible = ",pHfaible," et \n pHquad = ",pHquad]
Print["Taux de dissociation exact : ",tauxexact*100"% \n par approximation quadratique : ",tauxquad*100,"%"]

Calculs de pH avec Manipulate, en une seule cellule

Manipulate[Plot[{-Log[10,10^(pC)],-Log[10,1/2(-10^(-pKa)+(Sqrt[10^(-pKa)]) (Sqrt[4 10^(pC)+10^(-pKa)]))],1/2(pKa-Log[10,10^(pC)])},{pC,0,-10},AxesLabel->{Concentration,pH},PlotStyle->Thick,PlotLabel->Style["pKa ="  pKa]],{pKa,0,10}]

Manipulate[Print["Avec c = ",10^pC," et Ka = ",10^-pKa," (pKa = ",pKa") \n nous obtenons \n pHexact = ",-Log[10,H3O/.FindInstance[10^-pKa==A* H3O/AH&& 10^pC==A+AH&&(10^(-14))==OH* H3O&& H3O==OH+A && H3O> 0,{H3O,A,AH,OH}][[1]]],"\n pHfort = ",-Log[10,10^(pC)],"\n pHfaible = ",1/2(pKa-Log[10,10^(pC)])," et \n pHquad = ",-Log[10,1/2(-10^(-pKa)+(Sqrt[10^(-pKa)]) (Sqrt[4 10^(pC)+10^(-pKa)]))]],{pC,{0,-1.,-2.,-3.,-4.,-5.,-6.,-7.,-8.,-9.,-10.}},{pKa,{0.,1.,2.,3.,4.,5.,6.,7.,8.,9.,10.,11.,12.,13.,14.}}]