Programmes convertis en Scilab – Épreuves 2012 – Corrigé
EML 2012 : Exercice 3 :
8. a. On considère une variable aléatoire U suivant la loi uniforme sur l’intervalle ]0;1]. Montrer que la variable aléatoire 𝑍 = 𝑎 −2ln (𝑈)
b. En déduire un programme en Scilab utilisant la fonction rand() simulant la variable X, le réel a strictement positif étant entré par l’utilisateur.
a=input(‘entrer un réel a strictement positif :’) u=rand()
z=a*sqrt(-2*log(u))
Edhec 2012 : Exercice 1 :
3. Écrire un programme en Scilab qui permet de déterminer et d’afficher la plus petite valeur de 𝑛 pour laquelle on a : 1 − 𝑢 < 10
u=0 , n=0
while 1-u>10^-3 do u=(u^2+1)/2, n=n+1 end
disp(n)
Exercice 3 :
5. Simulation informatique :
Compléter le programme suivant pour qu’il simule l’expérience aléatoire décrite dans cet exercice et pour qu’il affiche, dans cet ordre, les valeurs des variables aléatoires 𝑇 , 𝑋 et 𝑌 à l’exécution de l’instruction disp(y,x,t).
t=0,x=0,y=0
p=input(‘entrer un réel p compris entre 0 et 1 :’) n=input(‘entrer un entier naturel n :’)
while x==0 & t<n // on rappelle que & signifie « et » do t=t+1
if rand()>p then y=y+1 else x=1 end
end
disp(y,x,t) Problème :
5. Soit U une variable aléatoire suivant la loi uniforme sur [0; 1[ .
(a) On pose 𝑊 = − 𝑙𝑛(1 − 𝑈) et on admet que W est une variable aléatoire.
Déterminer la fonction de répartition de W et en déduire la loi suivie par la variable aléatoire W.
On démontre aisément que W suit la loi exponentielle de paramètre 𝜆 tout comme la loi de Y de l’exercice.
Or 𝑌 = 𝑋 et donc |X| = √𝑌
(b) En déduire une fonction Scilab dont l'en-tête est function [z]=VAX(lambda) qui simule la loi de |X|.
function [z]=VAX(lambda) u=rand()
y=-1/lambda*log(1-u) z=sqrt(y)
endfunction
(c) Vérifier que la probabilité que X prenne des valeurs positives est égale à la probabilité que X prenne des valeurs négatives.
En déduire une fonction Scilab, utilisant rand() , dont l'en-tête est function [z]=X(lambda) qui simule la loi de X.
Sachant que les événements [𝑋 ≤ 0] et [𝑋 ≥ 0] sont équiprobables : function [z]=X(lambda)
v=VAX(lambda)
if rand()<1/2 then z=v else z=-v end
endfunction