ECG2-TP5-correction (2)
ECG2-TP5-correction (2)
ECG2-TP5-correction (2)
Exercice 1
1. Écrire une fonction norcentreereduite() simulant la loi N (0, 1) à l’aide de la fonction rd.random.
1 def norcentreereduite():
2 u = rd.random(12)
3 x = np.sum(u)-6
4 return x
1 def normale(m,s):
2 x = norcentreereduite()
3 y = s*x+m
4 return y
Exercice 2
1. Rappeler l’expression de la fonction de répartition de U ,→ U (]0, 1[).
2. Démontrer le théorème précédent.
0 si x ≤ 0
1. On a FU : x ∈ R 7→ x si 0 < x < 1 .
1
si x ≥ 1
2. Posons Y = F −1 (U ). On a Y (Ω) = F −1 (]0, 1[) =]a, b[= X(Ω). Et pour tout x ∈]a, b[, on
a:
Les fonctions de répartitions de X et Y sont égales : elles suivent donc la même loi.
Exercice 3
1. Rappeler l’expression de la fonction de répartition d’une loi exponentielle, et montrer qu’elle
réalise une bijection de R∗+ sur ]0, 1[.
Déterminer sa bijection réciproque.
2. (a) Écrire une fonction exponentielle(lambda) simulant une loi E (λ) à partir de la fonction
rd.random().
(b) Écrire une fonction Exponentielle(lambda,N) donnant un échantillon de taille N de la
loi E (λ).
3. (a) Créer un vecteur de taille 10000 contenant 10000 simulations d’une variable aléatoire suivant
la loi E (1/2).
(b) En utilisant les commandes np.mean et np.std de la librairie numpy, vérifier que la moyenne
et l’écart-type empiriques (c’est-à-dire de ce vecteur) sont bien conformes à ce qu’on attend.
4. (a) Écrire une fonction gamma(n) simulant la loi γ(n) pour tout n ∈ N∗ .
(b) Écrire une fonction Gamma(n,N) renvoyant un vecteur contenant N réalisations de la loi
γ(n).
0 si x ≤ 0
(
F : x ∈ R 7→ .
1 − e−λx si x > 0
F est continue sur R∗+ , strictement croissante sur cet intervalle (car F est dérivable et
F 0 (x) = λe−λx > 0) et on a lim F = 0 et lim F = 1. Par le théorème de la bijection, F
0+ +∞
réalise une bijection de R∗+ dans ]0, 1[.
Déterminons F −1 :]0, 1[→ R∗+ . Soit pour cela x ∈ R∗+ et y ∈]0, 1[. On résout :
1 def exponentielle(lbd):
2 u = rd.random()
3 x = -(1/lbd)*np.log(1-u)
4 return x
1 def Exponentielle(lbd,N):
2 X = np.zeros(N)
3 for k in range(N):
4 X[k] = exponentielle(lbd)
5 return X
2
ECG2 - Maths approfondies Lycée Louis Pergaud
1 E = Exponentielle(0.5,10000)
2 print(np.mean(E),np.std(E))
(b) Rappelons que les commandes np.mean et np.std calculent respectivement la moyenne
et l’écart-type d’une série statistique. On obtient ici 2.0344615 et 2.0258905. C’est
bien conforme à ce qu’on attend, puisque l’espérance et la variance d’une loi E (λ) sont
1
égales à , c’est-à-dire 2 ici.
λ
4. (a) Rappelons pour commencer que si X1 , . . . , Xn sont indépendantes et de même loi
E (1) = γ(1), alors X1 + · · · + Xn suit une loi γ(n) par stabilité de la loi gamma. En
utilisant ce résultat, on en déduit la fonction suivante pour simuler une loi γ(n) :
1 def gamma(n):
2 X = Exponentielle(1,n)
3 y = np.sum(X)
4 return y
1 def Gamma(n,N):
2 X = np.zeros(N)
3 for k in range(N):
4 X[k] = gamma(n)
5 return X
Exercice 4
On rappelle qu’une variable X suit une loi de Cauchy si elle admet pour fonction de répartition la
fonction :
1 π
F : x ∈ R 7→ arctan(x) + .
π 2
1 1
Une densité de X est alors la fonction f : t 7→ .
π 1 + t2
1. Montrer que F réalise une bijection de R sur ]0, 1[, et déterminer F −1 .
2. (a) Écrire une fonction cauchy() simulant une loi de Cauchy à partir de la fonction rd.random.
(b) Écrire une fonction Cauchy(N) donnant un échantillon de taille N de la loi de Cauchy.
3. (a) Créer un vecteur de taille 10000 contenant 10000 simulations d’une variable aléatoire suivant
la loi de Cauchy.
(b) Utiliser la commande np.mean avec ce vecteur pour évaluer l’espérance d’une loi de Cauchy.
Recommencer avec plusieurs échantillons. Que constatez-vous ? Une variable suivant la loi
de Cauchy admet-elle une espérance ?
3
ECG2 - Maths approfondies Lycée Louis Pergaud
1 π π
y = F (x) ⇔ y = arctan(x) + ⇔ πy − = arctan(x)
π 2 2
π
⇔ x = tan πy −
2
π
Ainsi on a F −1 : y ∈]0, 1[→ tan πy − .
2
2. (a) En utilisant la méthode d’inversion, on obtient :
1 def cauchy():
2 u = rd.random()
3 c = np.tan(np.pi*u-np.pi/4)
4 return c
1 def Cauchy(N):
2 C = np.zeros(N)
3 for k in range(N):
4 C[k] = cauchy()
5 return C
1 C = Cauchy(10000)
(b) On utilise :
1 print(np.mean(C))
Exercice 5
1. Simuler avec la fonction Exponentielle N = 10000 valeurs de la loi E (0.5).
4
ECG2 - Maths approfondies Lycée Louis Pergaud
3. Tracer l’histogramme des fréquences de l’échantillon obtenu (on prendra pour cela une subdivi-
sion c de l’intervalle [0, 10] en p = 100 intervalles de même longueur).
Comparer l’histogramme des fréquences de l’échantillon à la courbe représentative de f . Qu’en
pensez vous ?
1. On procède ainsi :
1 # Echantillon
2 N = 10000
3 lbd = 1/2
4 x = Exponentielle(lbd,N)
5 # densit é
6 def f(t):
7 y = lbd*np.exp(-lbd*t)
8 return y
9 t = np.linspace(0,10,100)
10 y = f(t)
11 plt.plot(t,y)
On obtient :
On observe graphiquement que les aires des rectangles formant l’histogramme des fréquences
sont proches des aires délimitées par la courbe représentative de la densité. On peut donc
conclure que Exponentielle(0.5) renvoie bien des simulations suivant la loi E (0.5).
5
ECG2 - Maths approfondies Lycée Louis Pergaud
1 # Echantillon
2 N = 10000
3 n = 3
4 x = Gamma(n,N)
5
6 # densit é
7 def f(t):
8 y = (t**2)*np.exp(-t)/2
9 return y
10 t = np.linspace(0,10,100)
11 y = f(t)
12 plt.plot(t,y)
13
18 plt.show()
On obtient :
On observe là aussi que les aires des rectangles formant l’histogramme des fréquences sont
proches des aires délimitées par la courbe représentative de la densité : la simulation de la
loi γ(3) par la commande gamma(3) est donc pertinente.
Exercice 6
1. Expliquer les lignes de commandes proposées pour tracer la fonction de répartition empirique.
1 plt.step(np.sort(x),np.arange(0,1,1/N))
2 plt.show()
6
ECG2 - Maths approfondies Lycée Louis Pergaud
Le vecteur np.sort(x) est de même longueur N que x et contient les valeurs (ou modalités)
de x triées dans l’ordre croissant. Notons que l’échantillon x provenant d’une simula-
tion d’une loi continue, aucune valeur n’apparait plusieurs fois (toutes les modalités sont
d’effectif 1).
Le vecteur np.arange(0,1,1/N) est lui aussi de longueur N, et correspond à une progression
arithmétique de 0 à 1 (exclu) de raison 1/N.
La commande plt.step(np.sort(x),np.arange(0,1,1/N)) trace alors la fonction G en
escalier d’abscisse np.sort(x) et d’ordonnée np.arange(0,1,1/N). Pour tout x ∈ R, il
existe k ∈ J0, N − 2K tel que x soit compris entre la k-ème modalité yk et la (k + 1)-ème
modalité yk+1 de np.sort(x). Et G(x) est alors égale à k/N , qui est la fréquence des
modalités inférieures ou égales à x. G est donc bien la fonction de répartition empirique
associée à l’échantillon x.
1 # Echantillon
2 N = 10000
3 lbd = 1
4 x = Exponentielle(lbd,N)
16 plt.show()
On obtient :
Ces fonctions sont très proches l’une de l’autre, notre simulation semble donc pertinente.
7
ECG2 - Maths approfondies Lycée Louis Pergaud
Exercice 7
1. Calculer Φ(0), Φ(1), Φ(1.96).
2. Soit X une variable aléatoire suivant la loi N (3, 22 ). Calculer P (X > 10), P (0 ≤ X < 3).
3. Tester les simulations obtenues des lois N (0, 1) et N (2, 32 ) en traçant les fonctions de répartition
théoriques et empiriques.
1 import scipy.special as sp
2 p1 = sp.ndtr(0)
3 p2 = sp.ndtr(1)
4 p1 = sp.ndtr(1.96)
5 print(p1,p2,p3)
2. On a :
X −3 7
P (X > 10) = 1 − P (X ≤ 10) = 1 − P (X − 3 ≤ 7) = 1 − P ≤ = 1 − Φ(3.5)
2 2
À l’aide de la commande :
1 p = sp.ndtr(3.5)
2 disp(1-p)
1 # Echantillon
2 N = 10000
3 m = 0
4 s = 1
5 x = Normale(m,s,N)
6
16 plt.show()
On obtient :
8
ECG2 - Maths approfondies Lycée Louis Pergaud
1 # Echantillon
2 N = 10000
3 m = 2
4 s = 3
5 x = Normale(m,s,N)
6
16 plt.show()
On obtient :
1 # Echantillon
9
ECG2 - Maths approfondies Lycée Louis Pergaud
2 N = 10000
3 m = 0
4 s = 1
5 x = rd.normal(m,s,N)
6
16 plt.show()
On obtient :
Les résultats obtenus avec rd.normal sont similaires de ceux obtenus avec la fonction
Normale.
Exercice 8 (FF)
Soient a ∈ R∗+ et (X1 , . . . , Xn ) une famille de variables aléatoires indépendantes, identiquement dis-
tribuées suivant une loi uniforme sur [0, a]. On pose :
U = min(X1 , . . . , Xn ) et V = max(X1 , . . . , Xn ).
1 def simulation(a,n):
2 nb_sim = 10000
3 R = a*rd.random([nb_sim,n])
4 couple = np.array([np.min(R,1), np.max(R,1)])
5 return couple
10
ECG2 - Maths approfondies Lycée Louis Pergaud
1. Nous l’avons traité en TD. On obtient les fonctions de répartitions suivantes pour U et V
respectivement :
0 si x < 0 0 si x < 0
FU : x ∈ R 7→ x n et FV : x ∈ R 7→ x n
1− 1− si x ∈ [0, a] si x ∈ [0, a] .
a a
1
si x > a 1
si x > a
1 # é chantillon
2 n = 2
3 a = 1
4 U = simulation(a,n)[0]
5
16 plt.show()
11
ECG2 - Maths approfondies Lycée Louis Pergaud
Les courbes étant pratiquement confondues, cela valide cette simulation de la variable U .
2. Pour x ≤ λ, on a P (X ≤ x) = 0, et si x > λ :
1
Z x Z x k
λ
P (X ≤ x) = fλ (t) dt = kλ dt = 1 − .
−∞ λ tk+1 x
3. FX réalise une bijection croissante de ]λ, +∞[ sur ]0, 1[. Pour trouver sa bijection, prenons
x ∈]λ, +∞[ et y ∈]0, 1[ et résolvons :
k
λ λ
FX (x) = y ⇔ 1 − =y⇔x= 1 .
x (1 − y) k
λ
Ainsi, FX−1 (y) = 1 .
(1 − y) k
En appliquant la méthode d’inversion, on peut simuler une loi de Pareto de paramètres λ
et k comme suit.
12
ECG2 - Maths approfondies Lycée Louis Pergaud
1 def pareto1(lbd,k):
2 y = rd.random()
3 return lbd/((1-y)**(1/k))
4. (a) On vérifie que Z = max(X1 , . . . , Xk ) est une variable à densité, avec pour fonction de
répartition :
0 si x ≤ 0
FZ : x ∈ R 7→ x n si x ∈]0, 1[ .
1
si x ≥ 0
λ λ λ
P (Y ≤ x) = P ≤x =P ≤ Z = 1 − P (Z < )
Z x x
λ
= 1 − P (Z ≤ ) car Z est à densité
x
k
λ
=1− .
x
Donc Y suit une loi de Pareto de paramètres λ et k.
(b) On peut procéder comme suit, en suivant la définition de la variable Y .
1 def pareto2(lbd,k):
2 Z = np.max(rd.random(k))
3 return lbd/Z
∀x ∈ R, 0 ≤ f (x) ≤ K et f (x) = 0 si x ∈
/ [a, b].
Rappelons que pour tout α < β, l’aire Aα,β comprise entre la courbe, l’axe des abscisses et les droites
d’équations x = α et x = β correspond exactement à la probabilité que la variable aléatoire X prenne
les valeurs comprises entre α et β :
Z β
Aα,β = f (t) dt = P (α ≤ X ≤ β).
α
1. Quelle est la loi du nombre d’essais avant de tirer un point qui est bien situé sous la courbe de
f ?
13
ECG2 - Maths approfondies Lycée Louis Pergaud
2. Soit X une variable aléatoire dont une densité f est définie sur R par :
1. On répète une même épreuve à deux issues (succès ou échec) de manière identique et
indépendante, et on compte le nombre d’essais pour obtenir le premier succès. Il s’agit
donc d’une loi géométrique de paramètre p la probabilité de succès.
La probabilité de succès est égale au rapport de l’aire sous la courbe représentative de f ,
qui est égale à 1 puisque f est une densité, avec l’aire du rectangle [a, b] × [0, K], égale à
(b − a) × K. Ainsi, p = (b−a)×K
1
.
1 def f(x):
2 return 6*x*(1-x)
3
4 x = np.linspace(0,1,100)
5 y = f(x)
6 plt.plot(x,y)
7 plt.show()
1 def simulation():
2 x = rd.random()
14
ECG2 - Maths approfondies Lycée Louis Pergaud
3 y = (3/2)*rd.random()
4 while y>f(x) :
5 x = rd.random()
6 y = (3/2)*rd.random()
7 return x
1 N = 10000
2 x = np.zeros(N)
3 for k in range(N):
4 x[k] = simulation()
5 plt.hist(x,100,density='True',edgecolor='k')
6 plt.show()
15