Der findes en færdig pakke pHcalc som gør hele arbejdet.
Pakken arbejder med tre klasser: "Acid", "Neutral" og "System"
Svage syrer bruger "Acid" (også phosphor, og andre flereprote)
Stærke syrer og stærke baser brug "Neutral"
System er beregningsfunktionen.
Koden til højre giver nedenstående graf for titrering af phosphorsyre.
Man skal kende
stoffets koncentration
pKs værdierne
resten beregner programmet.
Start et terminal og skriv
pip install pHcalc
Det skulle installere bibliotekerne.
from pHcalc.pHcalc import Acid, Neutral, System
import numpy as np
import matplotlib.pyplot as plt # (kun til plot)
na_moles = np.linspace(1e-8, 5.e-3, 500)
sol_volume = 1.0 # Liter
phos = Acid(pKa=[2.148, 7.198, 12.375], charge=0, conc=1.e-3)
phs = []
for mol in na_moles: #genererer plottet
na = Neutral(charge=1, conc=mol/sol_volume)
system = System(phos, na)
system.pHsolve(guess_est=True)
phs.append(system.pH)
plt.plot(na_moles, phs)
plt.show()
na = Neutral fordi
I linjen
na = Neutral(charge=1, conc=mol/sol_volume)
skal man ændre 1 til -1 for chlorid eller -2 for sulfat
Stærk syre og stærk base. Brug "Neutral"
Her skal man ikke kende pKs værdierne men går ud fra at alt syre dissocierer. Vands ionprodukt er med ved alle beregninger.
pH i en 0,01M HCl opløsning:
from pHcalc.pHcalc import Acid, Neutral, System
import numpy as np
cl = Neutral(charge=-1, conc=0.01)
system = System(cl)
system.pHsolve()
print(system.pH) # Should print 1.9999
Stærk base NaOH c=0,01M:
from pHcalc.pHcalc import Acid, Neutral, System
import numpy as np
na = Neutral(charge=1, conc=0.01)
system = System(na)
system.pHsolve()
print(system.pH) # Should print 12.000
Læg mærke til at det er ligegyldigt hvad du kalder din ion.
charge 1 er den positive ion Na.
Hydroxid og oxoniumkoncentrationer bliver beregnet uafhængig af det her.
Svag syre eller multiprot syre brug "Acid"
Her angives pKs værdier. Se her et eksempel for kulsyre
from pHcalc.pHcalc import Acid, Neutral, System
import numpy as np
kulsyre = Acid(pKa=[3.6, 10.32], charge=0, conc=0.01)
system = System(kulsyre)
system.pHsolve()
print(system.pH) # resutatet: 2.8343772
Beregning af pH i en blanding af to syreæ-base aktive ioner:
from pHcalc.pHcalc import Acid, Neutral, System
import numpy as np
phos = Acid(pKa=[2.148, 7.198, 12.319], charge=0, conc=0.01)
nh4 = Acid(pKa=9.25, charge=1, conc=0.01*3)
system = System(phos, nh4)
system.pHsolve()
print(system.pH) # resultat: 8.95915298