Home - Rasfoiesc.com
Educatie Sanatate Inginerie Business Familie Hobby Legal
Doar rabdarea si perseverenta in invatare aduce rezultate bune.stiinta, numere naturale, teoreme, multimi, calcule, ecuatii, sisteme




Biologie Chimie Didactica Fizica Geografie Informatica
Istorie Literatura Matematica Psihologie

Matematica


Index » educatie » Matematica
» Metode de generare a variabilelor aleatoare


Metode de generare a variabilelor aleatoare


UNIVERSITATEA TEHNICA DE CONSTRUCTII BUCURESTI

FACULTATEA:HIDROTEHNICA

SPECIALIZAREA:AUTOMATICA SI INFORMATICA APLICATA

MODELARE SI SIMULARE

LUCRAREA NR.2



METODE DE GENERARE A

VARIABILELOR ALEATOARE

METODE DE GENERARE A VARIABILELOR ALEATOARE

I.Metoda inversa

Enunt

Daca X,F inversabila

Algoritm:

Pasul 1: Intializare algoritmul pentru generarea uniforma pe (0,1) si a algoritmului pentru calcu;lul lui F-1

Pasul 2: Genereaza U

Pasul 3: -Calculeaza

-Returneaza X

1.Metoda exponentiala

Enunt

xdaca are f(x)=

F(x)=

x=ln V

Daca UU(0,1) 1-UU(0,1)

Algoritm:

Pasul 1: Intrare λ

Pasul 2: Genereaza UU(0,1)

Pasul 3: x=-

Program:

#include<stdio.h>

#include<string.h>

#include<stdlib.h>

#include<math.h>

#include<time.h>

#include<conio.h>

#include<iostream.h>

void main()

getch();

2.Metoda Gumbel

Enunt

Metoda este folosita in stabilirea extremelor interferand variabile aleatoare ale caror functii de repatitie sunt de forma :

F(x)= pentru maxime x

F(x)=;x>0,v,k>0,pentru maxime

F(x)=

Cu schimbare de variabila y=α(x-u)F(x)=

Pentru (1) F(y)=u ln sau ln

(x-u)=-ln(-lnU)x-u=- variabila aleatoare de tip Gumbel

Pentru (2) Cu schimbarea de variabila y=kln dublu exponentiala (5) x=veFr(v,k) cu y dat de relatia anterioara y=kln

(5)

F(y)= Dublu expinetiala

Algoritm:

Pasul 1: Intrare α,u

Pasul 2: Genereaza uU(0,1)

Pasul 3: x=u-

Program:

#include<stdio.h>

#include<conio.h>

#include<string.h>

#include<stdlib.h>

#include<math.h>

#include<time.h>

#include<iostream.h>

void main()

getch();

II.Metoda compunerii

1.Metoda discreta

Enunt:

F(x)=

0 Gi sunt functii de repartitie

Algoritm:

Pasul 1: - Intrare p1,pk

- Initializarea algoritmilor RND, care genereaza variabilele aleatoare cu repartitia Gi pt i= calculam functia de repartitia

Pasul 2: repeta

j=0;

genereaza UU(0,1)

repeta

j=j+1;

pana cand Fj<U

X:

u

genereaza zGj(z)

x=z

pana cand conditie oprire

Pasul 3: STOP!

Program:

#include<iostream.h>

#include<math.h>

#include<time.h>

#include<conio.h>

#include<stdio.h>

#include<string.h>

#include<stdlib.h>

void main()

while(f[j]<u);

g=p[i];

z=(rand()%100)/99;

if(z=p[j]);

x=z;

} }

getch();

}

2.Metoda continua.Pearson XI

Enunt:

Daca Yg(y),y, iar X unde y este o realizare a lui Y atunci densitarea de reparytitie a lui x este:f(x)=

In termenii de functie de repartitie

Fie y Consideram o variabila X

XλExp(λ)

Amestecul celor 2 legi de repartitie este x Person de tip XI

F(x)=1-

Algoritm:

Pasul 1: Initializarea algoritmilor RND, care genereaza variabilele aleatoare YG(y)

Pasul 2: repeta

