====== Simultit ====== JBSim se contente de résoudre l'équation en fonction de [H+] (la concentration en ion hydrogène). Pour une solution d'eau distillée on résout l'équation suivante : [H+]=[OH-] <=⇒ [H+]-10E-14/[H+]=0 Si on rajoute un monoacide (HCl par exemple), il suffit de rajouter [Cl-] [H+]=[OH-]+[Cl-] <=⇒ [H+]-10E-14/[H+]-Co=0 ou Co est la concentration de l'acide. Chaque fois que l'on rajoute une espèce chimique dans la solution, on rajoute un terme a l'équation d'électroneutralité. from scipy.optimize import fsolve #fonction pour résoudre une équation from math import log10 equation = 'x - (10 **-14) / x' # électroneutralité def f(x): #fonction à résoudre pour trouver la concentration en ion hydrogène return eval(equation) c = input('Concentration acide fort ?') # on ajoute un acide fort de concentration c equation = equation + ' - ' + c #equation après ajout d'un acide fort print ('equation à résoudre : ' + equation) print(round(- log10(fsolve(f,0.5)),3)) #calcul du pH à partir de la concentration en ion hydogène #3 chiffres après la virgule **Electroneutralité :** 'x - (10 **-14) / x' **Acide fort :** '- C' **Base forte :** '+C' **Acide faible/Base faible** concentration AH : AH concentration en A- : A pKa : pKa '- ( AH + A ) / ( x * 10 ** pKa + 1) + A' **Acide faible/Base faible avec 2 pKa** AH2 AH A2 pKa1 pKa2 '- ( ( AH2 + AH + A ) * x * 10 pKa2 + 2 * ( AH2 + AH + A ) ) / (x 2 * 10 ( pKa1 + pKa2 ) + x * 10 pKa2 + 1 ) + AH + A * 2' **Acide faible/Base faible avec 3 pKa** AH3 AH2 AH A3 pKa1 pKa2 pKa3 '- ( AH3 + AH2 + AH + A3 ) / 10 pKa1 * ( x 2 + 2 * x / 10 pKa2 + 3 / 10 pKa2 / 10 pKa3 ) / ( x 3 + x 2 /10 pKa1 + x / 10 pKa1 / 10 pKa2 + 1 / 10 ** ( pKa1 + pKa2 + pKa3 ) ) + AH2 + AH * 2 + AH * 3'