Sunteți pe pagina 1din 3

Metoda invers a pentru simularea unei variabile aleatoare

Studiul comport arii n timp a unor sisteme n evolu tia c arora intervin si elemente aleatoare se poate face cu ajutorul calculatoarelor. Pentru aceasta, sistemului real i se asociaz a un model de simulare care este folosit apoi pentru a produce, prin intermediul calculatorului, succesiunea cronologic a de st ari prin care va trece sistemul, considerndu-se dat a starea sa ini tial a. Modelele mai complicate nu au solu tii analitice. De exemplu, sistemele de servire cu un num ar mare de sta tii cu o topologie complex a, cu reparti tiile timpilor de sosire si/sau de servire de un tip complicat (gamma, Weibull, 2 ; amestecuri de reparti tii) sau sisteme cu priorit a ti. Pentru astfel de situa tii se recomand a simularea digital a. n informatic a, termenul a fost introdus de John von Neumann. Simularea digital a se poate folosi cu succes la proiectarea sistemelor de a steptare, f acnd experien te pe model cu diferi ti parametri de intrare. La construirea unui model de simulare, partea cea mai dicil a este procedeul de a mi scasistemul n timp astfel nct s a nu se ajung a la situa tia n care diferitele elemente ale sistemului s a parcurg a intervale diferite de timp. De aceea este necesar a introducerea n modelul de simulare a unei variabile numit a ceasul simul arii care s a m asoare scurgerea timpului real n care se simuleaz a sistemul, cu scopul de a men tine ordinea corect a n timp a evenimentelor. Aceast a variabil a ia la nceput valoarea zero, apoi este incrementat a la ecare pas al procesului de simulare. n mediul Matlab, n Statistics Toolbox exist a generatori pentru 20 de tipuri de variabile aleatoare: exponen tiale negative (exprnd), Poisson (poissrnd) ,de tip gamma (gamrnd) s i beta (betarnd), normale (normrnd), binomial a (binornd) , 2 (chi2rnd), etc. To ti ace sti generatori folosesc generatorul de numere pseudoaleatoare (de distribu tie uniform a) random. Codul acestor func tii Matlab se poate tip ari cu comanda type_ function_ name. Codul se poate redenumi si modica pentru o aplica tie proprie. Metoda invers a pentru simularea unei variabile aleatoare continue Leg atura dintre distribu tia uniform a si alte distribu tii continui este dat a de teorema lui Hincin : Dac a F este func tia de reparti tie a unei variabile aleatoare continue X atunci F ( X) este uniform a pe [0,1], adic a F ( X)=U sau F 1 ( U)=X . Consecin t a Dac a ob tinem valorile de selec tie U 1 , U 2 ; :::;U n ale lui U, apelnd de n ori func tia random , atunci putem ob tine valorile de selec tie X 1; X 2 ; :::;X n ale lui X cu formula 1

=F

( U i ), i=1,...,n

(metoda invers a pentru generarea unei variabile aleatoare continue). Se poate astfel simula orice variabil a aleatoare X dac a se cunoa ste func tia sa de reparti tie F si se poate calcula u sor si f ar a erori func tia invers a F 1: De exemplu pentru o variabil a aleatoare exponen tial a de parametru se poate folosi formula: X=1

ln U :

Metoda invers a pentru simularea unei variabile aleatoare discrete Fie X o variabil a aleatoare discret a: X : a1 p1 a2 p2 a3 p3 am pm ;
m X

pk = 1:

k=1

Func tia sa de reparti tie este: 8 0; > > > > p1 ; < p 1 + p2 ; F (x ) = > > p > 1 + p2 + ::: + pk ; > : 1;

daca

x<a1 x < a2 a2 x < a3 ak x < ak+1 am x a1

Pentru simularea variabilei aleatoare X ; se genereaz a U uniform a pe [0,1] si se caut a valoarea ai ; astfel nct F (ai ) =U . Dac a C este vectorul cu compoi P nentele C(i): = pj ; algoritmul este urm atorul:
j =1

U : =random i :=1; while X := ai

U > C(i)

i :=i+1;

Exemplu Fie X variabila aleatoare discret a: X : 0 0:9 1 0:05 2 0:02 3 0:01 4 0:01 5 0:01 ;
6 X

pk = 1:

k=1

Secven ta de program de mai jos genereaz a N valori de selec tie ale variabilei aleatoare discrete X : Pentru N mare, frecven ta apari tiei ec arei valori se apropie de probabilitatea cu care variabila X ia acea valoare. N=input( Introduceti numarul de valori de selectie generate ); X=[0 1 2 3 4 5;0.9 0.05 0.02 0.01 0.01 0.01]; 2

P=zeros(6,1); C=zeros(6,1); for i=1:6 for j=1:i C(i)=C(i)+X(2,j); end end for k=1:N U=rand; i=1; while U > C(i) i=i+1; end R=X(1,i); P(R+1)=P(R+1)+1; end P./N

S-ar putea să vă placă și