Travaux Pratiques : Marches aléatoires

publicité
M2 MSA
2013/2014
Du mouvement brownien à la modélisation financière
TP no 1
Travaux Pratiques : Marches aléatoires
Le but de ce TP sur ordinateur est d’étudier et de comparer quelques marches aléatoires.
1
Introduction
Une particule se déplace sur un axe en partant de l’origine. A chaque itération n, elle fait un pas dont
l’amplitude Xn (positive ou négative) est indépendante de sa position et de son histoire (chaîne de Markov). Sa
position Sn à l’itération n est donc donnée par
Sn = Sn−1 + Xn
avec S0 = 0. Dans la suite, on s’intéressera à des marches aléatoires de N pas et à la distribution P (SN ) de
la position finale SN de la particule, dans les cas où les pas Xn sont distribués sur une loi f (Xn ) uniforme,
binomiale, gaussienne et de Cauchy.
En Fortran et en C, la fonction rand() génère des nombres pseudo-aléatoires uniformément distribués
entre 0 et 1. Le générateur est initialisé par la fonction srand(s), où s est un entier appelé la “graine”. Changer s
permet donc de changer la séquence des nombres pseudo-aléatoires en appelant “call srand(s)” avec une graine
s différente pour chaque marche aléatoire.
⊲ 1-1 Proposer un moyen de changer la graine pour chaque marche aléatoire simulée.
2
Loi binomiale
1 − p.
Les pas de la marche aléatoire discrète valent Xn = 1 avec la probabilité p ou Xn = −1 avec la probabilité
⊲ 2-1 Comment générer la variable aléatoire Xn à partir de la fonction rand() ?
⊲ 2-2 Générer quelques marches aléatoires de N = 10000 pas pour p = 0.4, 0.49 et 0.5. Tracer ces marches
aléatoires (Sn en fonction de n). Quelle est la trajectoire moyenne < Sn > pour chaque valeur de p ?
⊲ 2-3 Observer l’aspect d’une marche aléatoire M symétrique (p = 0.5) de N = 10000 pas. Soit M′ la marche
aléatoire obtenue à partir des 1000 premiers pas de M. Tracer sur un même graphe M et M′ en multipliant la
taille des itérations (axe des abscisses) de cette dernière par 10. Par quel facteur faut-il multiplier la taille des
pas (axe des ordonnées) de M′ pour que les deux marches aléatoires aient le même aspect ? Reprendre la même
procédure avec M′′ , la marche aléatoire obtenue à partir des 100 premiers pas de M.
q
⊲ 2-4 Pour p = 0.5, générer
pM = 10 (d’abord pour q = 1, puis q = 2, 3 et 4) marches aléatoires de N = 10000
pas et calculer < Sn >q et V ar(Sn )q pour n ≤ N . Calculer la distribution (ie les histogrammes) P (SN )q de la
p
dernière position SN . Tracer sur un même graphe < Sn >q et V ar(Sn )q d’une part et P (SN )q d’autre part.
Quelle est la fonction qui ajuste cette distribution dans la limite M ≫ 1 ? Pourquoi ?
3
Loi uniforme
Les pas de la marche aléatoire sont distribués sur une loi uniforme f (Xn ) centrée entre −0.5 et 0.5.
⊲ 3-1 Comment générer la variable aléatoire Xn à partir de la fonction rand() ?
⊲ 3-2 Générer quelques marches aléatoires de N = 10000 pas. Vérifier que f (Xn ) est bien la distribution
uniforme souhaitée. Tracer une marche aléatoire (Sn en fonction de n) et la comparer à une marche aléatoire
binomiale symétrique. Quelle est la différence entre ces deux marches aléatoires ?
⊲ 3-3 Reprendre la question 2-4. Vers quelle fonction tend P (SN ) quand M ≫ 1 ? Pourquoi ?
1
4
Loi gaussienne
Les pas de la marche aléatoire sont distribués sur une loi gaussienne de paramètres m et σ > 0 :
1
f (Xn ) = √
2πσ 2
(Xn − m)2
2σ 2
e
−
⊲ 4-1 Générer la variable aléatoire Xn à partir de la fonction rand() en utilisant par exemple la méthode de
Box-Muller.
⊲ 4-2 Générer quelques marches aléatoires de paramètres m = 0 et σ = 1 de N = 10000 pas. Tracer ces marches
aléatoires (Sn en fonction de n). Vérifier que f (Xn ) est bien la distribution gaussienne souhaitée. Quelle valeur
de σ faut-il choisir pour que la marche aléatoire gaussienne et la marche aléatoire binomiale symétrique aient
le même aspect ?
⊲ 4-3 Reprendre la question 2-4. Vers quelle fonction tend P (SN ) quand M ≫ 1 ? Pourquoi ?
5
Loi de Cauchy
Les pas de la marche aléatoire sont distribués sur une loi de Cauchy de paramètres x0 et a > 0 :
f (Xn ) =
1
0 2
πa(1 + ( x−x
a ) )
⊲ 5-1 Générer la variable aléatoire Xn à partir de la fonction rand() en utilisant par exemple la méthode de
la transformation inverse.
⊲ 5-2 Générer quelques marches aléatoires de paramètres x0 = 0 et a = 1 de N = 10000 pas. Tracer ces
marches aléatoires (Sn en fonction de n). Vérifier que f (Xn ) est bien la distribution de Cauchy souhaitée.
⊲ 5-3 Générer deux marches aléatoires de N = 1000 pas, l’une gaussienne (m = 0, σ 2 = 1), l’autre de Cauchy
(x0 = 0 et a = .8). Tracer et comparer pour ces deux marches aléatoires : i) les distributions f (Xn ), ii) les
historiques des pas Xn et iii) les trajectoires Sn .
⊲ 5-4 Reprendre la question 2-4. Vers quelle fonction tend P (SN ) quand M ≫ 1 ? Pourquoi ?
2
Téléchargement