Warning: Undefined array key 1 in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 172
bts:python:autocatalyse [GoupillWiki]

Outils pour utilisateurs

Outils du site


bts:python:autocatalyse

Warning: Undefined array key 2 in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 214

Warning: Undefined array key 2 in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 214

Autocatalyse

Cet exercice consiste à modéliser le problème de l'autocalyse et à tracer la courbe de la solution

L'équation

On considère la réaction

$$A + B \to 2B$$

La présence $B$ tend à augmenter la production de $B$, c'est pourquoi on parle d'auto-catalyse. Au début, $B$ peut être rare, mais à mesure qu'il est produit et devient plus présent, la réaction s'en trouve accélérer.

On fera l'hypothèse d'une réaction d'ordre 1, c'est à dire :

$$[A]' = -[B]' = -k\cdot[A]\cdot[B]$$

Simulation

La simulation consiste à, connaissant $[A]$ et $[B]$ à un instant, de calculer $[A]'$ et d'en déduire l'évolution de $[A]$. On sait que :

$$[A]_{t + dt} = [A]_t + dt\cdot [A]'_t \quad \text{ ou encore } \quad d[A] = dt\cdot [A]'_t$$

ce qui est approximativement vrai si $dt$ est petit au lieu d'être un objet abstrait qui tend vers $0$.

Dans la simulation on disposera des variables suivantes :

  • k qui définit la vitesse de réaction
  • A0 qui correspond à la concentration initiale $[A]_{t = 0}$
  • B0 qui correspond à la concentration initiale $[B]_{t = 0} = b(0)$
  • dt qui correspond au pas de temps
  • T qui correspond à la durée totale de la simulation
  • Comme on avance dans la simulation par saut de temps dt et que la durée totale est T, on peut calculer N, le nombre de saut à faire.
  • a qui correspond à la concentration $[A]_{t}$. Mais on ne connaîtra pas $a$ pour tous les temps possibles car on calcul par saut de temps dt. Dans le code a sera donc une liste et a[15], par exemple, correspondra à $[A]_{t = 15\cdot dt}$.
  • b, même chose que a mais pour $[B]$.
  • t, sera la liste des instants. Comprendre que t[15], par exemple, aura la valeur $15\cdot dt$.

Comme première expérience, on pourra décider que les concentrations sont en $\text{mmol}\cdot\text{L}^{-1}$ et les temps en $\text{min}$. Dans ces unités, on pourra prendre k = 0.02, A0 = 1, B0 = 1E-8, N = 10000 et T = 2000.

Le code

Reprenez ce code et complétez.

# autocatalyse.py

import matplotlib.pyplot as plt

# initialisation des variables

k = 
A0 =
B0 =
T =
N = 
dt =

t = [0]
a = [A0] # liste initialisée avec la première valeur
b = [B0] # idem

for i in range(N):
    da = 
    db =
    # a[-1] est la dernière valeur dans a ;
    # append permet d'ajouter un élément à la liste
    a.append(a[-1] + da)
    b.append(
    t.append(t[-1] + dt)

# tracer
plt.plot(t, a, 'b', label = '[A]')
plt.plot(t, b, 'r', label = '[B]')
plt.legend()
plt.show()

En plus

  • Modifiez le code pour déterminer le temps au bout du quel $[B]$ atteint 99 % de sa valeur finale.
  • Modifiez le code pour connaître la vitesse maximale de réaction, c'est à dire le moment où $|[A]'|$ est maximal.
bts/python/autocatalyse.txt · Dernière modification : de goupillwiki