🧪 TP : Évolution des quantités de matière
réaction du type a A + b B → c C + d D

🎯 Objectifs

🧬 Contexte

Une transformation chimique peut être modélisée par l’équation générale :

a A + b B → c C + d D

Les coefficients stœchiométriques a, b, c, d indiquent les proportions dans lesquelles les espèces interviennent. L’avancement x permet de décrire l’évolution de la réaction et de calculer les quantités de matière de chaque espèce au cours du temps.

🌐 Outil utilisé

🔧 Étapes à réaliser

  1. Accéder au programme partagé sur Capytale : https://capytale2.ac-paris.fr/web/c/b548-10166079
  2. Copier-coller le programme Python ci-dessous.
  3. Choisir des valeurs pour les coefficients a, b, c, d.
  4. Choisir les quantités initiales nA0, nB0, nC0, nD0.
  5. Observer l'évolution des quntités de matière des réactifs et des produits sur le programme python

🖥️ Programme Python

import numpy as np
import matplotlib.pyplot as plt

print("=== Étude de l'évolution des quantités de matière ===")

# --- Saisie des coefficients stœchiométriques ---
a = float(input("Coefficient a (pour A) : "))
b = float(input("Coefficient b (pour B) : "))
c = float(input("Coefficient c (pour C) : "))
d = float(input("Coefficient d (pour D) : "))

# --- Saisie des quantités initiales ---
nA0 = float(input("Quantité initiale nA0 (mol) : "))
nB0 = float(input("Quantité initiale nB0 (mol) : "))
nC0 = float(input("Quantité initiale nC0 (mol) : "))
nD0 = float(input("Quantité initiale nD0 (mol) : "))

# --- Avancement maximal théorique ---
x_max = min(nA0 / a, nB0 / b)
print("\nAvancement maximal théorique :", x_max, "mol")

# --- Saisie des valeurs d'avancement ---
print("\nEntrez les valeurs d'avancement x(t) séparées par des espaces :")
x_t = np.array(list(map(float, input().split())))

print("Entrez les temps correspondants (en secondes), séparés par des espaces :")
temps = np.array(list(map(float, input().split())))

# --- Calcul des quantités de matière ---
nA = nA0 - a * x_t
nB = nB0 - b * x_t
nC = nC0 + c * x_t
nD = nD0 + d * x_t

# --- Affichage ---
print("\n=== Quantités de matière au cours du temps ===")
for i in range(len(temps)):
    print(f"t = {temps[i]} s : nA = {nA[i]:.4f}, nB = {nB[i]:.4f}, nC = {nC[i]:.4f}, nD = {nD[i]:.4f}")

# --- Tracé de l'avancement en fonction du temps ---
plt.figure(figsize=(8,5))
plt.plot(temps, x_t, marker='o')
plt.xlabel("Temps (s)")
plt.ylabel("Avancement x (mol)")
plt.title("Évolution de l'avancement au cours du temps")
plt.grid()
plt.show()

# --- Tracé des quantités de matière en fonction de l'avancement ---
plt.figure(figsize=(10,6))

plt.plot(x_t, nA, marker='o', label='n(A)')
plt.plot(x_t, nB, marker='o', label='n(B)')
plt.plot(x_t, nC, marker='o', label='n(C)')
plt.plot(x_t, nD, marker='o', label='n(D)')

plt.xlabel("Avancement x (mol)")
plt.ylabel("Quantité de matière (mol)")
plt.title("Évolution des quantités de matière en fonction de l'avancement")
plt.grid()
plt.legend()
plt.show()

📊 Tableau à compléter

Équation de la réaction a A + b B → c C + d D
État du système Avancement x(t) (mol) n(A) n(B) n(C) n(D)
Initial x = 0 nA0 nB0 nC0 nD0
En cours x nA0 − a × x nB0 − b × x nC0 + c × x nD0 + d × x
Final xmax nA0 − a × xmax nB0 − b × xmax nC0 + c × xmax nD0 + d × xmax

❓ Questions

📁 Enregistrement du fichier