Le modèle
Ce premier 1/4h python est consacré à la simulation de la marche aléatoire simple sur le cercle Z/LZ.

Simulations de quelques trajectoires
On commence par simuler et tracer K trajectoires indépendantes S0,S1,…,Sn sur le cercle Z/LZ.
Ne pas hésiter à modifier L et n!
xxxxxxxxxx
import numpy as np
import matplotlib.pyplot as plt
L=31 # Taille du cercle
depart=L/2 # Point de départ
n=100 # Longueur d'une marche
K=15 # Nombre de marches
plt.plot([0,n],[L,L],label='$L=$'+str(L)+'') # Barre horizontale a hauteur L
for k in range(K):
TiragesAleatoires=2*(np.random.rand(n)<0.5)-1 # Tire n Bernoulli +1/-1
SommeCumulee=(depart + np.cumsum(TiragesAleatoires)) % L # Calcule la marche mod L
plt.plot(SommeCumulee) # On ajoute la trajectoire à la figure
plt.title("Simulation de $K=$"+str(K)+" marches aleatoires")
plt.legend()
plt.show()
Histogramme de la loi de Sn
On cherche maintenant à évaluer la loi de Sn, pour n grand. Dans la PC1, un exercice démontre que lorsque n→+∞,
Snloi→Loi uniforme sur Z/LZ.
Rappelons que cela est équivalent à
Pour tout r∈{0,1,…,L−1},P(Sn=r)n→+∞→1/L.
Pour illustrer cette convergence, il faut donc fixer L et simuler K fois (avec K grand) la variable Sn (avec n grand également). On représente les résultats dans un histogramme.
xxxxxxxxxx
import numpy as np
import matplotlib.pyplot as plt
L=31 # Taille du cercle
depart=L/2 # Point de départ
n=int(L**2/5) # Longueur d'une marche (int() sert à convertir un réel en entier)
K=10000 # Nombre de marches
PositionFinale=[] # On stocke les positions finales des K marches
for k in range(K):
TiragesAleatoires=2*(np.random.rand(n)<0.5)-1 # Tire n Bernoulli +1/-1
SommeCumulee=(depart + np.cumsum(TiragesAleatoires)) % L # Calcule la marche mod L
PositionFinale.append(SommeCumulee[n-1]) # On stocke la valeur finale
plt.hist(PositionFinale, bins=L, density=True, color='g', ec='black', alpha=0.2) # Histogramme normalise
plt.show()
Commentaires : On peut illustrer dans l'histogramme ci-dessus les différents régimes :
- n≤L/2 : Sn n'a pas eu le temps de faire le tour, on observe simplement l'histogramme d'une binomiale.
- n≫L2 : la marche a bien convergé en loi (voir la fin de la PC1), Sn est quasiment uniforme.
- n=const×L2 : c'est le régime le plus intéressant. Le comportement limite est lié à l'équation de la chaleur (voir également la fin de la PC1).
Liens
- Moodle : Cours MAP432
- Initiation à Python : Page web de l'initiation python du cours de tronc commun