Activité
Prévoir l’état final
Consigne
Ouvrez la page des scripts du chapitre pour consulter le code et télécharger les fichiers .py.
Objectif. Prévoir l’état final d’un système en traçant puis en repérant l’intersection avec la droite .
Le script scripts/Ch03_qr_avancement.py (à ouvrir dans EduPython) reprend la formation de l’ion thiocyanatofer(III). Il calcule pour différentes valeurs de l’avancement et trace la courbe correspondante. Deux lignes sont à compléter : l’expression de et la valeur de la constante . Le script complété permet de vérifier le tracé et la lecture de .
Script élève
# -*- coding: utf-8 -*-
"""
Chapitre 3 - Prevoir un etat final avec Qr(x)
------------------------------------------------
Le script trace le quotient de reaction de la formation de FeSCN2+ en
fonction de l'avancement. L'etat final est repere par Qr(x_f) = K.
A ouvrir et executer dans EduPython (menu "Executer" ou touche F5).
Deux lignes sont a completer : l'expression de Qr(x) et la valeur de K.
"""
import matplotlib.pyplot as plt
# Quantites initiales dans V = 1,0 L (valeurs numeriques en mol et mol/L).
n_fe3 = 2.0e-3
n_scn = 1.0e-3
x_max = n_scn
K = 0.0 # A COMPLETER : constante d'equilibre
# Tableaux des avancements puis des Qr, valeur par valeur.
x = []
qr = []
for i in range(500):
xi = 0.999 * x_max * i / 499
Qri = 0.0 * xi # A COMPLETER : expression de Qr pour l'avancement xi
x.append(xi)
qr.append(Qri)
# Le point du tableau le plus proche de l'intersection fournit x_f.
indice = 0
for i in range(len(qr)):
ecart_i = qr[i] - K
if ecart_i < 0:
ecart_i = -ecart_i
ecart_indice = qr[indice] - K
if ecart_indice < 0:
ecart_indice = -ecart_indice
if ecart_i < ecart_indice:
indice = i
x_f = x[indice]
print("avancement final lu : x_f =", x_f * 1e3, "mmol")
x_mmol = []
for xi in x:
x_mmol.append(xi * 1e3)
plt.plot(x_mmol, qr, label="$Q_r(x)$")
plt.axhline(K, color="firebrick", linestyle="--", label="$K$")
plt.axvline(x_f * 1e3, color="gray", linestyle=":", label="$x_f$")
plt.xlabel("avancement x (mmol)")
plt.ylabel("$Q_r$")
plt.title("Recherche de l'etat final : $Q_r(x_f)=K$")
plt.grid(True)
plt.legend()
plt.show()