TP 2
TP 2
TP 2
TP2
Lemme 1. Si U est une variable aléatoire de loi uniforme U([0, 1]), alors F −1 (U ) a même
loi que X. De plus, si F est continue sur R, alors F (X) suit la loi uniforme U([0, 1]).
Exercice 1. Utiliser le code Matlab suivant pour engendrer N réalisations de variables aléa-
toires indépendantes et de loi exponentielle de paramètre λ > 0 ou bien de loi de Cauchy de
paramètre c > 0.
clear
N = input(’Entrez la taille de l’échantillon N : ’) ;
λ = input(’Préciser la valeur du paramètre λ : ’) ;
c = input(’Préciser la valeur du paramètre c : ’) ;
X = rand(N, 1); Y = − log(X)/λ; Z = c ∗ tan(π ∗ (X − 0.5));
Tracer les moyennes empiriques successives de Y et vérifier la loi des grands nombres pour Y .
Augmenter le nombre N de réalisations pour affiner la précision. Comparer vos résultats de si-
mulations avec le générateur rexpweib de Matlab. Effectuer le même exercice pour la loi normale
N (0, 1). Que se passe-t-il sur Z ? Quelle est la loi de la moyenne empirique associée à Z ? Conclure.
Alors, X est une variable aléatoire de loi discrète P = p1 δx1 + p2 δx2 + · · · + pn δxn .
Exercice 3. Utiliser la fonction Matlab probadis.m afin d’engendrer une réalisation aléatoire
d’une loi discrète à support fini.
1
f unction realis = probadis(n, x, p)
% Générateur aléatoire d’une loi discrète à support fini.
% n ≥ 1 est le cardinal du support de la loi.
% p est un vecteur de n nombres réels positifs tel que sum(p) = 1.
% x est un vecteur de n nombres réels donnant le support de la loi.
% Les réalisations successives sont indépendantes.
r = rand ; a = 0 ; b = p(1) ;
f or i = 1 : n − 1,
if ((r >= a) & (r < b))
realis = x(i) ;
return ;
end
a = b; b = b + p(i + 1) ;
end
realis = x(n) ;
return ;
Créer un code Matlab permettant d’engendrer un vecteur aléatoire X contenant N réalisations
indépendantes et de même loi Binomiale B(n, p) où les valeurs N, n ≥ 1 et 0 < p < 1 sont af-
fectées par l’utilisateur. Pour N assez grand, vérifier la loi des grands nombres sur les moyennes
empiriques successives de X. Comparer vos résultats de simulations avec le générateur rbinom
de Matlab.
2
Exercice 6. Utiliser le code Matlab suivant pour engendrer N réalisations de variables aléa-
toires indépendantes et de loi uniforme discrète sur {1, 2, · · · , a} avec a ∈ N∗ ou bien de loi
géométrique de paramètre p = 1 − exp(−λ) avec λ > 0.
clear
N = input(’Taille de l’échantillon N : ’) ; a = input(’Valeur du paramètre a : ’) ;
if a ∼= round(a)
disp(’La valeur du paramètre a doit etre un entier positif ! !’)
break
end
λ = input(’Préciser la valeur du paramètre λ : ’) ;
X = rand(N, 1); Y = f ix(1 + a ∗ X); Z = f ix(− log(X)/λ);
Tracer les moyennes empiriques successives de Y et vérifier la loi des grands nombres pour
Y . Augmenter le nombre N de réalisations pour affiner la précision. Effectuer le même exercice
pour la loi géométrique associée à Z. Comparer vos résultats de simulations avec le générateur
rgeom de Matlab.
3 Simulations de Gaussiennes.
L’algorithme de Box-Muller de simulation de gaussiennes repose sur le lemme suivant.
Lemme 4. Soit (X, Y ) un couple aléatoire de R2 . Alors, (X, Y ) suit la loi normale N (0, I2 )
si et seulement si X = r cos θ et Y = r sin θ où r et θ sont deux variables aléatoires indépen-
dantes avec r2 de loi exponentielle E(1/2) et θ de loi uniforme U([0, 2π]).
Il découle de ce lemme que, si U et V sont deux variables aléatoires indépendantes de loi uniforme
U([0, 1]), alors
p p
X = −2 log U cos(2πV ) et Y = −2 log U sin(2πV )
Exercice 7. Utiliser le code Matlab suivant pour engendrer N réalisations de variables aléa-
toires indépendantes et de loi normale N (m, σ 2 ) où la moyenne m ∈ R et la variance σ 2 > 0
sont affectées par l’utilisateur. Tracer également l’histogramme associé.
clear
N = input(’Taille de l’échantillon N : ’) ; m = input(’Valeur de la moyenne m : ’) ;
σ 2 = input(’Préciser la valeur de la variance σ 2 : ’) ;
X = m ∗ ones(N, 1) + sqrt(σ 2 ) ∗ sqrt(−2 ∗ log(rand(N, 1))). ∗ cos(2 ∗ pi ∗ rand(N, 1)) ;
clf
[E, C] = histo(X, sqrt(N ), 0, 1) ;
hold on
title(’Simulation d’une loi gaussienne’) ; xlabel(’Valeurs’) ; ylabel(’Effectifs’) ;
plot(C, dnorm(C, m, σ),0 r−0 ) ; legend(’Empirique’,’Théorique’) ;
hold of f
Lemme 5. Soit (X, Y ) un couple de variables aléatoires de loi uniforme sur le disque unité
D = {(x, y) ∈ R2 /x2 + y 2 < 1}. Soit (r, θ) le√couple de coordonnées polaires associé à (X, Y ),
X = r cos θ et Y = r sin θ. On pose R = 2 − log r/r. Alors, (RX, RY ) suit la loi normale
N (0, I2 ).
3
Exercice 8. Reprendre l’exercice 5 avec le code Matlab suivant.
clear
N = input(’Entrez la taille de l’échantillon N : ’) ; m = input(’Précisez la valeur de la moyenne
m : ’) ;
σ 2 = input(’Précisez la valeur de la variance σ 2 : ’) ;
max = round(3 ∗ N/2) ;
X = 2 ∗ rand(max, 1) − ones(max, 1); Y = 2 ∗ rand(max, 1) − ones(max, 1) ;
S = X.∧ 2 + Y.∧ 2; X = X(f ind(S < 1)); Y = Y (f ind(S < 1)) ;
r = sqrt(X.∧ 2 + Y.∧ 2); R = 2 ∗ sqrt(−log(r))./r ;
Z = R(1 : N ). ∗ X(1 : N ); T = m ∗ ones(N, 1) + sqrt(σ 2 ) ∗ Z ;
Lemme 6. Soit m ∈ Rd et Γ une matrice réelle, carrée d’ordre d, symétrique et définie po-
sitive. Soit A une matrice carrée d’ordre d telle que AAt = Γ et soit X un vecteur aléatoire
gaussien N (0, Id ). Alors, Y = AX + m suit la loi normale Nd (m, Γ).
Exercice 9. Créer un code Matlab permettant d’engendrer N réalisations d’un vecteur aléatoire
de loi Nd (m, Γ) où la dimension d, la moyenne m et la matrice de covariance Γ sont affectées par
l’utilisateur. Pour calculer la racine carrée A de Γ, on utilisera la commande sqrtm ou bien la
décomposition de Cholesky chol.
Exercice 10. Utiliser le code Matlab suivant afin de simuler une trajectoire brownienne.
clear; clf
N = input(’Entrez la taille de l’échantillon N : ’) ; a = 0; b = 1; h = (b − a)/N ;
plot([a : h : b], cumsum(sqrt(h) ∗ randn(N + 1, 1))) ;hold on
title(’Simulation d’une trajectoire brownienne’) ;
xlabel(’Temps t’) ; ylabel(’Valeurs de Bt’) ;grid; hold of f
4 Représentations graphiques.
% Illustration de la LGN pour la loi exponentielle.
clear; n = 1000; lambda = 0.5 ; X = −log(rand(n, 1))/lambda ;
f igure ; Création d’une nouvelle fenêtre graphique.
0 0 0
plot(cumsum(X) ./[1 : length(X)], b ) Trace les moyennes empiriques successives de X.
title(0 Loi des Grands N ombres0 ) Titre de la figure.
xlabel(0 N ombre de realisations0 ) Titre des abscisses.
0
ylabel( M oyennes empiriques ) 0 Titre des ordonnées.
hold on Garde la fenêtre graphique.
0
plot(1/lambda ∗ ones(n, 1), r − − );0 Trace la limite théorique.
legend(0 Empirique0 ,0 T heorique0 ); Légende.
Exercice 18. Ajouter à vos codes Matlab les représentations graphiques rencontrées ci-dessus.