Algorithmique et langage Java

Résolution d'un problème par une méthode numérique

Le problème à résoudre est la détermination de la valeur du pH d'une solution d'acide quelconque.

En appliquant les conditions de conservation de la quantité de matière, neutralité électrique de la solution, constante d'acidité, on peut établir que dans une solution d'acide faible de constante d'acidité Ka et de concentration apportée C, le pH vérifie l'égalité :

10−3pH + Ka×10 −2pH − 10pH×(10−14 + Ka×C) − 10−14×Ka = 0

Cette égalité est vérifiée pour toutes les valeurs de concentrations apportées inférieures à 0,1 mol.L-1 et quelle que soit la valeur de Ka dans l'intervalle [10-14,1].

En résolvant cette équation, l'inconnue étant le pH, on pourra déterminer la valeur pHsol du pH de la solution .


 

Principe de la résolution

On peut tenter une résolution par dichotomie. Vous avez dû étudier cet algorithme en Mathématiques, mais si vous l'avez oublié, vous le trouverez facilement sur internet, par exemple sur Wikipedia.

Ce problème s'y prête parfaitement :

On sait qu'une solution existe (parce que la situation physique existe!) et qu'elle doit être comprise entre 0 et 14 puisque ce sont les limites de valeurs de pH pour une solution aqueuse (on pourrait même admettre qu'elle doit être comprise entre 0 et 7 puisqu'il s'agit d'une solution d'acide.)

On va admettre que 10−3pH + Ka×10 −2pH − 10pH×(10−14 + Ka×C) − 10−14×Ka est une fonction continue décroissante du pH sur l'intervalle [0;14]. Par conséquent sa valeur est positive pour pH< pHsol et négative pour pH > pHsol.

On doit se donner un intervalle de tolérance pour le résultat : on arrêtera la recherche quand on aura encadré le résultat entre deux valeurs espacées de moins de 10-2 unités pH, par exemple.

Pour effectuer le calcul 10x sous Java on fait appel à la méthode Math.pow de la classe Math : Math.pow(10,x) retourne 10x (au format double )

Quelques suggestions

Dans un premier temps, choisir des valeurs pour Ka et Ca et créer deux variables de type double pour y ranger ces valeurs de Ka et Ca. Dans un deuxième temps, vous pourriez faire en sorte que l'utilisateur du programme puisse les choisir, afin de rendre le programme plus polyvalent.

Etant donné que l'algorithme de dichotomie impose de calculer de manière répétée la valeur de la fonction dont on cherche le "zéro", il est pratique d'écrire d'abord une méthode prenant un paramètre x de type double, et ayant comme valeur de retour (10−3x + Ka×10 −2x − 10x×(10−14 + Ka×C) − 10−14×Ka).


 

 
Licence Creative Commons
licence Creative Commons Attribution - Pas d’Utilisation Commerciale - Partage dans les Mêmes Conditions 3.0 non transposé
Auteur : Nathalie Bonnin
Professeur de Physique, Chimie, Informatique au lycée La Martinière Monplaisir (Lyon 8ème)
Contact :
nathalie.bonnin (chez) scientillula.net
Licence Creative Commons
La totalité du contenu du site Scientillula.net appartient à Nathalie Bonnin et est mise à disposition selon les termes de la licence Creative Commons Attribution - Pas d’Utilisation Commerciale - Partage dans les Mêmes Conditions 3.0 non transposé