Simulacion Montecarlo Con Matlab

July 20, 2018 | Author: Fernando Alvarez | Category: Randomness, Monte Carlo Method, Applied Mathematics, Mathematics, Physics & Mathematics
Share Embed Donate


Short Description

Download Simulacion Montecarlo Con Matlab...

Description

1

SIMULACION MONTECARLO CON MATLAB

Considere Considere una casa de juegos (casino) en la cual un jugador apuesta sucesivamente sucesivamente y la casa gana el 51% de de veces. La pregunta pregunta es ¿Cuántos juegos juegos deben darse darse antes de que la casa este realmente segura segura de ir adelante? adelante? Este escenario escenario es común entre los los matem matemáti áticos cos y se utiliza utiliza la estad estadíst ística ica para los cálcul cálculos os.. Con Con MATL MATLAB AB pu puede ede realizarse sin mucha complejidad. Primero utilizamos una expresión que calcule el conjunto de renta o ganancia de la casa para un juego, basados basados en un un numero aleatorio aleatorio entre entre 0 y 1. MATLAB posee posee la función función rand. rand. Si el numero numero aleatorio aleatorio es menor menor o igual igual que 0.51, 0.51, la casa gana una unidad unidad,, de otro modo modo si el numero excede excede 0.51 la casa pierde pierde una unidad. unidad. En un  juego real cada apuesta puede ser $1, 10, 100, 1000. Por ello es importante importante que la casa conozca cual es la línea limite que no debe pasar para no entrar en bancarrota. La siguiente expresión 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 exactamente igual a 0.51. Para simular un conjunto de jugadas, por ejemplo 10 juegos, debemos crear un arreglo de 10 números 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 Veamos ahora para un numero numero de juegos juegos mayor, 100 por por ejemplo. ejemplo. Matlab Matlab psee la función sum para acumular las ganancias individuales de las apuestas, tal como sigue. utlidades = sum(sign(0.51-rand(1,100)) utlidades utlidades = 14 y en otro instante utilidades=sum(sign(0.51-rand(1,100))) utilidades utilidades =

2

6 en otro utilidades=sum(sign(0.51-rand(1,100))) utilidades utilidades = 2 y en otro utilidades=sum(sign(0.51-rand(1,100))) utilidades utilidades = -4 utilidades=sum(sign(0.51-rand(1,100))) utilidades utilidades = 0 Se observa que en determinados momentos la casa gana gana y en otros la casa pierde. pierde. Lo optimo para la casa es ganar en 51 juegos en promedio para tener ganancias. Realizamos otra simulación simulación utilidades=sum(sign(0.51-rand(100,10))) utilidades utilidades = Columns 1 through 8 -10

12

0

12

10 -14

6

4

Columns 9 through 10 -8

14

Veamos hora una función que calcule la canasta de utilidades para  pruebas de de n juegos cada cada una.



diferentes

3

utilidades=inline('sum(sign(0.51-rand(n,k)))','n','k') utilidades 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 simulación en las utilidades (valor en negrita) hist(utilidades(100, 1000),-40:2:40); axis tight

4

 Nuevamente,  Nuevamente, otro cambio >> hist(utilidades(100,10000),-40:2:40); axis tight

5

>> hist(utilidades(1000,10000),-100:10:150); axis tight

>> hist(utilidades(1000,100),-100:10:150); axis tight

6

>> hist(utilidades(1000,1000),-100:10:150); axis tight

Para generar un vector de utilidades 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

Column 10 14

8

46

-4

14

-8

-8

24

7

REFERENCIAS: A GUIDE TO MATLAB, MATH WORKS INC. 2003

View more...

Comments

Copyright ©2017 KUPDF Inc.
SUPPORT KUPDF