Bonjour,
Nous voyons en ce moment les avancements finaux en chimie et nous devons compléter un code python permettant de calculer l’avancement final selon différentes variables.
Voilà mon code:
import numpy as np
import matplotlib.pyplot as plt
La reaction consideree est A + B → C + D
Coefficients stoechiometriques
a, b, c, d = 1, 1, 1, 1
Quantites de matiere initiales et volume initial
n_iA, n_iB, n_iC, n_iD = 0.1, 0.1, 0, 0
V = 100.0e-3
Constante d’equilibre
K = 1e-1
Calcul de l’avancement final et generation des valeurs de x entre 0 mol et xmax
xmax = min(n_iA/a, n_iB/b)
x = np.arange(0, xmax, xmax/10000.0)
tau = x/xmax
Calcul des quantites de matiere et du quotient de reaction a chaque avancement x
n_A = n_iA-ax
n_B = n_iB-bx
n_C = n_iC+cx
n_D = n_iD+dx
Q_r = ((n_C/V)*c(n_D/V)**d)/((n_A/V)*a(n_B/V)**b)
Determination de l’avancement final x_f
for i in range(len(x)) :
if Q_r<K:
x_f = x[i]
i = i+1
else :
continue
plt.subplot(2,1,1)
plt.ylabel(‘Quantites de matiere \n de A, B, C et D (mol/L)’, fontsize=8)
plt.title(‘Evolutions des concentrations’, fontsize=8)
plt.grid()
plt.axis(xmin=0, xmax=1)
plt.axvline(x = x_f/xmax, label = ‘$\tau_f$’)
plt.plot(tau, n_A, color = ‘red’, label=’$n_A$’)
plt.plot(tau, n_B, color = ‘blue’, label=’$n_B$’)
plt.plot(tau, n_C, color = ‘green’, label=’$n_C$’)
plt.plot(tau, n_D, color = ‘orange’, label=’$n_D$’)
plt.legend()
plt.show()
plt.subplot(2,1,2)
plt.xlabel(‘Taux d’avancement $\tau$’, fontsize=8)
plt.ylabel(‘Constante de reaction $Q_r$ \n et constante d’equilibre $K$’, fontsize=8)
plt.title(‘Evolution du quotient de reaction \n en fonction de l’avancement’, fontsize=8)
plt.axvline(x = x_f/xmax, label = ‘$\tau_f$’)
plt.axis(xmin=0, xmax=1)
plt.plot(tau, K*np.ones(len(x)), color = ‘blue’, label=’$K$’)
plt.plot(tau, Q_r, color = ‘red’, label=’$Q_r$’)
plt.yscale(‘log’)
plt.legend()
plt.show()
print('L’avancement final correspond a x_f = ’ + str(x_f) + ’ mol, soit un taux d’avancement final tau_f = ’ + str(x_f/xmax) + ‘.’)
Mais en l’exécutant, je reçois le message d’erreur suivant:
ValueError Traceback (most recent call last)
in ()
21 # Determination de l’avancement final x_f
22 for i in range(len(x)) :
—> 23 if Q_r<K:
24 x_f = x[i]
25 i = i+0,1
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
Je suis bloquée
Merci d’avance pour votre aide!