Evolution temporelle d'une transformation chimique
Programme de classe terminale, enseignement de spécialité, voie générale
À l’aide d’un langage de programmation et à partir de données expérimentales, tracer l’évolution temporelle d’une concentration, d’une vitesse volumique d’apparition ou de disparition et tester une relation donnée entre la vitesse volumique de disparition et la concentration d’un réactif.
Simulation de la disparition d'un espèce chimique
Principe
Dans une réaction chimique d'ordre 1, la vitesse volumique de disparition d'un réactif R est proportionnelle à sa concentration [R] au cours du temps.
\(k\) est la constante de vitesse.
Le calcul de la vitesse est donnée par l'expression :
Il est donc possible de tracer l'évolution de la concentration du réactif en fonction de temps de proche en proche à partir de la relation :
Programme Python
import matplotlib.pyplot as plt
plt.rcParams["figure.figsize"] = (8,6) # width, height in inches (100 dpi)
Dt = 0.2
N = 50
t = [Dt*i for i in range(N)]
C = [0]*N
C[0] = 1.000
k = 0.464
for i in range(N-1):
C[i+1] = C[i] - (t[i+1]-t[i])*k*C[i]
plt.plot(t, C, "o")
plt.title("Evolution temporelle d'un système chimique")
plt.xlabel("t (s)")
plt.xlim(0, 10)
plt.ylabel("Concentration (mol/L)")
plt.ylim(0, 1)
plt.grid()
plt.show()
- Résultats

Animation
Le programme suivant trace les points de la courbe pas à pas en mettant en évidence à chaque fois la concentration restante en solution et le vecteur vitesse de disparition ( \(v_{disp} = -k \times C_{n}\)).
Ici une boucle while (avec une condition sur la concentration) est utilisée à la place d'un for !
import matplotlib.pyplot as plt
plt.rcParams["figure.figsize"] = (8,6) # width, height in inches (100 dpi)
Dt = 0.2 # Pas temporel
k = 0.464 # Constante de vitesse
t = [0] # Tableau du temps initialisé à 0
C = [1.000] # Tableau des concentrations initialisé à Co
Clim = 0.2 # Concentration qui arrête la boucle while
while C[-1] > Clim :
# Calculs
a = k*C[-1] # Calcul de la vitesse
t.append(t[-1]+Dt) # Ajoute tn+1 dans le tableau des temps
C.append(C[-1] - (t[-1]-t[-2])*k*C[-1]) # Calcul de Cn+1 et ajout dans tableau des concentrations
# Efface la figure
plt.clf()
# Tracé de la concentration restante
plt.plot([t[-2], t[-2]], [0, C[-2]], color='blue', linewidth=3)
plt.text(t[-2]+0.1, C[-2]/4, "C = {:.3f} mol.L-1 (concentration restante)".format(C[-2]), color='blue')
# Tracé du vecteur vitesse (tangente)
plt.arrow(t[-2], C[-2], 1, -a ,color='red', width=0.01, head_width=0.05)
plt.text(t[-2]+0.3, C[-2], "Vdisp = k*C = {:.3f}*{:.3f} = {:.3f} mol.L-1.s-1".format(k, C[-2], k*C[-2]), color='red')
# Tracé des points de la courbe
plt.plot(t, C, "o", color="orange")
# Autres
plt.title("Evolution temporelle d'un système chimique")
plt.xlabel("t (s)")
plt.xlim(0, 10)
plt.ylabel("Concentration (mol/L)")
plt.ylim(0, 1)
plt.grid()
# Pause
plt.pause(2)
#plt.savefig("evolution_temporelle_disparition_anim.png")
plt.show()
- Résultats
