no way to compare when less than two revisions
Différences
Ci-dessous, les différences entre deux révisions de la page.
— | teaching:progappchim:solubilite_ph_t [2016/03/04 15:24] (Version actuelle) – créée villersd | ||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
+ | ====== Solubilité en fonction du pH et de la température ====== | ||
+ | Interface en ligne de commande et graphiques matplotlib | ||
+ | |||
+ | Nécessite {{: | ||
+ | |||
+ | < | ||
+ | # | ||
+ | # -*- coding: utf-8 -*- | ||
+ | """ | ||
+ | Solubilité en fonction du pH et de la température | ||
+ | Basé sur le travail de ML et PT, ba2 chimie 2013-2014 | ||
+ | """ | ||
+ | |||
+ | ### Importation des données | ||
+ | import csv #Importe le module pour lire une liste externe | ||
+ | ifile = open(" | ||
+ | reader = csv.reader (ifile, delimiter= ';' | ||
+ | |||
+ | precipites = [] #initialise la liste avec tout les précipités | ||
+ | for row in reader: | ||
+ | precipites.append(row) #ajoute la liste de chaque précipité | ||
+ | |||
+ | ### Choix du précipité | ||
+ | | ||
+ | m = 0 # | ||
+ | precipite = [] # | ||
+ | for precipite in precipites: #pour chaque précipité de la liste reprenant tout les précipités | ||
+ | print m, " | ||
+ | m = m + 1 # | ||
+ | p = input(" | ||
+ | print precipites[p] #mettre le s à précipité car c'est dans la liste précipités que l'on choisit l' | ||
+ | |||
+ | |||
+ | ### Donnée pour le calcul de la solubilité | ||
+ | # Extraction des données pour le précipité | ||
+ | Ks = float(precipites[p][4]) | ||
+ | ka1 = float(precipites[p][5]) #valeur de ka1, Lorsque le précipité n'a pas de ka1, la valeur arbitraire 0 a été mise pour permettre au programme de continuer | ||
+ | ka2 = float(precipites[p][6]) #valeur de ka2, Lorsque le précipité n'a pas de ka2, la valeur arbitraire 0 a été mise pour permettre au programme de continuer | ||
+ | ka3 = float(precipites[p][7]) #valeur de ka3, Lorsque le précipité n'a pas de ka3, la valeur arbitraire 0 a été mise pour permettre au programme de continuer | ||
+ | if ka3 ==0: | ||
+ | precipites[p].pop() #la valeur 0 pose problème puisque l'on divise par les ka, On la retire donc de la liste | ||
+ | if ka2 ==0: | ||
+ | precipites[p].pop() #idem | ||
+ | if ka1 ==0: | ||
+ | precipites[p].pop() #idem | ||
+ | |||
+ | | ||
+ | a = float (precipites[p][1]) | ||
+ | b = float (precipites[p][2]) #nombre de moles d' | ||
+ | |||
+ | G = float (precipites[p][3]) #Energie libre de Gibbs de formation des composés | ||
+ | R = 8.314 #Constante des gaz parfaits | ||
+ | Ti = 273.15 + 25 # | ||
+ | |||
+ | #Choix des températures | ||
+ | z = 1 #nombre permettant de à la boucle ci dessous de s' | ||
+ | Tlist = [] #initialise une liste avec les différentes températures | ||
+ | while z == 1: #boucle de commande | ||
+ | Tlist.append(float(input ("A quelle température voulez-vous étudiez la solubilité en Celsius? " | ||
+ | z = input (" | ||
+ | |||
+ | ### Mise en graphique | ||
+ | # | ||
+ | import matplotlib as plt | ||
+ | from pylab import * | ||
+ | import numpy as np | ||
+ | |||
+ | #les données | ||
+ | plt.figure() | ||
+ | |||
+ | serie_pH = [] # | ||
+ | for pH in range (0,140,1): # va passer successivement des valeurs 0 à 14, la valeur 15 n'est pas comprise dans la liste, besoin d' | ||
+ | serie_pH.append(pH/ | ||
+ | |||
+ | for T in Tlist: | ||
+ | Kst = Ks * np.exp((G/ | ||
+ | if len(precipites[p]) == 5: #si la longueur de la liste est de 5, cette formule sera appliquée (anion non-acide) | ||
+ | Solubilite = [(Kst/ | ||
+ | if len(precipites[p]) == 6: #Si la longueur de la liste est de 6, cette formule est appliquéé (anion monoacide) | ||
+ | Solubilite = [(Kst/ | ||
+ | if len(precipites[p]) == 7: #si la longueur de la liste est de 7, cette formule est appliquée (anion diacide) | ||
+ | Solubilite = [(Kst/ | ||
+ | if len(precipites[p]) == 8: # si la longueur de la liste est de 8, cette formule est appliquée (anion triacide) | ||
+ | Solubilite = [(Kst/ | ||
+ | #plot de la ligne | ||
+ | plt.plot(serie_pH, | ||
+ | |||
+ | plt.title(u" | ||
+ | plt.xlabel(" | ||
+ | plt.ylabel(" | ||
+ | plt.legend() | ||
+ | plt.show() | ||
+ | |||
+ | ###Sources : | ||
+ | # | ||
+ | # Code inspiré des exemples de code du cours | ||
+ | </ | ||
+ | |||