Une marche aléatoire, et la loi exacte de sa position
Exercice d'entraînement · niveau 3 (difficile) · mathématiques approfondies (ECG 1re année), chapitre 11 — Informatique et algorithmique · Simulation et estimation
Énoncé
Une marche part de et fait pas de ou , équiprobables et indépendants ; soit la position finale. Exprimer la loi de à l'aide d'une loi binomiale, écrire un programme calculant cette loi sans fonction toute faite, puis comparer à une estimation par simulation.
Corrigé
Ce qu'on montre. Qu'une marche se ramène à une binomiale par un changement de variable, que la loi binomiale se calcule par une récurrence évitant tout coefficient binomial explicite, et que la simulation confirme le calcul.
La loi de . Notons le nombre de pas valant : les pas étant indépendants et chacun égal à avec la probabilité , on a . Les autres pas valent , donc Par conséquent On en déduit aussi et .
La récurrence sur la loi. Plutôt que de calculer — nombre gigantesque pour — on part de et l'on utilise identité qui se vérifie en écrivant les deux coefficients avec des factorielles. Toutes les valeurs restent alors de l'ordre de à , sans débordement.
Le programme.
import numpy as np
import numpy.random as rd
def loi_binomiale_demi(n):
"""p[k] = P(K = k) pour K binomiale(n, 1/2), par recurrence."""
p = np.zeros(n + 1)
p[0] = 0.5 ** n
for k in range(n):
p[k + 1] = p[k] * (n - k) / (k + 1)
return p
def proba_exacte(n, seuil):
"""P(S_n >= seuil), avec S_n = 2K - n."""
p = loi_binomiale_demi(n)
total = 0.0
for k in range(n + 1):
if 2 * k - n >= seuil:
total = total + p[k]
return total
def simule(n, M):
"""M positions finales d'une marche de n pas."""
pas = 2 * rd.binomial(1, 0.5, [M, n]) - 1 # +1 ou -1
return np.sum(pas, axis=1)
print(np.sum(loi_binomiale_demi(100))) # 1.0 : controle
print(proba_exacte(100, 10)) # 0.1841
S = simule(100, 10 ** 5)
print(np.mean(S >= 10), np.mean(S), np.var(S)) # ~0.184, ~0, ~100
Les résultats. Le calcul exact donne , et la simulation sur marches affiche une fréquence voisine de . La moyenne empirique de est proche de et sa variance proche de , conformément à et .
Point délicat. a la parité de : pour , seules les valeurs paires sont atteintes, et . Un histogramme de pas montrerait donc une barre vide sur deux, qu'on prendrait à tort pour un défaut de la simulation.
Les autres exercices de ce chapitre Le cours du chapitre
Un blocage sur cet exercice ? Le tuteur d'Adloun guide par questions, sans donner la réponse.