Exercice : Tracé d'un graphique
On prend comme exemple une réaction chimique.
Pour suivre une réaction lente, on mesure l’évolution d’un paramètre physico-chimique modifié par la réaction au cours de son évolution. On établit ensuite le lien entre ce paramètre et l’avancement x de la réaction. Les méthodes classiques de suivi sont par titrage, par suivi conductimétrique, manométrique et spectrophotométrique.
Pour un suivi spectrophotométrique, les longueurs d’onde d’absorption des ions sont assez différentes pour que l’on puisse mesurer l’absorbance induite par une seule de ces deux espèces chimiques, sans être perturbé par l’autre espèce chimique (en choisissant judicieusement la longueur d’onde du spectrophotomètre). C’est la méthode que nous retiendrons ici.
Pendant la manipulation, on note que l’absorbance A mesurée décroît au cours d’un temps, au fur et à mesure que les ions dichromate sont consommés. Puisque ces derniers sont réactifs limitants, l’absorbance tend vers zéro au bout d’un temps assez long.
Question
Exécuter le code suivant pour voir l'évolution de l'absorbance en fonction du temps.
# -*- coding: utf-8 -*-
### Cinétique d'une réaction A = B
### Importation des bibliohèques
import matplotlib.pyplot as plt
###Mesures expérimentales
# Temps en minutes
t = [x for x in range(21)]
# Absorbance (proportionnelle à la concentration A)
A = [1.417, 1.161, 0.982, 0.843, 0.722, 0.622, 0.538, 0.469, 0.401, 0.342, 0.293, 0.252, 0.216, 0.185, 0.159, 0.137, 0.118, 0.101, 0.087, 0.075, 0.065]
### Tracé A=f(t)
plt.figure()
plt.plot(t, A) # '.' pour tracer les points sinon lissage de la courbe sans les points
plt.xlabel('t (min)')
plt.ylabel('A(t)')
plt.title('A = f(t)')
plt.grid()
plt.show()
### Tracé ln(A/A0) = f(t)
### Tracé 1/A = f(t)
Question
Compléter la partie du code qui permet d'afficher la courbe \(ln\Biggl(\dfrac{A}{A_0}\Biggr)=f(t)\)
Indice
Il faut créer une liste avec les valeurs de ln(A/A0) à partir de la liste des valeurs de l'absorbance A.
Solution
### Tracé ln(A/A0) = f(t)
lnA = [np.log(x/A[0]) for x in A]
plt.figure(2)
plt.plot(t, lnA, '.') # '.' pour tracer les points sinon lissage de la courbe sans les points
plt.xlabel('t (min)')
plt.ylabel('ln (A(t)/A0)')
plt.title('ln (A(t)/A0) = f(t)')
plt.grid()
plt.show()
Question
Compléter la partie du code qui permet d'afficher la courbe \(\dfrac{1}{A}=f(t)\)
Indice
Il faut créer une liste avec les valeurs de \(\dfrac{1}{A}\) à partir de la liste des valeurs de l'absorbance A.
Solution
### Tracé ln(A/A0) = f(t)
lnA = [np.log(x/A[0]) for x in A]
plt.figure(2)
plt.plot(t, lnA, '.') # '.' pour tracer les points sinon lissage de la courbe sans les points
plt.xlabel('t (min)')
plt.ylabel('ln (A(t)/A0)')
plt.title('ln (A(t)/A0) = f(t)')
plt.grid()
plt.show()