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.
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()
| É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 |