Ressources python:
1- Quelques exemples de programme:
( avec matplotlib.pyplot as plt
plt.hist(valeur, range=(min,max), bins=10, align='left', rwidth=0.5)
Programme simplifié de tracé de points expérimentaux sur python
import matplotlib.pyplot as plt
#programme minimaliste de tracé de points expérimentaux
plt.xlabel('inverse du volume')
plt.ylabel('pression')
plt.title('pression d\'un gaz en fonction de l\'inverse de son volume')
plt.plot([610,303,205,153,124,102], [1/10,1/20,1/30,1/40,1/50,1/60], color='green',linestyle='--')
plt.show()
#programme minimaliste de tracé de points expérimentaux
plt.xlabel('inverse du volume')
plt.ylabel('pression')
plt.title('pression d\'un gaz en fonction de l\'inverse de son volume')
plt.plot([610,303,205,153,124,102], [1/10,1/20,1/30,1/40,1/50,1/60], color='green',linestyle='--')
plt.show()
Pour obtenir un tracé avec des points séparés remplacer plt.plot par plt.scatter.
plt.scatter([610,303,205,153,124,102], [1/10,1/20,1/30,1/40,1/50,1/60])
2- Première spécialité
Chapitre 1: La mole
Chapitre 2: Réactions d'oxydoréduction
Chapitre 3 Tableau d'avancement
Chapitre 4 Titrage colorimétrique
Chapitre 11: Pression exercice 31
Télécharger les ressources du manuel pour ne pas avoir à retaper tout le code
Epreuve commune de contrôle continu sur la pression G1SPHCH02725
Le programme python utilisé dans ce sujet comporte une erreur, qui provoque un mauvais tracé de courbe P en fonction de 1/V.
Dans le sujet le tableau des volumes n'est pas rempli dans le bon ordre. Il faut le rectifier comme suit pur obtenir la droite attendue.
pression = [1011,1127,1261,1419,1633,1932]
volume = [25,30,35,40,45,50]
invVolume = [ ]
pyplot.axis([0,0.05,0,2000])
pyplot.xlabel(‘’ 1/V (mL-1)’’)
pyplot.ylabel(‘’p (hPa) »)
pyplot.title(‘’Etude de la loi de Mariotte »)
for i in range (0,6) :
invVolume.append(1/volume[i])
pyplot.scatter (invVolume,pression,color=’black’,marker=‘’+”)
pyplot.show ( )
volume = [25,30,35,40,45,50]
invVolume = [ ]
pyplot.axis([0,0.05,0,2000])
pyplot.xlabel(‘’ 1/V (mL-1)’’)
pyplot.ylabel(‘’p (hPa) »)
pyplot.title(‘’Etude de la loi de Mariotte »)
for i in range (0,6) :
invVolume.append(1/volume[i])
pyplot.scatter (invVolume,pression,color=’black’,marker=‘’+”)
pyplot.show ( )
Chapitre 12: Mouvement d'un système
Installer et utiliser TRACKER
Chapitre 13: Electricité
Deux exemples de code pour tracer la puissance d'une cellule photovoltaïque en fonction de la tension, pour différents éclairements
import matplotlib.pyplot as plt
plt.xlabel ('tension')
plt.ylabel('puissance')
plt.title('Evolution de la puissance en fonction de la tension ')
plt.plot([0.055,0.1,0.145,0.191,0.236,0.28,0.322,0.364,0.401,0.428,0.448,0.465,0.476,0.485,0.49,0.495,0.499,0.503,0.505,0.506,0.508,0.51,0.512,0.513,0.514,0.515,0.516,0.517,0.517,0.517,0.517,0.517,0.519,0.519,0.52,0.521,0.521,0.521,0.522], [0.003025,0.005,0.0070,0.0091,0.0111,0.0130,0.0148,0.0165,0.0178,0.0183,0.01824,0.0180,0.01742,0.0168,0.0160,0.0153,0.0146,0.01405,0.0134,0.0128,0.0122,0.0118,0.0113,0.0109,0.0105,0.0102,0.0098,0.0095,0.0092,0.0089,0.0086,0.0083,0.0081,0.0079,0.0077,0.0075,0.0073,0.0071,0.0069],
color='green',linestyle='--')
plt.show()
ou avec les données dans un fichier csv
plt.xlabel ('tension')
plt.ylabel('puissance')
plt.title('Evolution de la puissance en fonction de la tension ')
plt.plot([0.055,0.1,0.145,0.191,0.236,0.28,0.322,0.364,0.401,0.428,0.448,0.465,0.476,0.485,0.49,0.495,0.499,0.503,0.505,0.506,0.508,0.51,0.512,0.513,0.514,0.515,0.516,0.517,0.517,0.517,0.517,0.517,0.519,0.519,0.52,0.521,0.521,0.521,0.522], [0.003025,0.005,0.0070,0.0091,0.0111,0.0130,0.0148,0.0165,0.0178,0.0183,0.01824,0.0180,0.01742,0.0168,0.0160,0.0153,0.0146,0.01405,0.0134,0.0128,0.0122,0.0118,0.0113,0.0109,0.0105,0.0102,0.0098,0.0095,0.0092,0.0089,0.0086,0.0083,0.0081,0.0079,0.0077,0.0075,0.0073,0.0071,0.0069],
color='green',linestyle='--')
plt.show()
ou avec les données dans un fichier csv
import matplotlib.pyplot as plt
import numpy as np
import csv
Ugrava = []
Pgrava = []
Uboulay = []
Pboulay = []
Ugirard = []
Pgirard = []
Ugagne = []
Pgagne = []
with open("data(1).csv", "r") as f:
f.readline()
csvin = csv.reader(f)
for row in csvin:
Ugrava.append(float(row[0]))
Pgrava.append(float(row[1]))
Uboulay.append(float(row[2]))
Pboulay.append(float(row[3]))
Ugirard.append(float(row[4]))
Pgirard.append(float(row[5]))
Ugagne.append(float(row[6]))
Pgagne.append(float(row[7]))
plt.title('P en fonction de U')
plt.xlabel('U')
plt.ylabel('P')
plt.axis(xmin=0,xmax=0.7,ymin=0, ymax=0.020)
plt.grid(linestyle="--")
plt.plot(Ugrava, Pgrava, color='red', label='Grava' )
plt.plot(Uboulay, Pboulay, color='green', label='Boulay' )
plt.plot(Ugirard, Pgirard, color='blue', label='Girard' )
plt.plot(Ugagne, Pgagne, color='yellow', label='Gagne' )
plt.show()
import numpy as np
import csv
Ugrava = []
Pgrava = []
Uboulay = []
Pboulay = []
Ugirard = []
Pgirard = []
Ugagne = []
Pgagne = []
with open("data(1).csv", "r") as f:
f.readline()
csvin = csv.reader(f)
for row in csvin:
Ugrava.append(float(row[0]))
Pgrava.append(float(row[1]))
Uboulay.append(float(row[2]))
Pboulay.append(float(row[3]))
Ugirard.append(float(row[4]))
Pgirard.append(float(row[5]))
Ugagne.append(float(row[6]))
Pgagne.append(float(row[7]))
plt.title('P en fonction de U')
plt.xlabel('U')
plt.ylabel('P')
plt.axis(xmin=0,xmax=0.7,ymin=0, ymax=0.020)
plt.grid(linestyle="--")
plt.plot(Ugrava, Pgrava, color='red', label='Grava' )
plt.plot(Uboulay, Pboulay, color='green', label='Boulay' )
plt.plot(Ugirard, Pgirard, color='blue', label='Girard' )
plt.plot(Ugagne, Pgagne, color='yellow', label='Gagne' )
plt.show()
Chapitre 15: Ondes mécaniques
Exercice 28
Cliquer sur l'image lors de l'exécution du programme pour arrêter le défilement de l'onde.
Matplotlib is building the font cache; this may take a moment.
Indiquer la fréquence de l'onde en hertz :200
Indiquer la célérité de l'onde en m/s :340
Indiquer l'amplitude de l'onde en mètre :1
Indiquer la fréquence de l'onde en hertz :200
Indiquer la célérité de l'onde en m/s :340
Indiquer l'amplitude de l'onde en mètre :1
Chapitre 16: Lentilles minces convergentes
Exercice 18 p316
print("Rentrer le numéro correspondant à votre choix: \n")
choix = int(input("1-Détermination du grandissement.\n2-Détermination de la taille de l'image.\n"))
if choix == 1:
d_focale = float(input("Indiquer la distance focale de la lentille\n"))
XA = float(input("Indiquer l'abscisse xA de l'objet\n"))
if XA>0:
print("Erreur. La valeur doit être négative")
XA = float(input("Indiquer l'abscisse xA de l'objet\n"))
XAprime = (1/(1/d_focale + 1/XA))
gamma = round(XAprime/XA,1)
if XAprime<0:
print("L'image est virtuelle")
else:
print("L'image est réelle")
if abs(gamma)>1:
print("Le grandissement vaut ", gamma, "L'image est plus grande que l'objet.")
elif abs(gamma)<1:
print("Le grandissement vaut ", gamma, "L'image est plus petite que l'objet.")
choix = int(input("1-Détermination du grandissement.\n2-Détermination de la taille de l'image.\n"))
if choix == 1:
d_focale = float(input("Indiquer la distance focale de la lentille\n"))
XA = float(input("Indiquer l'abscisse xA de l'objet\n"))
if XA>0:
print("Erreur. La valeur doit être négative")
XA = float(input("Indiquer l'abscisse xA de l'objet\n"))
XAprime = (1/(1/d_focale + 1/XA))
gamma = round(XAprime/XA,1)
if XAprime<0:
print("L'image est virtuelle")
else:
print("L'image est réelle")
if abs(gamma)>1:
print("Le grandissement vaut ", gamma, "L'image est plus grande que l'objet.")
elif abs(gamma)<1:
print("Le grandissement vaut ", gamma, "L'image est plus petite que l'objet.")
Programme modifié
import matplotlib.pyplot as plt
import numpy as np#
x = np.array([-1/10,-1/20,-1/30,-1/40,-1/50,-1/60,-1/70,-1/80,-1/90]) # valeurs en abscisse
XA = 0
d_focale = float(input("Indiquer la distance focale de la lentille\n"))
while XA>=0:
XA = float(input("Indiquer l'abscisse xA de l'objet\n"))
print("Erreur. La valeur doit être négative")
XAprime = (1/(1/d_focale + 1/XA))
gamma = round(XAprime/XA,1)
if XAprime<0:
print("L'image est virtuelle")
else:
print("L'image est réelle")
if abs(gamma)>1:
print("Le grandissement vaut ", gamma, "L'image est plus grande que l'objet.")
elif abs(gamma)<1:
print("Le grandissement vaut ", gamma, "L'image est plus petite que l'objet.")
y = np.array([(1/d_focale - 1/10),(1/d_focale - 1/20),(1/d_focale - 1/30),(1/d_focale - 1/40),(1/d_focale - 1/50),(1/d_focale -1/60),(1/d_focale - 1/70),(1/d_focale- 1/80),(1/d_focale - 1/90)]) # valeurs en ordonnées
# Affichage
plt.title("1/xA' en fonction de 1/xA")
plt.xlabel("1/xA ")
plt.ylabel("1/xA'")
plt.plot(x, y, "bo",label="Formule de conjugaison")
plt.legend(loc='upper center')
plt.show()
import numpy as np#
x = np.array([-1/10,-1/20,-1/30,-1/40,-1/50,-1/60,-1/70,-1/80,-1/90]) # valeurs en abscisse
XA = 0
d_focale = float(input("Indiquer la distance focale de la lentille\n"))
while XA>=0:
XA = float(input("Indiquer l'abscisse xA de l'objet\n"))
print("Erreur. La valeur doit être négative")
XAprime = (1/(1/d_focale + 1/XA))
gamma = round(XAprime/XA,1)
if XAprime<0:
print("L'image est virtuelle")
else:
print("L'image est réelle")
if abs(gamma)>1:
print("Le grandissement vaut ", gamma, "L'image est plus grande que l'objet.")
elif abs(gamma)<1:
print("Le grandissement vaut ", gamma, "L'image est plus petite que l'objet.")
y = np.array([(1/d_focale - 1/10),(1/d_focale - 1/20),(1/d_focale - 1/30),(1/d_focale - 1/40),(1/d_focale - 1/50),(1/d_focale -1/60),(1/d_focale - 1/70),(1/d_focale- 1/80),(1/d_focale - 1/90)]) # valeurs en ordonnées
# Affichage
plt.title("1/xA' en fonction de 1/xA")
plt.xlabel("1/xA ")
plt.ylabel("1/xA'")
plt.plot(x, y, "bo",label="Formule de conjugaison")
plt.legend(loc='upper center')
plt.show()
Amélioration possible pour le calcul des valeurs en x et y
x = np.array([1/XA for XA in range(-10, -160, -10)])
y = np.array([1/d_focale + XAprime for XAprime in x])
Chapitre 17: Couleurs
Synthèse soustractive des couleurs: Exemple1
print ("Ce programme indique le résultat la synthèse soustractive de la lumière blanche.\n Il indique la couleur obtenue sur l’écran en fonction des filtres choisis par l’utilisateur")
C= float(input("Choississez une combinaison de filtres: \n 1 Rouge/magenta 2 cyan/bleu 3 vert/jaune \n 4 cyan/jaune 5 rouge/jaune 6 magenta/bleu"))
if C==1:
print("La couleur obtenue sur l'écran est rouge")
if C==2:
print("La couleur obtenue sur l'écran est bleu")
if C==3:
print("La couleur obtenue sur l'écran est vert")
if C==4:
print("La couleur obtenue sur l'écran est vert")
if C==5:
print("La couleur obtenue sur l'écran est rouge")
if C==6:
print("La couleur obtenue sur l'écran est bleu")
Synthèse soustractive des couleurs: Exemple2
C= float(input("Choississez une combinaison de filtres: \n 1 Rouge/magenta 2 cyan/bleu 3 vert/jaune \n 4 cyan/jaune 5 rouge/jaune 6 magenta/bleu"))
if C==1:
print("La couleur obtenue sur l'écran est rouge")
if C==2:
print("La couleur obtenue sur l'écran est bleu")
if C==3:
print("La couleur obtenue sur l'écran est vert")
if C==4:
print("La couleur obtenue sur l'écran est vert")
if C==5:
print("La couleur obtenue sur l'écran est rouge")
if C==6:
print("La couleur obtenue sur l'écran est bleu")
Synthèse soustractive des couleurs: Exemple2
Ce programme comporte deux lignes inutiles à identifier et supprimer.
print("Synthèse soustractive")
Filtre1 = []
Filtre2=[]
couleur_trouvee = False
Choix1= str(input("Quelle est la couleur du premier filtre? R, V, B, C, M, ou J "))
Choix2= str(input("Quelle est la couleur du second filtre : R, V, B, C, M, ou J "))
combinaisons = [["R", "R"], ["R", "M"], ["R", "J"], ["M", "J",], ["M", "R"], ["J", "R",], \
["J", "M"], ["B", "B"], ["B", "M"], ["B", "C"], ["M", "C"], ["M", "B"], ["C", "B"], ["C", "M"],\
["V", "V"], ["V", "C"], ["V", "J"], ["C", "J"], ["C", "V"], ["J", "V"], ["J", "C"]]
couleur_sur_ecran =["R","R","R","R","R","R","R", "B", "B", "B", "B", "B", "B", "B", "V", "V", "V", "V", "V", "V", "V"]
for i in range(len(combinaisons)):
if [Choix1,Choix2] == combinaisons[i] or [Choix2,Choix1] == combinaisons[i]:
print("La couleur affichée à l'écran est", couleur_sur_ecran[i])
couleur_trouvee =True
break
if couleur_trouvee== False: print("Ecran noir")
Filtre1 = []
Filtre2=[]
couleur_trouvee = False
Choix1= str(input("Quelle est la couleur du premier filtre? R, V, B, C, M, ou J "))
Choix2= str(input("Quelle est la couleur du second filtre : R, V, B, C, M, ou J "))
combinaisons = [["R", "R"], ["R", "M"], ["R", "J"], ["M", "J",], ["M", "R"], ["J", "R",], \
["J", "M"], ["B", "B"], ["B", "M"], ["B", "C"], ["M", "C"], ["M", "B"], ["C", "B"], ["C", "M"],\
["V", "V"], ["V", "C"], ["V", "J"], ["C", "J"], ["C", "V"], ["J", "V"], ["J", "C"]]
couleur_sur_ecran =["R","R","R","R","R","R","R", "B", "B", "B", "B", "B", "B", "B", "V", "V", "V", "V", "V", "V", "V"]
for i in range(len(combinaisons)):
if [Choix1,Choix2] == combinaisons[i] or [Choix2,Choix1] == combinaisons[i]:
print("La couleur affichée à l'écran est", couleur_sur_ecran[i])
couleur_trouvee =True
break
if couleur_trouvee== False: print("Ecran noir")
18- Interaction lumière matière
import matplotlib.pyplot as plt
from PIL import Image
print("Ce programme trace l'intensité lumineuse en fonction du numéro du pixel\
sur une ligne horizontale \
placée au milieu de l'image sur toute sa longueur")
im = Image.open("spectre.png")
pix = im.load()
x, y = im.size
print(x,y)
print (im.size)
pixel = []
intensite = []
wavelength=[]
for j in range(x):
pixel.append(j)
a=pix[j,y/2]
amax=max(a[0],a[1],a[2])
intensite.append(amax)
wavelength.append(0.91*j+373)
# Affichage
print (pixel)
plt.title("Spectre de raies")
plt.xlabel("Numéro du pixel")
plt.ylabel("Intensité lumineuse ( de 0 à 255)")
plt.plot(pixel, intensite,linestyle = 'solid', color ='black')
plt.grid(linestyle="-.")
plt.show()
plt.title("Spectre de raies")
plt.xlabel("Longueur d'onde en nm")
plt.ylabel("Intensité lumineuse ( de 0 à 255)")
plt.plot(wavelength, intensite,linestyle = 'solid', color ='black')
plt.grid(linestyle="-.")
plt.show()
from PIL import Image
print("Ce programme trace l'intensité lumineuse en fonction du numéro du pixel\
sur une ligne horizontale \
placée au milieu de l'image sur toute sa longueur")
im = Image.open("spectre.png")
pix = im.load()
x, y = im.size
print(x,y)
print (im.size)
pixel = []
intensite = []
wavelength=[]
for j in range(x):
pixel.append(j)
a=pix[j,y/2]
amax=max(a[0],a[1],a[2])
intensite.append(amax)
wavelength.append(0.91*j+373)
# Affichage
print (pixel)
plt.title("Spectre de raies")
plt.xlabel("Numéro du pixel")
plt.ylabel("Intensité lumineuse ( de 0 à 255)")
plt.plot(pixel, intensite,linestyle = 'solid', color ='black')
plt.grid(linestyle="-.")
plt.show()
plt.title("Spectre de raies")
plt.xlabel("Longueur d'onde en nm")
plt.ylabel("Intensité lumineuse ( de 0 à 255)")
plt.plot(wavelength, intensite,linestyle = 'solid', color ='black')
plt.grid(linestyle="-.")
plt.show()
3-Terminale spécialité
Exercice 20p66
Programme à compléter
....
elif VA > Ve:
V.append(VA) # on rajoute des valeurs pour le volume de l'acide chlorhydrique avant et après l'équivalence
CB.append(0) # La réaction est terminée. Tout le benzoate de sodium a déjà réagi.
CBH.append((CBi*V0/(V0+VA))) # CBi*V0 est à la fois le nombre de moles de base B- initialement dans le bécher, mais aussi celui d'acide BH formé à l'équivalence. Le nombre de moles d'acide BH après l'équivalence reste constant, mais sa concentration diminue. L'acide formé est dilué à chaque ajout d'acide chlorhydrique. La réaction de dosage est déjà terminée.
CH.append((CA*VA-CBi*V0 )/(V0+VA)) # CBi*V0 est le nombre de moles d'ions oxonium ayant réagit. CA*VA-CBi*V0 est le nombre de moles d'ions oxonium restant. Cette ligne ajoute donc une valeur de la concentration en ions oxonium à la liste.
pH.append(-log10((CA*VA-CBi*V0 )/(V0+VA))) # calcul du pH à partir de la concentration en ions oxonium
V.append(VA) # on rajoute des valeurs pour le volume de l'acide chlorhydrique avant et après l'équivalence
CB.append(0) # La réaction est terminée. Tout le benzoate de sodium a déjà réagi.
CBH.append((CBi*V0/(V0+VA))) # CBi*V0 est à la fois le nombre de moles de base B- initialement dans le bécher, mais aussi celui d'acide BH formé à l'équivalence. Le nombre de moles d'acide BH après l'équivalence reste constant, mais sa concentration diminue. L'acide formé est dilué à chaque ajout d'acide chlorhydrique. La réaction de dosage est déjà terminée.
CH.append((CA*VA-CBi*V0 )/(V0+VA)) # CBi*V0 est le nombre de moles d'ions oxonium ayant réagit. CA*VA-CBi*V0 est le nombre de moles d'ions oxonium restant. Cette ligne ajoute donc une valeur de la concentration en ions oxonium à la liste.
pH.append(-log10((CA*VA-CBi*V0 )/(V0+VA))) # calcul du pH à partir de la concentration en ions oxonium
....
Chapitre 4: Modélisation macroscopique
Exercice 20: (avec les données de l'exercice 13)
....
t = [0,200,400,600,800,1000,2000]
C = [200,100,50,25,12.5,6.3,3.1]
vd = []
for i in range (len(t)-1) :
vd=vd+[abs((C[i+1]-C[i])/(t[i+1]-t[i]))].....
C = [200,100,50,25,12.5,6.3,3.1]
vd = []
for i in range (len(t)-1) :
vd=vd+[abs((C[i+1]-C[i])/(t[i+1]-t[i]))].....
TP hydrolyse du Tertiobutyle: Fichier à compléter pour le calcul de la vitesse de disparition
La concentration initiale de Chlorure de tertiobutyle est 9,1.10-2 mol/l pour un ajout de 1 ml de tertiobutyle dans 100 ml de mélange eau/éthanol.
import matplotlib.pyplot as plt
import numpy as np
# Temps et concentration
t = [0,10,20,30,40,50,60]
c = [ , , , , , , ] # compléter avec les valeurs expérimentales en mmol/L
# vitesse de disparition
v = []
for i in range (len(t)-1) :
v=v+[abs( )] # indiquer la formule pour calculer la vitesse de réaction
vmax=max(v)
# Graphique de la vitesse de disparition en fonction du temps
C=list(c)
del C[-1]
plt.plot(C,v,'g+:',linewidth=1)
plt.grid()
plt.title("Vitesse de disparition = f(concentration)")
plt.axis([ , , ,1.15*vmax]) # définir les abscisses et ordonnées minimales et maximales
plt.ylabel(" ") # compléter le titre de l'ordonnée ")
plt.xlabel(" ") # compléter le titre de l'abscisse ")
plt.show()
import numpy as np
# Temps et concentration
t = [0,10,20,30,40,50,60]
c = [ , , , , , , ] # compléter avec les valeurs expérimentales en mmol/L
# vitesse de disparition
v = []
for i in range (len(t)-1) :
v=v+[abs( )] # indiquer la formule pour calculer la vitesse de réaction
vmax=max(v)
# Graphique de la vitesse de disparition en fonction du temps
C=list(c)
del C[-1]
plt.plot(C,v,'g+:',linewidth=1)
plt.grid()
plt.title("Vitesse de disparition = f(concentration)")
plt.axis([ , , ,1.15*vmax]) # définir les abscisses et ordonnées minimales et maximales
plt.ylabel(" ") # compléter le titre de l'ordonnée ")
plt.xlabel(" ") # compléter le titre de l'abscisse ")
plt.show()
Chapitre 8: Forces des acides et des bases
Exercice 21
import matplotlib.pyplot as plt
import numpy as np
pKA=float(input('pKA du couple HA / A- ?'))
pH = np.linspace(0,14,1000)
pHA = [100/(1+10**(i-pKA)) for i in pH]
pA = [100/(1+10**(pKA-i)) for i in pH]
plt.title('Diagramme de distribution d\'un couple HA/A-')
plt.xlabel('pH')
plt.ylabel('%')
plt.axis(xmin=0,xmax=14,ymin=0, ymax=100)
plt.xticks(range(15))
plt.yticks(range(0,110,10))
plt.grid(linestyle="-.")
plt.plot(pH, pHA, color='r', label='% en HA' )
plt.plot(pH, pA, color='b',label='% en A-' )
plt.show()
import numpy as np
pKA=float(input('pKA du couple HA / A- ?'))
pH = np.linspace(0,14,1000)
pHA = [100/(1+10**(i-pKA)) for i in pH]
pA = [100/(1+10**(pKA-i)) for i in pH]
plt.title('Diagramme de distribution d\'un couple HA/A-')
plt.xlabel('pH')
plt.ylabel('%')
plt.axis(xmin=0,xmax=14,ymin=0, ymax=100)
plt.xticks(range(15))
plt.yticks(range(0,110,10))
plt.grid(linestyle="-.")
plt.plot(pH, pHA, color='r', label='% en HA' )
plt.plot(pH, pA, color='b',label='% en A-' )
plt.show()
Exercice 24
pH=float(input('pH de la solution ? pH ='))
C=float(input('Concentration en soluté apporté en mol/L ? C ='))
V=float(input('Volume de la solution en L ? V ='))
xf=10**-pH*V
xmax=C*V
tau=round(xf/xmax,2)
if tau>1 : print('tau d\'avancement =', tau,'impossible')
else :
if tau==1 : print('tau d\'avancement =',tau,'Acide fort')
else :
print('tau = d\'avancement =',tau,'Acide faible')
Premier exemple d'exécution:
C=float(input('Concentration en soluté apporté en mol/L ? C ='))
V=float(input('Volume de la solution en L ? V ='))
xf=10**-pH*V
xmax=C*V
tau=round(xf/xmax,2)
if tau>1 : print('tau d\'avancement =', tau,'impossible')
else :
if tau==1 : print('tau d\'avancement =',tau,'Acide fort')
else :
print('tau = d\'avancement =',tau,'Acide faible')
Premier exemple d'exécution:
pH de la solution ? pH =5
Concentration en soluté apporté en mol/L ? C =3
Volume de la solution en L ? V =0.1
tau = d'avancement = 0.0 Acide faible
Concentration en soluté apporté en mol/L ? C =3
Volume de la solution en L ? V =0.1
tau = d'avancement = 0.0 Acide faible
Deuxième exemple d'exécution:
pH de la solution ? pH =2
Concentration en soluté apporté en mol/L ? C =0.01
Volume de la solution en L ? V =0.1
tau d'avancement = 1.0 Acide fort
Concentration en soluté apporté en mol/L ? C =0.01
Volume de la solution en L ? V =0.1
tau d'avancement = 1.0 Acide fort
Programme modifié
pH=float(input('pH de la solution ? pH ='))
C=float(input('Concentration en soluté apporté en mol/L ? C ='))
V=float(input('Volume de la solution en L ? V ='))
xf=10**-pH*V
xmax=C*V
tau=round(xf/xmax,2)
if tau>1 : print('tau d\'avancement =', tau,'impossible')
else :
if tau==1 :
print('tau d\'avancement =',tau,'Acide fort')
print('nf(AH) = 0 mol')
print('nf(A-) = nf(H3O+) = ', xmax, 'mol')
else :
print('tau = d\'avancement =',tau,'Acide faible')
print('nf(AH)', xmax-xf, 'mol')
print('nf(A-) = nf(H3O+) =', xf, 'mol')
if tau<0.1 : print('acide faiblement dissocié')
C=float(input('Concentration en soluté apporté en mol/L ? C ='))
V=float(input('Volume de la solution en L ? V ='))
xf=10**-pH*V
xmax=C*V
tau=round(xf/xmax,2)
if tau>1 : print('tau d\'avancement =', tau,'impossible')
else :
if tau==1 :
print('tau d\'avancement =',tau,'Acide fort')
print('nf(AH) = 0 mol')
print('nf(A-) = nf(H3O+) = ', xmax, 'mol')
else :
print('tau = d\'avancement =',tau,'Acide faible')
print('nf(AH)', xmax-xf, 'mol')
print('nf(A-) = nf(H3O+) =', xf, 'mol')
if tau<0.1 : print('acide faiblement dissocié')
Exemples d'exécution
Concentration en soluté apporté en mol/L ? C =0.01
Volume de la solution en L ? V =1
tau d'avancement = 1.0 Acide fort
nf(AH) = 0 mol
nf(A-) = nf(H3O+) = 0.01 mol
>>>
*** Console de processus distant Réinitialisée ***
pH de la solution ? pH =3.5
Concentration en soluté apporté en mol/L ? C =0.02
Volume de la solution en L ? V =1
tau = d'avancement = 0.02 Acide faible
nf(AH) 0.01968377223398316 mol
nf(A-) = nf(H3O+) = 0.00031622776601683794 mol
acide faiblement dissocié
>>>
Concentration en soluté apporté en mol/L ? C =0.01
Volume de la solution en L ? V =1
tau d'avancement = 1.0 Acide fort
nf(AH) = 0 mol
nf(A-) = nf(H3O+) = 0.01 mol
>>>
*** Console de processus distant Réinitialisée ***
pH de la solution ? pH =3.5
Concentration en soluté apporté en mol/L ? C =0.02
Volume de la solution en L ? V =1
tau = d'avancement = 0.02 Acide faible
nf(AH) 0.01968377223398316 mol
nf(A-) = nf(H3O+) = 0.00031622776601683794 mol
acide faiblement dissocié
>>>
Chapitre 11 exercice 24
Chapitre 13
Activité Kepler:
Si vous rencontrez une erreur à cause du package pandas qui n'est pas installé, vous pouvez utiliser cette version du programme qui ne nécessite paas pandas.
Chapitre 18 interférences et diffraction
Interférences : Somme de deux signaux sinusoïdaux synchrones
Ressources générales en ligne: