Une marche aléatoire, et sa distance à l'origine
Exercice d'entraînement · niveau 3 (difficile) · mathématiques appliquées (ECG 1re année), chapitre 11 — Informatique et algorithmique · Simulation
Énoncé
On pose , où chaque vaut ou avec la probabilité , indépendamment. Estimer par simulation pour , et , et examiner le rapport .
Corrigé
Le code.
import numpy.random as rd
def marche(n):
# position apres n pas de +1 ou -1 equiprobables
s = 0
for _ in range(n):
if rd.random() < 0.5:
s = s + 1
else:
s = s - 1
return s
N = 20000
for n in [100, 400, 1600]:
m = sum(abs(marche(n)) for _ in range(N)) / N
print(n, m, m / n ** 0.5)
Ce qu'on observe.
| estimée | ||
|---|---|---|
Le rapport reste voisin de : la distance typique à l'origine croît comme , et non comme .
Le calcul qui l'explique en partie. Chaque vérifie et , donc . La linéarité de l'espérance donne , et l'on montre — c'est le point où la simulation devance le cours de première année — que . La quantité est donc l'échelle naturelle du problème, ce que les trois lignes du tableau confirment : quadrupler double la distance.
La constante . Elle n'est pas : est un peu inférieure à , ce qui est général — la moyenne d'une valeur absolue est toujours au plus la racine de la moyenne des carrés. Sa valeur exacte relève de la deuxième année ; la simulation, elle, la donne à deux décimales.
Deux remarques de méthode. Le nombre de répétitions doit être le même pour les trois valeurs de , sans quoi les fluctuations d'échantillonnage brouilleraient la comparaison. Et le coût total est de l'ordre de : sur et , cela fait tirages, quelques dizaines de secondes — il est raisonnable de commencer par pour vérifier le code avant de lancer le calcul complet.
Ce que la simulation ne fait pas. Elle suggère la loi en et donne la constante ; elle ne démontre ni l'une ni l'autre. Son rôle est de contrôler et d'orienter, jamais de conclure.
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.