>>># Urnes d'Ehrenfest

Urnes

Le modèle des urnes est un modèle "stochastique" introduit en 1907 par les époux Ehrenfest. Il étudie l'évolution d'un système complexe, où les relations de récurrence sont régies par des phénomènes aléatoires.

On considère deux urnes A et B, ainsi que N boules, numérotées de 0 à N-1. Initialement, toutes les boules se trouvent dans l'urne A. Le processus stochastique associé consiste à répéter l'opération suivante :

"Choisir au hasard un numéro i compris entre 0 et N-1, prendre la boule i, changer la boule i d'urne." Nous allons utiliser une représentation informatique de cette situation à l'aide d'une liste L de longueur N composée de 0 et de 1; à un moment donné si la boule numéro i est dans l'urne A alors on a L[i]=1; si la boule numéro i est dans l'urne B alors on a L[i]=0.

  1. Écrire une fonction initialise(N) qui renvoie la liste L0 représentant la situation des boules à l'instant initial (toutes les boules sont dans l'urne A). Il s'agit d'initialiser une liste de N éléments égaux à 1.
In [0]:
# Programme
  1. Écrire une fonction transition(L) qui prend en entrée la liste L représentant un état des urnes et renvoie la liste L après le choix d'un nombre au hasard et transfert de la boule associée.
In [0]:
# Programme
  1. Écrire une fonction nombreA(L) qui prend en entrée la liste L représentant un état des urnes et renvoie le nombre de boules présentes dans l'urne A.
In [0]:
# Programme
  1. Écrire une fonction evolution(k,N) qui à l'aide des fonctions précédentes :

$\star$ crée la liste L0 correspondant à l'état initial

$\star$ répète k fois les transitions en stockant dans une liste NA le nombre de boules dans l'urne A après chaque transition (on aura NA[0]=N et len(NA)=k+1)

$\star$ renvoie la liste NA

In [0]:
# Programme
  1. En vous servant de la librairie matplotlib.pyplot que vous importerez, donner les instructions qui vous permettraient d'effectuer une représentation graphique d'une simulation du modèle de Ehrenfest avec N=20 et k=100. Le nombre de transitions effectuées apparaîtra en abscisses, et le nombres de boules dans l'urne A apparaîtra en ordonnées.
In [0]:
# Programme
Out[0]:
Text(0.5, 1.0, "Simulation du modèle d'Ehrenfest")