genereza YG(y)

genereaza X H(x,y)

X= X

pana cand conditie oprire

Pasul 3: STOP!

Pearson:

Pasul 1: Initializarea algoritmilor RND, intrare μ

Pasul 2: repeta

genereza UU(0,1)

λ=

genereaza UU(0,1)

X=

pana cand conditie oprire

Pasul 3: STOP!

Program:

#include<stdio.h>

#include<string.h>

#include<stdlib.h>

#include<math.h>

#include<time.h>

#include<conio.h>

#include<iostream.h>

void main()

getch();

}

III.Metoda respingerii

Algoritm:

Pasul 1: Initializarea algoritmilor RND, care genereaza variabilele aleatoare Si,verifica proprietatea P si calculeaza functia Ψ

Pasul 2: repeta

repeta

genereza n, variabile aleatore de tip N

pentru i= genereaza Si

pana cand P(S1,S2, . ,Sn)

X=Ψ(S1,S2, . Sn)

pana cand conditie oprire

Pasul 3: STOP!

1.Lema

Enunt:

X si y si P(y) f(y)=0

Presupunem ca α>0 astfel incat sa avem relatia si spunem ca y poate fi generat cu calculatorul atunci daca si indepentent de y densitatea de repartitie a lui Y conditionata de este f(x) adica Y este o realizare a lui X

S=

N=2

P:

(Y,U)=Y

Algoritm:

Pasul 1: Initializarea algoritmilor RND, Y;Intrare α

Pasul 2: repeta

repeta

genereza UU(0,1)

genereza Yh(y)

pana cand

retine X=Y

pana cand conditie oprire

Pasul 3: STOP!

Program:

#include<stdio.h>

#include<conio.h>

#include<string.h>

#include<stdlib.h>

#include<math.h>

#include<time.h>

#include<iostream.h>

void main()

getch();

}

2.Metoda infasuratoarei

Enunt:

YExp(1) λ=1 (exponentiala standard)

h(x)=e-x

h(x)=

Am determinat

x

1

