viernes, 22 de octubre de 2010

Aproximacion Integrales: Método Montecarlo

Los métodos de montecarlo son un conjunto de métodos de aproximación y optimización basado en la computación de escenarios aleatorios para la obtención de los resultados más óptimos. Este tipo de métodos, que llevan el nombre en honor al casino de Montecarlo, son muy usados en múltiples campos de la ciencia como la física, ingeniería, finanzas, inteligencia artificial, etc.

En este post nos vamos a centrar en el método Montecarlo para la aproximación de funciones integrales definidas en un intervalo dado. El algoritmo se centra, básicamente en la generación de un número N de datos aleatorios* dentro de una superficie (coincidente con el intervalo a calcular la integral).



Una vez generados dichos N datos aleatorios, se dibuja la función a integrar en dicho intervalo. Una vez dibujada dicha gráfica, nos disponemos a calcular cada uno de los puntos aleatorios de por debajo de la función a calcular. Como último paso calculamos el área aproximada que queda por debajo de la curva (definición de integral en un intervalo dado) en relación con el área total de la superficie en donde se han dibujado los N puntos.

Es fácil de imaginarse que a mayor número de elementos generados aleatoriamente sobre la superficie mayor es la aproximación de la integral debido a que el porcentaje de puntos por debajo de la curva se acerca con mayor precisión a la superficie a aproximar.

En las imágenes mostradas a continuación se ha representado la función integral definida entre los puntos 0 y 1 de la función x^2. EL valor real de dicha integran es de 1/3. El valor calculado por el algoritmo para 500.000 puntos aleatorios es de 0.333320.


* La generación de los números aleatorios debe ser realizada uniformemente por toda la superficie S.

NOTA: Si el lector necesita o quiere el código en OCTAVE/MATLAB que escriba un comentario con su mail.

22 comentarios:

  1. Muy interesante! Podrías enviarme el código para matlab? bryanpiedra03@hotmail.com

    ResponderEliminar
  2. Muy interesante! Podrías enviarme el código para matlab?
    Para la funcion exp[exp[x]] en el intervalo [0..1]?
    marlon.robleto@gmail.com

    ResponderEliminar
  3. Bueno el Modelo del método, también hay varios ejemplos prácticos que puedes bajar gratis en la siguiente dirección:
    www.asesoramiento2008.com que utiliza el software Crystal Ball y Risk Simulator es más sencillo.... Luis

    ResponderEliminar
  4. muy bien, explisito! envialo porfavor a slaider56@hotmail.com

    ResponderEliminar
  5. enviamelo por favor en codigo matlab!! gracias

    ResponderEliminar
  6. Este comentario ha sido eliminado por el autor.

    ResponderEliminar
  7. Muy bien hecho! me puedes enviar el código en matlab para la función exp ln[x] elgimnasiomatematico@hotmail.com. gracias.

    ResponderEliminar
  8. por favor enviame el algoritmo en octave/matlab... luismontiel91@gmail.com Gracias!!!

    ResponderEliminar
  9. or favor enviame el algoritmo en matlab... yevimay02@gmail.com Gracias!!!

    ResponderEliminar
  10. porfavor enviame el codigo de octave

    alejandro_s15@hotmail.es

    ResponderEliminar
  11. Porfavor enviame el codigo de octave
    mj.illanesa@gmail.com

    ResponderEliminar
  12. cosandon@gmail.com
    urgente gracias! (octave)

    ResponderEliminar
  13. mikizorzo@hotmail.com

    necesito el codigo en octave! gracias!

    ResponderEliminar
  14. Muy interesante, me podrias enviar el codigo en octave a jsslnv@gmail.com

    ResponderEliminar
  15. necesito el codigo de matlab porfavor !!

    diiego.ignacio@hotmail.com

    ResponderEliminar
  16. necesito el codigo en octave por favor
    crugger_13@hotmail.com
    gracias

    ResponderEliminar
  17. me interesa aproximar integrales dobles en el intervalo [0,infinito). si tienes un código en matlab te agradecería mucho ur_18_@hotmail.com

    ResponderEliminar
  18. me interesa dani-21201@hotmail.com

    ResponderEliminar
  19. Me ayudas con el codigo jordanvicente_21@hotmail.com

    ResponderEliminar
  20. Este comentario ha sido eliminado por el autor.

    ResponderEliminar
  21. codigo en matlba porfavor, te agradeceria mucho enamorado138@gmail.com

    ResponderEliminar