UTILISATION DU LOGICIEL SCILAB – 2ème partie
1) Graphiques a) Fonctions
Lorsqu’une fonction est créée, aucun calcul n’est effectué, elle est « seulement » enregistrée. Les calculs ne seront effectués que lors de l’appel de la fonction dans le programme qui la contient.
L‘instruction
function [z]=g(x),instructions, endfunction
permet de créer la fonction nommée g qui, à chaque variable x (choisie) associe le réel z décrit dans instructions par z=...
Exemple 1 : L’instruction
function [z]=g(x),z=3*x^2-2*x+5, endfunction permet de créer la fonction définie par () = 3− 2 + 5.
La fonction plot :
Pour deux variables et contenant les vecteurs lignes (, , … , ) et (, , … , ), plot(x,y) commande le tracé du graphe obtenu en reliant les points de coordonnées (, ) par des segments.
Remarque 1 : pour le graphe d’une fonction, on créé des points suffisamment rapprochés pour créer l’illusion d’une courbe (mais elle est en fait constituée de segments successifs de longueur très faible).
L’instruction x=min:pas:max créé un vecteur ligne constitué des réels compris entre min et max, le pas donne l’écart entre chaque coordonnée : par exemple x=-2:0.1:2.
Exemple 2 : Traçons le graphe de la fonction : ↦√ sur [−3,3]
function [z]=f(x),z=1/sqrt(2*%pi)*exp(-x^2/2), endfunction x=-3:0.1:3;plot(x,f(x))
Il existe une autre possibilité pour tracer le graphe d’une fonction à l’aide d’un nuage de points : La fonction plot2d :
Pour deux variables et contenant les vecteurs lignes (, , … , ) et (, , … , ), plot2d(x,y,style)commande le tracé du graphe obtenu :
- en reliant les points de coordonnées (, ) par des segments si la valeur attribuée à style est positive,
- en représentant les points non reliés si la valeur attribuée à style est négative.
Tableau de transposition de l’option style :
-6 -5 -4 -3 -2 -1 0 1 2 3 4 5
∆ ◊ ♦ ⊕ × + . Noir Bleu
foncé Vert Bleu
clair rouge Par défaut, si aucun style n’est précis, le style « 1 » est utilisé.
Exemple 3 : x=1:10;y=[2,5,8,9,9,8,6,4,3,1];plot2d(x,y,1)
Exemple 4 : x=1:10;y=[2,5,8,9,9,8,6,4,3,1];plot2d(x,y,-4,rect=[0,0,11,10])
Remarque 2 : rect=[0,0,11,10] donne une zone d’affichage du graphe pour mieux visualiser les points extrêmes : on va du point (0,0) au point (11,10).
Exemple 5 : x=-1:0.01:3;y=3*x.^2-5*x+1;plot2d(x,y) ou plus simplement :
x=-1:0.01:3;plot2d(x,3*x.^2-5*x+1)
permet de dessiner le graphe de la fonction : ↦ 3− 5 + 1 sur [−1,3]
Variante : la fonction fplot2d(x,f) : on construit le vecteur et la fonction Exemple 6 :
function [z]=f(x),z=exp(-x), endfunction x=-3:0.01:3;fplot2d(x,f)
b) Diagramme en bâtons, histogramme
Pour deux variables et contenant les vecteurs lignes (, , … , ) et ( , , … , ), bar(x,y) commande le tracé du diagramme en bâtons associé à la série dont les valeurs sont les et les effectifs associés.
Exemple 7 : Traçons le diagramme en bâtons associé à la série = (1,2,3,4,5,6,7,8,9,10) et = (2,5,8,9,9,8,2,4,5,6) :
x=1:10;y=[2,5,8,9,9,8,6,4,3,1];bar(x,y)
Pour une variable = (, , … , ) l’instruction
c=linspace(valeur mini,valeur maxi,n+1)
regroupe les en classes (d’où les + 1 extrémités…), puis histplot(c,x) commande le tracé de l’histogramme correspondant.
Exemple 8 : Traçons l’histogramme associé à la série engendrée par la simulation de 1000 variables aléatoires indépendantes de même loi binomiale de paramètres 20 et 0,5 :
x=grand(1000,1,’bin’,20,0.5);c=linspace(0,20,21);histplot(c,x)
c) Surfaces (nappes) de l’espace La fonction fplot3d :
On construit les vecteurs x et y contenant les vecteurs lignes (, , … , ) , (, , … , ) (avec un pas assez petit), on déclare la fonction dont on veut tracer la nappe : pour cela on utilise l’instruction fplot3d(x,y,f).
Exemple 9 :
function [z]=f(x,y),z=x^2+y^2,endfunction x=-3:0.1:3 ; y=x ; fplot3d(x,y,f)
Remarque 3 : Pour visualiser d’autres facettes de la nappe, on peut utiliser l’option « pivoter » en haut à gauche de la fenêtre graphique. Un clique droit permet de faire tourner le graphe.
Remarque 4 : Il existe aussi l’option plot3d(x,y,z)mais la création de z est plutôt fastidieuse, on se contentera de la fonction fplot3d qui fait très bien le travail !
Remarque 5 : La fonction contour(x,y,f,n), connaissance non exigible, donne lignes de niveau associées à une fonction de deux variables , régulièrement espacées entre le niveau minimal et le niveau maximal atteints dans la plage des (, ) considérés.
Exemple 10 :
function [z]=f(x,y),z=x^2*y^2*exp(-(x^2+y^2)),endfunction x=-4:0.1:4 ; y=x ; fplot3d(x,y,f)
function [z]=f(x,y),z=x^2*y^2*exp(-(x^2+y^2)),endfunction x=-4:0.1:4 ; y=x ; contour(x,y,f,20)
Les « taches sombres » sont les valeurs de z (autrement dit des niveaux associés)
II – Compléments sur les vecteurs et les matrices
1) Vecteurs
Pour un vecteur ligne dont les éléments forment une suite arithmétique de premier terme ', de raison ( et ne dépassant pas ), on note : u=a:r:b
Exemple 11 :
La commande u=-2:3:15 donne :
-2. 1. 4. 7. 10. 13.
La commande v=10:-2:1 donne : 10. 8. 6. 4. 2.
L’instruction
linspace(valeur mini,valeur maxi,nombre de valeurs)
construit un vecteur à pas constant dont le premier terme, le dernier terme et le nombre de termes sont déterminés à l’avance.
Exemple 12 :
La commande u=linspace(3,7,11) donne :
3. 3.4 3.8 4.2 4.6 5. 5.4 5.8 6.2 6.6 7.
2) Matrices
On peut, lorsque cela est possible et pour les grandes matrices, définir une matrice en définissant chaque ligne comme un vecteur particulier.
Exemple 13 :
La commande A=[1:2:9;2:6;2:2:10] donne : A=
1. 3. 5. 7. 9.
2. 3. 4. 5. 6.
2. 4. 6. 8. 10.
a) Matrices prédéfinies
La matrice ones(n,m) : matrice à n lignes et m colonnes dont tous les coefficients sont égaux à 1.
La matrice zeros(n,m) : matrice à n lignes et m colonnes dont tous les coefficients sont égaux à 0.
La matrice eye(n,m) : matrice à n lignes et m colonnes dont tous les coefficients sont nuls sauf les éléments ', qui valent 1 (c’est matrice identité si n=m)
b) Opérations
Concaténation : elle permet de juxtaposer vecteurs et matrices déjà définis dont les formats sont compatibles.
Exemple 14 :
La commande u=1:5;v=[u,u] donne : v=
1. 2. 3. 4. 5. 1. 2. 3. 4. 5.
La commande u=1:2:7;A=[u;u;u;u] donne : A=
1. 3. 5. 7.
1. 3. 5. 7.
1. 3. 5. 7.
1. 3. 5. 7.
Si * est une matrice, la commande A(a:r:b) renvoie les éléments de * dont les positions sont ', ' + (, ' + 2(, … , sans dépasser ). Les positions sont données de haut en bas de colonne en colonne.
Exemple 15 :
Après les instructions : A=[1 3 -2;5 -1 0;2 7 -3],B=A(2:2:9) on obtient : A =
1. 3. -2.
5. -1. 0.
2. 7. -3.
B = 5.
3.
7.
0.
Les fonctions min et max renvoient respectivement le plus petit et le plus grand élément d’une matrice.
Exemple 16 :
Après les instructions : A=[1 3 -2;5 -1 0;2 7 -3] ;x=min(A),y=max(A) on obtient : x =
-3.
y = 7.
La fonction length renvoie le nombre d’éléments d’une matrice.
Ne pas confondre avec la fonction size qui donne dans l’ordre le nombre de lignes et de colonnes.
Exemple 17 :
A=grand(10,10,’nor’,5,0.5);
x=find(A<5.5 & A>4.5);
B=A(x);
p=length(B)/length(A)
La première instruction construit une matrice carrée d’ordre 10 dont les éléments sont les valeurs d’une loi normale de paramètre m=5 et σ=0,5 ;
La deuxième donne les positions des éléments de A vérifiant les conditions de la fonction size ; La troisième donne les valeurs des éléments de A vérifiant les conditions de la fonction size.
La dernière donne la proportion d’éléments de A compris entre 4,5 et 5,5.
La fonction sum(A) renvoie la somme des éléments d’une matrice A.
La fonction cumsum(A) renvoie une matrice de même taille que A, dont les éléments sont les sommes partielles des éléments de A, ajoutés en commençant par ceux de la première colonne, puis de la deuxième …
Exemple 18 :
Après les instructions : u=1:10;s=sum(u),t=cumsum(u) on obtient : s =
55.
t =
1. 3. 6. 10. 15. 21. 28. 36. 45. 55.
La fonction prod(A) renvoie le produit des éléments d’une matrice A.
La fonction cumprod(A) renvoie une matrice de même taille que A, dont les éléments sont les produits partiels des éléments de A, multipliés en commençant par ceux de la première colonne, puis de la deuxième …
Exemple 18 :
Après les instructions : u=1:8;p=prod(u),q=cumprod(u) on obtient : p =
40320.
q =
1. 2. 6. 24. 120. 720. 5040. 40320.
Remarque 6 :
Ces fonctions sont la plupart du temps utilisées avec des vecteurs.
cumsum permet de calculer les sommes partielles d’une série et de conjecturer sa convergence ou divergence éventuelle
L’utilisation de cumprod est très pratique pour le calcul des factorielles et évite l’utilisation d’une boucle for.
La fonction spec(A) détermine le spectre de la matrice A c’est-à-dire l’ensemble des ses valeurs propres.
III – Statistiques et informatique
1) Statistiques simples a) Définitions
On dispose d'une famille de réels ; ; ⋯ ; - que l'on a rangée dans l'ordre croissant : ≤ ≤ . . . ≤ - (certains de ces réels peuvent être confondus).
0 représente l'effectif total.
On note ( )11- cette famille de réels qu'on appelle « série statistique (simple) ».
Les valeurs sont appelées les modalités de la série.
Exemple 19 :
Série statistique brute :
17 8 15 10 12 8 8 6 10 15 8 8 6 5 5
La même série ordonnée :
5 5 6 6 8 8 8 8 8 10 10 12 15 15 17
La même série dépouillée :
5 6 8 10 12 15 17
2 2 5 2 1 2 1
Remarque 7 :
On regroupe parfois les modalités par intervalles (classes de la série), Scilab choisit en général le nombre de classes. On dit que la série est groupée par classes.
[5 ;8] ]8 ;11] ]11 ;14] ]14 ;17]
9 2 1 3
S’il y a 2 classes, Scilab considère les intervalles de la forme suivante : [', '], ]', '3], ]'3, '4], … , ]', '5] L’ouverture (et la fermeture) des crochets a son importance.
La fonction dsearch (dichotomic search), non exigible, associée à linspace, permet de grouper une série brute en classes de même amplitude dont on peut choisir le nombre.
Comme on l’a déjà vu, linspace détermine les extrémités de chaque classe et dsearch renvoie le nombre de modalités de chaque classe ainsi que le numéro de la classe dans laquelle se trouve chaque modalité.
Exemple 20 : On reprend la série statistique de l’exemple 19 et on la découpe en 4 intervalles de même amplitude. Après avoir validé les instructions suivantes :
x=[17,8,15,10,12,8,8,6,10,15,8,8,6,5,5];
s=linspace(5,17,5), [a,b]=dsearch(x,s)
On obtient l’affichage suivant : s =
5. 8. 11. 14. 17.
b =
9. 2. 1. 3.
a =
4. 1. 4. 2. 3. 1. 1. 1. 2. 4. 1. 1. 1. 1. 1.
La fonction tabul(x,’i’) (i pour increasing donc croissant) ou tabul(x,’d’) (d pour decreasing donc décroissant) , non exigible, permet d’ordonner la série dans l’ordre croissant ou décroissant et donne l’effectif de chaque modalité de la série.
Exemple 21 : On reprend la série statistique précédente et on l’ordonne dans l’ordre croissant. Après avoir validé les instructions suivantes :
x=[17,8,15,10,12,8,8,6,10,15,8,8,6,5,5];
m=tabul(x,’i’)
On obtient l’affichage suivant : m =
5. 2.
6. 2.
8. 5.
10. 2.
12. 1.
15. 2.
17. 1.
La fonction cumsum peut également être utilisée pour le calcul d’effectifs cumulés croissants.
Exemple 22 : On reprend la série statistique précédente et on calcule les effectifs cumulés croissants puis les fréquences cumulées croissantes. Après avoir validé les instructions suivantes :
x=[17,8,15,10,12,8,8,6,10,15,8,8,6,5,5];
m=tabul(x,’i’);a=cumsum(m(:,2)),b=a/sum(m(:,2))
On obtient l’affichage suivant :
a = b =
2. 0.1333333333333
4. 0.2666666666667
9. 0.6
11. 0.7333333333333
12. 0.8
14. 0.9333333333333
15. 1.
b) Représentation graphique
On a déjà vu la représentation graphique de diagrammes en bâtons et d’histogramme.
Pour représenter un diagramme circulaire, ou « camembert » (ou « tarte » en anglais), on utilise la fonction pie(x) ou pie(x,[’x1’,’x2’,’xp’]), non exigible, où x représente un vecteur de taille 2 et ’xi’ les légendes.
Exemple 23 : On reprend la série statistique précédente et on calcule les effectifs cumulés croissants puis les fréquences cumulées croissantes. Après avoir validé les instructions suivantes :
x=[17,8,15,10,12,8,8,6,10,15,8,8,6,5,5];
m=tabul(x,’i’);pie(m(:,2))
Scilab donne un diagramme circulaire dont les légendes sont par défaut les fréquences en % associées à chaque modalité.
Pour que les parts aient des légendes correspondant aux modalités : x=[17,8,15,10,12,8,8,6,10,15,8,8,6,5,5];
m=tabul(x,’i’);pie(m(:,2),[’5’,’6’,’8’,’10’,’12’,’15’,’17’])
c) Paramètres statistiques
Le calcul de la moyenne d’une série statistique s’effectue avec la fonction mean, EXIGIBLE.
Le calcul de la médiane d’une série statistique s’effectue avec la fonction median, non exigible.
Le calcul de l’écart-type d’une série statistique s’effectue avec la fonction stdev, non exigible.
Exemple 24 : On reprend la série statistique précédente et on calcule les paramètres associés. Après avoir validé les instructions suivantes :
x=[17,8,15,10,12,8,8,6,10,15,8,8,6,5,5];
m=mean(x),Me=median(x),sigma=stdev(x)
Scilab affiche : m =
9.4 Me =
8.
sigma =
3.7758631936476
Remarque 8 :
L’écart-type calculé par Scilab n’est pas tout à fait l’écart-type de la série statistique mais l’écart-type empirique (racine carrée de la variance empirique, estimateur sans biais de la variance de la
population entière). Si l’effectif de la série est grand, l’approximation est tout à fait correcte.
Autres paramètres utiles en statistiques :
Le mode : modalité(s) correspondant au plus grand effectif
Le premier et troisième quartiles d’une série statistique : 6 (resp. 63) est la plus petite valeur de la série tel qu’au moins 25% (resp. 75 %) des termes de la série ont une valeur inférieure ou égale à 6(resp. 63). (Le deuxième quartile correspond à la médiane).
Le kème décile d’une série statistique, 78, est la plus petite valeur de la série tel qu’au moins 10k% des termes de la série ont une valeur inférieure ou égale à , 78.(Le 5ème décile correspond à la médiane).
L’étendue est la différence entre la plus grande modalité de la série et la plus petite.
L’écart interquartile est la différence entre le troisième quartile de la série et le premier.
Exemple 25 : On reprend la série statistique précédente : Mode = 8
Premier quartile : 6 Troisième quartile : 12 1er décile : 5
Étendue : 17-5=12
Écart interquartile : 12-6=6 2) Statistiques doubles
a) Définitions
On appelle série statistique double, la donnée de la liste (, )11-des modalités prises par deux variables X et Y. Chaque couple (, ) est associé à un seul individu de la population.
X 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
Y 5 8 9 9 13 15 19 21 25 29 31 35 36 42 43
Pour les séries statistiques doubles, on définit la covariance, comme pour les couples de variables aléatoires :
9:;(<, =) =1
>? − <@(− =)
Avec Scilab, on utilise la fonction corr(X,Y,1), non exigible. A
On rappelle que le coefficient de corrélation linéaire de (<, =), noté B(<, =), est défini par : B(<, =) =C:;(<, =)
DEDF
On rappelle que : −1 ≤ B(<, =) ≤ 1
Exemple 26 : On reprend la série statistique double précédente : Après avoir validé les instructions suivantes :
x=1:15;y=[5,8,9,9,13,15,19,21,25,29,31,35,36,42,43];
M_x=mean(x),M_y=mean(y),sigma_x=stdev(x),sigma_y=stdev(y) c=corr(x,y,1),rho=c/sigma_x/sigma_y
Scilab affiche : M_x = 8.
M_y =
22.666666666667 sigma_x =
4.4721359549996 sigma_y =
12.82111353904 c =
53.133333333333 rho =
0.9266725923822
b) Ajustement linéaire Méthode des moindres carrés :
Lorsque le nuage de points de la série statistique double (l’ensemble des points G(, )) a une forme allongée, il est d’usage de chercher une (ou plusieurs) droite(s) permettant d’ajuster au mieux ce nuage de points.
On cherche une droite d’équation = ' + ) ou = ' + ) telle que la somme des carrés des distances entre chaque point du nuage et le point de la droite de même abscisse soit minimale.
C’est la méthode des moindres carrés : cela revient à chercher ' et ) qui minimisent la quantité :
>?− (' + ))@
A
ou >? − (' + ))@
A
pour lMautre droite évoquée ci − dessus.
L’unique droite rendant la quantité >? − ('+ ))@
A
minimale est la droite d’équation ∶ =9:;(<, =)
](<) ? − <@ + = ∶ cette droite est appelée ^_`abc ^c _éd_ceea`f gaféha_c ^c i cf j . On dit que < est la variable explicative et = la variable expliquée.
En échangeant le rôle de < et de = :
L’unique droite rendant la quantité >? − ('+ ))@
A
minimale est la droite d’équation ∶ =9:;(<, =)
](=) ? − =@ + < ∶ cette droite est appelée ^_`abc ^c _éd_ceea`f gaféha_c ^c j cf i . On dit cette fois que = est la variable explicative et < la variable expliquée.
Remarque 9 :
Dans le cas où 9:;(<, =) ≠ 0, l’équation s’écrit sous la forme : = ](<)
9:;(<, =) ? − <@ + = Remarque 10 :
Les droites de régression passent par le point moyen de coordonnées ?<, =@. Remarque 11 :
9:;(<, =)
](<) = B(<, =)DEDF
](<) =B(<, =)DF
DE est donc du signe de B(<, =).
De même ∶ 9:;(<, =)
](=) =B(<, =)DE
DF est du signe de B(<, =).
Si B(<, =) > 0, la droite de régression est de pente positive : les valeurs de X et de Y varient dans le même sens.
Si B(<, =) < 0, la droite de régression est de pente négative : les valeurs de X et de Y varient dans le sens contraire.
Exemple 26 : On reprend la série statistique double précédente : Après avoir validé les instructions suivantes :
x=1:15;y=[5,8,9,9,13,15,19,21,25,29,31,35,36,42,43];
M_x=mean(x),M_y=mean(y),sigma_x=stdev(x);sigma_y=stdev(y);
c=corr(x,y,1);a=c/sigma_x^2
Scilab affiche : M_x = 8.
M_y =
22.666666666667 a =
2.6566666666667
Exemple 27 : On reprend la série statistique double précédente : Après avoir validé les instructions suivantes :
x=1:15;y=[5,8,9,9,13,15,19,21,25,29,31,35,36,42,43];
plot2d(x,y,-4,rect=[0,4,16,44])
plot2d(x,corr(x,y,1)/stdev(x)^2*(x-mean(x))+mean(y),3) plot2d(corr(x,y,1)/stdev(y)^2*(y-mean(y))+mean(x),y,5)
Scilab affiche le nuage de points, complété des deux droites de régression :
Remarque 12 :
1) L’option rect=[0,4,16,44]évite que le nuage de points soit tronqué des points extrêmes.
2) Le choix « -4 » pour le nuage de points donne des ♦.
3) Le choix « 3 » pour la droite de régression de Y en X colore la droite en vert.
4) Le choix « 5 » pour la droite de régression de X en Y colore la droite en rouge.
IV – Probabilités et informatique
1) Simulation
L’instruction rand()renvoie un nombre au hasard de l’intervalle [0,1], autrement dit rand()simule la valeur prise par une variable aléatoire de loi uniforme sur [0,1].
Pour deux entiers naturels non nuls et q, rand(n,m)renvoie une matrice à lignes et q colonnes dont les éléments sont les valeurs prises par q variables aléatoires indépendantes de loi uniforme sur [0,1].
Exemple 28 : Après validation de l’instruction rand(2,3), Scilab affiche : ans =
0.2113249 0.0002211 0.6653811 0.7560439 0.3303271 0.6283918
On peut utiliser rand()pour simuler la loi normale centré réduite : on écrit l’instruction rand(‘normal’)suivie de rand()ou de rand(n,m).
On revient ensuite à la simulation de la loi uniforme sur [0,1] en écrivant l’instruction rand(‘uniforme’)suivie de rand()ou de rand(n,m).
L’instruction grand permet de simuler toutes les lois usuelles rencontrées cette année.
Elle s’utilise toujours sous la forme grand(n,m,’loi’,paramètre) si la loi n’a qu’un paramètre ou grand(n,m,’loi’,paramètre1,paramètre2) si elle en a deux.
Elle renvoie une matrice à lignes et q colonnes dont les éléments sont les valeurs prises par q variables aléatoires indépendantes suivant la loi utilisée.
Simulation de variables discrètes :
Loi uniforme sur r'; )s avec ' et ) entiers tels que ' < ) :
grand(n,m,’uin’,a,b) Loi binomiale de paramètres 0 et 2 :
grand(n,m,’bin’,N,p) Loi géométrique de paramètre 2 :
grand(n,m,’geom’,p) Loi de Poisson de paramètre t :
grand(n,m,’poi’,lambda) Simulation de variables à densité :
Loi uniforme sur ['; )] avec ' et ) réels tels que ' < ) :
grand(n,m,’unf’,a,b) Loi exponentielle de paramètres t :
grand(n,m,’exp’,1/lambda)
(Attention : on écrit l’inverse du paramètre (l’espérance) et non le paramètre …) Loi normale de paramètres u et D :
grand(n,m,’nor’,mu,sigma)
(En deuxième paramètre, on écrit l’écart-type et non la variance de la loi normale …)
Exemple 29 : Après validation de l’instruction grand(3,2,’bin’,10,0.2), Scilab affiche : ans =
4. 1.
1. 0.
2. 2.
Exemple 30 : Pour simuler une loi géométrique de paramètre 2, plusieurs possibilités s’offrent à nous : p=input(‘entrez la valeur de p :’)
c=1,while rand()>p do c=c+1,end
p=input(‘entrez la valeur de p :’)
c=1,x=rand(),while x>p do x=rand(),c=c+1,end
p=input(‘entrez la valeur de p :’) grand(1,1,’geom’,p)
Remarque 13 : Les deux premières utilisent seulement la fonction rand() pour simuler la loi géométrique (la deuxième permet d’afficher les valeurs de rand() obtenues successivement)
Rappels : Pour tout couple (', )) de réels tels que ' < ), on a :
< ↪ w([0; 1]) ⇔ () − ')< + ' ↪ w(['; )]) Pour tout réel t > 0, on a :
Si < ↪ w([0; 1]) alors −1
t ln(1 − <) ↪ ℰ(t)
Ces résultats du chapitre 8 permettent de simuler, sans utiliser la fonction grand, la loi uniforme sur [', )] et la loi exponentielle de paramètre t.
Ces résultats proviennent d’un résultat plus général : La méthode d’inversion :
Soit { une variable aléatoire suivant la loi uniforme sur [0,1].
1) Si < est une variable aléatoire discrète prenant ses valeurs dans {, , 3… } avec < < ⋯ et de fonction de répartition ~, on a :
(< = ) = ~() et ∀ ≥ 2, (< = 8) = (~(8) < { ≤ ~(8))
2) Si < est une variable aléatoire à densité de fonction de répartition ~, on a :
∀ ∈ ℝ, ~() = ({ ≤ ~()) Remarque 14 :
1) On retrouve l’égalité usuelle : (< = 8) = ~(8) − ~(8)
2) On retrouve les résultats du rappel en utilisant la fonction de répartition connue : Si < est une variable aléatoire de loi uniforme sur [', )] de fonction de répartition ~, on a :
∀ ∈ ℝ, ~() = (< ≤ ) =
0 si < '
si ∈ ['; )]
1 si > )
Or, ∀ ∈ ℝ, ({ ≤ ~()) =
({ ≤ 0) si < '
{ ≤ si ∈ ['; )]
({ ≤ 1) si > )
=
0 si < '
?() − '){ + ' ≤ @ si ∈ ['; )]
1 si > )
Conclusion : ∀ ∈ ℝ, ~() = ?() − '){ + ' ≤ @
Les lois < et () − '){ + ' suivent la même loi uniforme sur ['; )].
Si < est une variable aléatoire de loi exponentielle de paramètre t de fonction de répartition ~, on a :
∀ ∈ ℝ, ~() = 0 si < 0 1 − e si ≥ 0
Or, ∀ ∈ ℝ, ({ ≤ ~()) = ({ ≤ 0) si < 0
?{ ≤ 1 − e@ si ≥ 0
?{ ≤ 1 − e@ = ?1 − { ≥ e@ = (ln(1 − {) ≥ −t) = −1
t ln(1 − {) ≤ Conclusion : ∀ ∈ ℝ, ~() = −ln(1 − {) ≤
Les lois < et −ln(1 − {) suivent la même loi exponentielle de paramètre t.
Exemple 31 :
Pour simuler une loi de Bernoulli de paramètre 2, on utilise la méthode d’inversion :
(< = 1) = ?~(0) < { ≤ ~(1)@ = (1 − 2 < { ≤ 1) = ({ > 1 − 2) p=input(‘entrez la valeur de p :’)
if rand()>1-p then x=1,else x=0,end
Mais comme les événements ({ > 1 − 2) et ({ ≤ 2) ont la même probabilité : p=input(‘entrez la valeur de p :’)
if rand()<=p then x=1,else x=0,end
Exemple 32 :
Pour simuler une loi exponentielle de paramètre t, on utilise la méthode d’inversion :
(< ≤ ) = −1
t ln(1 − {) ≤
lambda=input(‘entrez la valeur de lambda :’) x=-log(1-rand())/lambda
2) Chaînes de Markov
On appelle chaîne de Markov toute suite (<)∈ℕ de variables aléatoires définies sur un même espace probabilisé et à valeurs dans un ensemble E telle que :
Pour tout entier naturel , pour tout (, , … , , , ) ∈ 5 tel que
((< = ) ∩ (<= ) ∩ (< = ) ∩ (< = )) ≠ 0, on a :
(EA)∩(EA)∩(EA)∩(EA)(<5= ) = (EA)(<5 = )
Remarque 15 :
Définition un peu complexe à première vue… Donnons une explication de cette propriété :
En notant le temps présent, cette définition signifie que le futur (représenté par <5) ne dépend que du présent (représenté par <) sans tenir compte du passé (représenté par <, … , <, <).
On dit que la chaîne est dans l’état à l’instant lorsque l’événement (< = ) est réalisé.
L’ensemble est donc l’ensemble des états de la chaîne.
Les probabilités (EA)(<5 = ) notées 2,( ) sont appelées probabilités de transition ou transitionnelles.
La chaîne de Markov est dite homogène lorsque les probabilités de transition ne dépendent pas de mais seulement de et . On les note alors plus simplement 2,.
Si la chaine de Markov est homogène et si est fini (r1; 0s par exemple), on appelle matrice de transition de la chaîne la matrice carrée d’ordre 0 de coefficients 2, :
G =
2 2
2 2 … 2-
… 2-
⋮ ⋮
2- 2- ⋱ ⋮
… 2--
¢
Cette matrice a des coefficients positifs et la somme de chaque ligne est égale à 1, elle est dite stochastique.
Comment étudier une chaîne de Markov ?
On définit, pour tout entier naturel , la matrice { par : { = ?(< = 1) (< = 2) … (< = 0)@
La formule des probabilités totales associée au SCE ?(< = )@∈r;-s donne :
∀ ∈ r1; 0s, (<5 = ) = > (EA)(<5 = )
- A
× (< = ) = > (< = )
- A
× 2
Ce qui se traduit par l’égalité matricielle : {5 = {G : attention à l’ordre des matrices dont les formats doivent être compatibles.
On montre par une récurrence immédiate que, ∀ ∈ ℕ, { = {G
Le reste de l’étude se résume à la recherche de G par des méthodes guidées dans l’énoncé ou en étudiant les valeurs propres.
L’instruction grand(n,’markov’,M,x0) renvoie les premiers états d’une chaîne de Markov de matrice de transition G carrée d’ordre 0 et d’état initial ∈ r1, 0s.
Exemple 33 :
Une puce se déplace par saut sur les points A d’abscisse −1, O d’abscisse 0 et B d’abscisse 1 sur un axe gradué.
• La puce démarre en O ;
• Si elle est en O à l’instant , elle sera de façon équiprobable en A ou en B à l’instant + 1 ;
• Si elle est en A à l’instant , elle y reste à l’instant + 1 ou retourne en O et ceci de façon équiprobable ;
• Si elle est en B à l’instant , elle passe en O à l’instant + 1 avec la probabilité 1.
On souhaite simuler le trajet de la puce sur les 20 premiers sauts.
On reconnaît une chaîne de Markov à trois états : −1, 0 1 La matrice de transition est donnée par : G = ¤1/2 1/2 0
1/2 0 1/2
0 1 0 ¦
Dans Scilab, les états d’une chaîne de Markov sont 1,2 et 3, on retranche 2 pour se ramener aux états
−1, 0 1 :
Après avoir validé les instructions suivantes :
M=[1/2,1/2,0 ;1/2,0,1/2 ;0,1,0];x=grand(20,’markov’,M,2)-2
Scilab affiche : x =
-1. 0. 1. 0. 1. 0. -1. 0. 1. 0. -1. -1. -1. -1. 0. 1.
0. 1. 0. 1.
Soit (<)∈ℕ une chaîne de Markov homogène de matrice de transition M.
Une loi de probabilité définie par une vecteur ligne { vérifiant l’égalité { = {G est appelée distribution stationnaire ou loi stationnaire de la chaîne de Markov.
On remarque que §{ est une vecteur propre de §G associé à la valeur propre 1.
Si l’état initial < suit la loi de probabilité {, alors la chaîne de Markov est stationnaire, elle ne change jamais d’état.
Exemple 34 : On reprend l’exemple précédent et on va mettre en évidence un état stable à l’aide de simulations.
Après avoir validé les instructions suivantes : n=input(‘entrez la valeur de n :’) M=[1/2,1/2,0 ;1/2,0,1/2 ;0,1,0];
x=sum(grand(n,’markov’,M,2)==1)/n y=sum(grand(n,’markov’,M,2)==2)/n z=sum(grand(n,’markov’,M,2)==3)/n
entrez la valeur de n :1000000 n =
1000000.
x =
0.399901 y =
0.400364 z =
0.200631
Il semble que sur le long terme, il y ait 2 chances sur 5 que la puce soit en A ou en O et 1 chance sur 5 qu’elle soit en B.
On a mis en évidence par cette simulation l’état stable (2/5 2/5 1/5) : (2/5 2/5 1/5) ¤1/2 1/2 0
1/2 0 1/2
0 1 0 ¦ = (2/5 2/5 1/5)
3) Méthode de Monte Carlo
La méthode de Monte Carlo permet d’estimer une quantité difficile à calculer directement, en la considérant comme la probabilité d’un événement lié à une variable aléatoire ou comme l’espérance d’une variable aléatoire que l’on sait simuler informatiquement.
Si une variable aléatoire < possède une espérance (<), on peut l’estimer par la moyenne empirique 1 > <8
8A
où (<, <, … , <) est un échantillon de la loi de <.
On sait que la moyenne empirique est un estimateur sans biais et convergent de (<) : c’est la base de la méthode de Monte Carlo dans le cas du calcul d’une somme ou d’une intégrale égale à l’espérance d’une variable aléatoire.
Comparaison d’estimateurs et d’intervalles de confiance :
1) On peut simuler avec grand un échantillon d’une loi et tester, sur cet échantillon, plusieurs estimateurs sans biais d’un paramètre θ lié à la loi considérée : On regarde celui qui se rapproche le plus de la vraie valeur du paramètre.
2) On dispose de deux intervalles de confiance d’un paramètre θ. Pour les comparer : - A niveaux de confiance égaux, on choisit celui qui a la plus petite amplitude
- A amplitude égale, on choisit celui dont le niveau de confiance est le plus élevé.