## Courbes de distribution d'un triacide

##Bibliothèques utilisées
import matplotlib.pyplot as plt
from math import *
import numpy as np

##Définition des %

# % du triacide AH3

def pAH3(pH,pKa1,pKa2,pKa3):
    return 1/(1+10**(pH-pKa1)+10**(2*pH-pKa1-pKa2)+10**(3*pH-pKa1-pKa2-pKa3))

# % du diacide (AH2)-
def pAH2(pH,pKa1,pKa2,pKa3):
    return 1/(10**(pKa1-pH)+1+10**(pH-pKa2)+10**(2*pH-pKa2-pKa3))

# % du monoacide (AH)2-

def pAH(pH,pKa1,pKa2,pKa3):
    return 1/(10**(pKa1+pKa2-2*pH)+10**(pKa2-pH)+1+10**(pH-pKa3))

# % de la tribase A3-

def pA(pH,pKa1,pKa2,pKa3):
    return 1/(10**(pKa1+pKa2+pKa3-3*pH)+10**(pKa2+pKa3-2*pH)+10**(pKa3-pH)+1)

### Création des listes
ListepH = np.linspace(0,14,100) #liste de 100 pH compris entre 0 et 14

AH3=[pAH3(pH,2.2,7.2,12.3) for pH in ListepH] #liste calculant le % de AH3 pour les pH présents dans la liste de pH
AH2=[pAH2(pH,2.2,7.2,12.3) for pH in ListepH]
AH=[pAH(pH,2.2,7.2,12.3) for pH in ListepH]
A=[pA(pH,2.2,7.2,12.3) for pH in ListepH]

## Tracés
plt.plot(ListepH,AH3,label="% de AH3")
plt.plot(ListepH,AH2,label="% de AH2-")
plt.plot(ListepH,AH,label="% de (AH)2-")
plt.plot(ListepH,A,label="% de A(3-)")
plt.grid(True)
plt.xlabel("pH")
plt.ylabel("%")
plt.title("Courbes de distribution de H3PO4")
plt.legend(loc='best')
plt.show()

plt.savefig("C:/Users/solen/Dropbox/Prépa -PCSI/Cours TD/S201 Solutions/12,13,14 AB, pH et titrage/12 - Annexe - Courbes de distribution de H3PO4.pdf",)