r`

+ -

r

↑ │ ↓

Algoritm:

Pasul 1: Initializarea algoritmilor RND

Pasul 2: repeta

repeta

genereza UU(0,1)

genereza Y=-lnU

genereza UU(0,1)

pana cand

retine X=Y

pana cand conditie oprire

Pasul 3: STOP!

Program:

#include<stdio.h>

#include<string.h>

#include<stdlib.h>

#include<math.h>

#include<time.h>

#include<conio.h>

#include<iostream.h>

void main()

getch();

IV.METODE PARTICULARE

1.Metoda Box-Muller

Enunt:

Daca u1 si u2U(0,1) independente atunci Zi=vi, unde vi=2u1-1

In S=v12+v22<1

Mes v1,v2U(-1,1),

Introducem variabila aleatoare (0,1) (Zi(0,1)) independente i=1,2

Algoritm:

Pasul 1: Initializarea algoritmilor RND,n

Pasul 2: pentru i= executa

genereza U1U(0,1)

genereza U2U(0,1)

S=v12+v22

cat timp S<1

v1=2*U1-1;

v2=2*U2-1;

z1=v1

z2=v2

genereza U1U(0,1)

v1=2*U1-1;

genereza U2U(0,1)

v2=2*U2-1;

S=v12+v22

genereaza z1,z2

Pasul 3: STOP!

Program:

#include<stdio.h>

#include<string.h>

#include<stdlib.h>

#include<math.h>

#include<time.h>

#include<conio.h>

#include<iostream.h>

void main()

}

getch();

2.Metoda

Enunt:

χν2= cu zi(0,1) independente

Densitatea de probabilitate χn2

F(x)=,X>0

Algoritm:

Pasul 1: Initializarea algoritmilor RND,n

Pasul 2: pentru i= executa

genereza U1U(0,1)

genereza U2U(0,1)

S=v12+v22

cat timp S<1

v1=2*U1-1;

v2=2*U2-1;

z1=v1

z2=v2

genereza U1U(0,1)

v1=2*U1-1;

genereza U2U(0,1)

v2=2*U2-1;

S=v12+v22

genereaza variabila aleatoare χ2

Pasul 3: STOP!

Program:

#include<stdio.h>

#include<string.h>

#include<stdlib.h>

#include<math.h>

#include<time.h>

#include<conio.h>

#include<iostream.h>

time_t t;

int i=1,n,niu;

float v1,v2,s,z1,z2,x=0;

void Box_Muller()

z1=v1*sqrt(-2*log(s)/s);

z2=v2*sqrt(-2*log(s)/s);

void main()

if(niu%2!=0)

cout<<x<<' ';

}

getch();

}

3.Metoda Student

Enunt:

Variabila aleatoare Student cu grade de libertate este definite de relatia

tν=,unde z(0,1) si χ2ν sunt independente

Algoritm:

Pasul 1: Initializarea algoritmilor RND,n

Pasul 2: Pentru i= executa

genereza z(0,1)

genereza cu HIP

t

Pasul 3: STOP!

Program:

#include<stdio.h>

#include<string.h>

#include<stdlib.h>

#include<math.h>

#include<time.h>

#include<conio.h>

#include<iostream.h>

time_t t;

int i=1,n,niu;

float v1,v2,s,z1,z2,X=0,T,z;

void Box_Muller()

z1=v1*sqrt(-2*log(s)/s);

z2=v2*sqrt(-2*log(s)/s);

void hi2()

if(niu%2!=0)

}

void main()

getch();

4.Metoda Fisher

Enunt:

unde sunt independente

Algoritm:

Pasul 1: Initializarea algoritmilor RND,Intrare ν1 si ν2, n

Pasul 2: Pentru i= executa

genereza cu HIP

F=

Pasul 3: STOP!

Program:

#include<stdio.h>

#include<string.h>

#include<stdlib.h>

#include<math.h>

#include<time.h>

#include<conio.h>

#include<iostream.h>

time_t t;

int i=1,n,niu1,niu2,l;

float v1,v2,s,z1,z2,X=0,F,z,x1,x2;

void Box_Muller()

z1=v1*sqrt(-2*log(s)/s);

z2=v2*sqrt(-2*log(s)/s);}

void hi2(int n, int niu)

if(niu%2!=0)

void main()

getch();

5.Metoda Geometrica

Enunt:

Metoda inversa:

F(x)=U V=1-U si Vv=qx-1 (x-1)ln q =lnV (x+1)=

0

0

qx+1=1-F(x)│:q

qx=

Algoritm:

Pasul 1: Initializarea algoritmilor RND,Intrare q, n

Pasul 2: Pentru i= executa

Genereza genereza UU(0,1)

Pasul 3: STOP!

Program:

#include<stdio.h>

#include<string.h>

#include<stdlib.h>

#include<math.h>

#include<time.h>

#include<conio.h>

#include<iostream.h>

void main()

getch();

6.Metoda Poisson

Enunt:

Pi=P(X=i)=i=0,1,2,3,.

M[x]=λ; var[x]=λ;

Variabila aleatoare Poisson de parametru λ reprezinta numarul de evenimente rare (intrarile intr-un sistem de asteptare pe unitatea de timp)

Intervalal de timp dintre 2 sosiri consecutive este o variabila de tip exponential de x

Pentru generarea lui x generam intervalele de timp τ=intervalele de timp Exp(λ) asfel incat suma lor sa acopere intervalul de timp egal cu unitatea. Numarul j de astfel de intervale este sectiune a variabilei aleatoare de timp Poisson.

j satisface inegalitatea dubla:

astfel il gasim pe j

uiu(0,1)

Algoritm:

Pasul 1: Initializarea algoritmilor RND,Intrare λ,n

Pasul 2: Pentru i= executa

j=-1;P=1

repeta

genereza UU(0,1)

P=P*u;

j=j+1;

pana cand P<e

retine x=j

Pasul 3: STOP!

Program:

#include<iostream.h>

#include<math.h>

#include<time.h>

#include<conio.h>

#include<stdio.h>

#include<string.h>

#include<stdlib.h>

void main()

}

getch();





Politica de confidentialitate





Copyright © 2024 - Toate drepturile rezervate