Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Simulacion Montecarlo Con Matlab
Simulacion Montecarlo Con Matlab
SIMULACION MONTECARLO CON MATLAB Considere una casa de juegos (casino) en la cual un jugador apuesta sucesivamente y la casa gana el 51% de veces. La pregunta es Cuntos juegos deben darse antes de que la casa este realmente segura de ir adelante? Este escenario es comn entre los matemticos y se utiliza la estadstica para los clculos. Con MATLAB puede realizarse sin mucha complejidad. Primero utilizamos una expresin que calcule el conjunto de renta o ganancia de la casa para un juego, basados en un numero aleatorio entre 0 y 1. MATLAB posee la funcin rand. Si el numero aleatorio es menor o igual que 0.51, la casa gana una unidad, de otro modo si el numero excede 0.51 la casa pierde una unidad. En un juego real cada apuesta puede ser $1, 10, 100, 1000. Por ello es importante que la casa conozca cual es la lnea limite que no debe pasar para no entrar en bancarrota. La siguiente expresin representa lo dicho: ganancia = sign(0.51 rand) Donde ganancia ser 1 si la salida de rand es menor que 0.51 y 1 si la salida de rand es mayor que 0.51 y ser 0 si la salida rand es exactamente igual a 0.51. Para simular un conjunto de jugadas, por ejemplo 10 juegos, debemos crear un arreglo de 10 nmeros aleatorios. ganancia = sign(0.51 rand(1,10)) La casa en un determinado juego gana 6 veces y pierde 4, en otro gana 7 y pierde 3, y en un tercero gana 5 y pierde 5. Veamos ahora para un numero de juegos mayor, 100 por ejemplo. Matlab psee la funcin sum para acumular las ganancias individuales de las apuestas, tal como sigue. utlidades = sum(sign(0.51-rand(1,100)) utlidades = 14 y en otro instante utilidades=sum(sign(0.51-rand(1,100))) utilidades =
6 en otro utilidades=sum(sign(0.51-rand(1,100))) utilidades = 2 y en otro utilidades=sum(sign(0.51-rand(1,100))) utilidades = -4 utilidades=sum(sign(0.51-rand(1,100))) utilidades = 0 Se observa que en determinados momentos la casa gana y en otros la casa pierde. Lo optimo para la casa es ganar en 51 juegos en promedio para tener ganancias. Realizamos otra simulacin utilidades=sum(sign(0.51-rand(100,10))) utilidades = Columns 1 through 8 -10 12 0 12 10 -14 6 4
Columns 9 through 10 -8 14
Veamos hora una funcin que calcule la canasta de utilidades para k diferentes pruebas de n juegos cada una.
utilidades=inline('sum(sign(0.51-rand(n,k)))','n','k') utilidades = Inline function: utilidades(n,k) = sum(sign(0.51-rand(n,k))) Para n = 100 y k = 100 se puede generar un histograma de diferencias entre 40 y 40 en incrementos de 2. >> hist(utilidades(100,100),-40:2:40); axis tight
Podemos realizar cambios en los argumentos para la simulacin en las utilidades (valor en negrita) hist(utilidades(100,1000),-40:2:40); axis tight
Para generar un vector de utilidades >> vector=[]; >> for i = 1:10 vector=[vector,utilidades(1000,100)]; end >> hist(vector,-100:10:150); axis tight >> utilidades(1000,10) ans = Columns 1 through 9 0 30 8 46 -4 14 -8 -8 24
Column 10 14