Anda di halaman 1dari 5

Ejercicios de Simulaci n o

Investigaci n Operativa o Ingeniera Inform tica, UC3M a Curso 07/08


1. Escribe un c digo (por ejemplo en Matlab, Fortran, C, . . . ) que genere m secuencias de n n meros o u Bernoulli con probabilidad p. Usa este c digo para escribir otro que genere una secuencia de m o n meros binomiales de par metros n y p. u a Soluci n. C digo Matlab para la distribuci n Bernoulli: o o o function X = B(p,n,k) % X = B(p,n,k) % genera una muestra de tama\{n}o nxk % de una Bernoulli de par\{a}metro p if nargin==2, k = 1; end

% solamente una muestra

X = rand(n,k); I = find(X <= p); X = zeros(n,k); X(I) = ones(size(I)); Por denici n, una variable aleatoria X sigue una distribuci n Binomial de par metros n y p, X o o a B(n, p), si X es suma de n variables Bernoulli de par metro p e independientes. a Por tanto la funci n en Matlab que genera n meros B(n, p) es o u function X = Bin(n,p,m) % X = Bin(n,p,m) % genera una muestra de tama\{n}o m de una Binomial % de parametros n y p Y = B(p,n,m); X = (sum(Y)); 1

2. Escribe un c digo que genere una secuencia de n n meros Poisson con par metro . Una distribuci n o u a o de Poisson de par metro se dene como X P() si a P (X = k) = e Soluci n. C digo Matlab: o o function X = poisson(lambda,n) % Generacion de una muestra de tama\{n}o n de % una distribucion de Poisson de media lambda c = exp( - lambda); X = []; for i = 1:n, p = 1; N = 0; while (p >= c), unif = rand(1); p = p * unif; N = N + 1; end; X = [X ; N-1]; end; Otro c digo utilizando comandos vectoriales de Matlab que aceleran la generaci n: o o function X = poisson(lambda,n) % Generacion de una muestra de tama\{n}o n de % una distribucion de Poisson de media lambda X = rand(n,1); i = 0; p = exp(-lambda); F = p; bool = (zeros(n,1)); while ((all(bool))), if (any((X<F) & (X>=(F - p)))) m = find((X<F) & (X>=(F - p))); X(m) = ones(length(m),1)*i; bool(m) = ones(length(m),1); end 2 k k! para k = 0, 1, . . .

p = lambda*p/(i + 1); F = F + p; i = i + 1; end 3. Escribe un c digo que genere una secuencia de n n meros con par metros y . Una variable X o u a se dene como de par metros y , X G(, ), si a f (x) = Soluci n. C digo Matlab: o o function X = gamma(a,b,n) % X = gamma(a,b,n) % genera una muestra de tama\{n}o n de una gamma % de parametros a y b, con a entero positivo if a==1 X = expon(1/b,n,1);return; end U = rand(n,a); X = -(1/b)*log(prod(U)); X = X; 4. Escribe un c digo que genere una secuencia de n n meros Weibull con par metros y . La variable o u a X se dene Weibull de par metros (, ), X W(, ), si a f (x) = x
x (1) exp(( ) )

1 x1 ex ( 1)!

para x > 0.

para x > 0.

La generaci n de una muestra Weibull se realiza a trav s de una distribuci n de Valores Extremos. o e o Esta distribuci n tiene la propiedad de que es invertible analticamente. o Soluci n. C digo Matlab: o o function X = weibull(alpha,beta,n) % X = weibull(alpha,beta,n) % genera una muestra de tama\{n}o n de una distribucion Weibull % de parametros (alpha,beta). La funcion de densidad es: % f(t;a,b) = (b/a)*(t/a)(b-1)*exp(-(t/a)b) % Generacion de los numeros aleatorios X = rand(n,1); 3

% Generacion de una Extreme Value Standard X = log(-log(X)); % Generacion de una Extreme Value de parametros (u,b) b = 1/beta; u = log(alpha); X = b*X + u; % Generacion de la Weibull X = exp(X); 5. Comprobar con simulaciones el Teorema Central del Lmite: Si X1 , X2 , . . . , Xn es una muestra aleatoria simple de una distribuci n N (, 2 ), entonces o 2 la distribuci n de X n es N (, ). o n Soluci n. C digo Matlab: o o sigma = 0.5; X = randn(100)*sigma; medias = mean(X); hist(medias)

% Normal(0,sigma2)

En este programa se generan 100 medias de una N (0, 0.52 ). A continuaci n se muestra el histograma de la muestra. Se puede comprobar como el histograma o tiene la forma de campana de una densidad normal.
25

20

15

10

0 0.2

0.15

0.1

0.05

0.05

0.1

0.15

Figura 1: TCL 6. Se sabe que el tiempo medio entre fallos en un disco duro de un ordenador es de 3000 horas y que los fallos se distribuyen exponencialmente. Escribe un c digo que genere estos sucesos de fallo hasta o que ocurran 25 de ellos. Escribe el n mero de horas que transcurren entre los sucesivos fallos del u experimento. Soluci n. o 4

7. Escribe un c digo que genere n meros aleatorios con distribuci n (2, 2) (f (x) = 6x(1 x), 0 o u o x 1) mediante el m todo de aceptaci n-rechazo simple. e o Soluci n. c = mx{f (x) = 6x(1 x) : 0 x 1} = 1.5. o a function b = beta22(n) c = 1.5; b = []; for i = 1:n, x = rand; while (c*rand > 6*x*(1-x)), x = rand; end; b = [b;x]; end; 8. Escribe un c digo que genere n meros aleatorios con distribuci n N (, 2 ) mediante el m todo de o u o e aceptaci n-rechazo generalizado a partir de n meros exponenciales. o u Soluci n. Nos basamos en la normal est ndar. Hay que notar que el soporte de la normal no est ino a a cluido dentro del soporte de la exponencial, por tanto, es conveniente tomar el valor absoluto de la distribuci n. Es decir, se puede usar la distribuci n exponencial para generar el valor absoluto de la o o normal y una distribuci n Bernoulli para determinar el signo. o Para el valor absoluto de la normal est ndar y para la exponencial de par metro 1, se tiene a = a a f (x) 2 supx0 { g(x) } = 2 .

Anda mungkin juga menyukai