Академический Документы
Профессиональный Документы
Культура Документы
Le on, C. D. Barreno, L. M. Sanchez, A. J. Chicaiza, J.C. Ingenier a en Electr onica Automatizaci on y Control Procesos Estoc asticos 11 de noviembre de 2013
Indice
1. Generaci on de una variable aleatoria de Poisson mediante algoritmos realizados en MATLAB 3 1.1. Mediante el m etodo de la tranformada inversa y en base a una distribucion exponencial . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 1.2. Mediante el m etodo de la tranformada inversa convencional . . . . . . . . . 4 2. Generaci on de variables aleatorias binomiales mediante algoritmos realizados en MATLAB 5 2.1. Mediante el m etodo de la tranformada inversa . . . . . . . . . . . . . . . . 5 2.2. Mediante el m etodo de composici on . . . . . . . . . . . . . . . . . . . . . . 7 3. Generaci on de una variable aleatoria Weibull mediante algoritmos realizados en MATLAB 9 3.1. Mediante el m etodo de inversi on de la funci on de distribuci on . . . . . . . 9
1.
1.1.
En un proceso de Poisson homog eneo de par ametro los tiempos entre sucesos consecutivos son Exp(), entonces el n umero de sucesos por unidad de tiempo sigue una distribuci on de Poisson de par ametro . En consecuencia, para generar una variable P (), podemos proceder del siguiente modo: se generan valores Tj Exp() tales que x+1 x a a una variable P (). j =1 Tj 1 < j =1 Tj . Ese valor x corresponder Como los valores Tj son exponenciales de par ametro , entonces se tiene que Tj = 1 ln uj , con uj U (0, 1), por lo que:
x x+1
Tj 1 <
j =1 j =1 x+1 x
1 ln uj 1 < j =1
x
1 ln uj j =1
x+1
ln
j =1 x
uj > ln
j =1 x+1
uj
uj e
j =1
>
j =1
uj
En resumen, el algoritmo es el siguiente: 1. Sean k=1, x=1. 2. Se genera ui U (0, 1) y se hace k = kui . 3. Si k e , entonces x 1 es el valor buscado. En caso contrario se hace x = x + 1 y se va al paso 2. C odigo en MATLAB %%Programa que me permite generar una variable aleatoria de poisson %%mediante el metodo de la tranformada inversa. U=1; lamda=3; for i=0:10000 U1=unifrnd(0,1); U=U*U1; if U < exp(-lamda) X=i break end end 3
1.2.
Sea X una variable aleatoria discreta que sigue una ley de Poisson con parametro con probabilidad: P ( X = xj ) = p j j = 0, 1, 2, 3 Para generar una variable aleatoria de Poisson, primero se debe generar un numero aleatoria con distribucion uniforme tal que U (0, 1). Despues el n umero se genera de acuerdo a la siguiente funci on: x0 si U < p0 x1 si p0 < U < p0 + p1 : X= : xj si p0 + ... + pj U < p0 + ... + pj 1 + pj En resumen el algoritmo es: Generar un n umero aleatorio U Si U < p0 hacer X = x0 y terminar Si U < p0 + p1 hacer X = x1 y terminar Si U < p0 + p1 + p2 hacer X = x2 y terminar 4
C odigo en MATLAB %%Programa que me permite generar una variable aleatoria de poisson %%mediante el metodo de la tranformada inversa. U=unifrnd(0,1); p0=0; lamda=2; for i=0:10000 p1=exp(-lamda)*lamda^i/factorial(i); p0=p1+p0; U p0 if U < p0 X=i break end end Ejecuci on del programa
2.
2.1.
Sunponga que queremos generar el valor X, una variable aleatoria binomial (n,p); es decir X tal que: n! P {X = i } = pi (1 p)ni i!(n i)! 5
i = 0, 1, 2, 3, ..., n Para esto, nos valemos del m etodo de la tranformaci on inversa y de la identidad recursiva P {X = i + 1} = n1 p P {X = i} i+1 1p
Si i denota el valor en cuestion, pr = P {X = i} la probabilidad de que X sea igual a i, y F=F(i) probabilidad de que X sea menor o igual a i, el algoritmo se puede expresar de la manera siguiente: 1. Generar un n umero aleatorio U 2. c = p/(1 p), i = 0, P r = (1 p)n F = P r 3. Si U < F , hacer X = i y terminar 4. P r = [c(n i)/(i + 1)pr], F = F + P r, i=i+1 5. Ir al paso 3 C odigo en MATLAB %Programa que me permite generar una variable aleatoria BINOMIAL %mediante el metodo de la tranformada inversa. U=unifrnd(0,1); p0=0; n=2; p=0.5; for i=0:n p1=factorial(n)/(factorial(i)*factorial(n-i))*p^(i)*(1-p)^(n-i); p0=p1+p0; U p0 if U < p0 X=i break end end Ejecuci on de c odigo 6
2.2.
Se tienen m etodos ecientes para generar valores de v.a. X1 y X2 con funciones de probabilidad de masa X1 : {pj j = 0, 1, 2...} X2 : {qj j = 0, 1, 2...} El m etodo de composici on permite generar una v.a. X con funci on de probabilidad de masa P (X = j ) = pj + (1 )qj j = 0, 1, 2... 0 < < 1 X= X1 con probabilidad X2 con probabilidad 1
En resumen el algoritmo es el siguiente: Generar U U (0, 1) if U < then X X1 else X X2 end C odigo en MATLAB n=10; p=0.5; %pi = 0.9*A+0.07*B+0.027*C+0.003*D; ecuacion generada no se la usa en el codigo for i=0:n U=unifrnd(0,1); p1=factorial(n)/(factorial(i)*factorial(n-i))*p^(i)*(1-p)^(n-i); a=floor(p1*10) / 10.0; 7
while a==0 %validaci on division para cero i=i+1; p1=factorial(n)/(factorial(i)*factorial(n-i))*p^(i)*(1-p)^(n-i); a=floor(p1*10) / 10.0; end if U < 0.9 V=unifrnd(0,1); X=0.9/a*V; break else if U < 0.07 V=unifrnd(0,1); X=0.07/a*V; break else if U < 0.027 V=unifrnd(0,1); X=0.027/a*V; break else if U < 0.003 V=unifrnd(0,1); X=0.003/a*V; break end end end end end X Ejecuci on del c odigo
3.
3.1.
La generaci on de valores de una variable continua de Weibull mediante este m etodo se basa en el siguiente resultado. Sea X una v.a. continua con funci on de distribucion FX . Si U U (0, 1), entonces la 1 v.a. Y = FX (U ) tiene como funci on de distribucion FX . El algoritmo de generacion seria el siguiente: 1. Generar un valor u de una distribucion U (0, 1)
1 2. Obtener x como x = FX (u)
C odigo en MATLAB
%programa que me permite generar un numero aleatorio sigueindo una %distribucion de weibull a=3; b=9; %el valor generado es real si el valor de beta es impar caso contraro es compl U=unifrnd(0,1); while U==0 U=unifrnd(0,1); %validacion de logaritmo natural end U %X=-a*(log(1-U))^(1/b); si 1-U tiene distribucion uniforme U tambien tienes %distribucion uniforme aux=nthroot(log(U),b); X=-a*aux Ejecuci on del c odigo