El método Montecarlo es un método numérico que permite
resolver problemas físicos y matemáticos mediante la simulación de variables
aleatorias. Lo vamos a considerar aquí desde un punto de vista didáctico para
resolver un problema del que conocemos tanto su solución analítica como
numérica. El método Montecarlo fue bautizado así por su clara analogía con los
juegos de ruleta de los casinos, el más célebre de los cuales es el de Montecarlo,
casino cuya construcción fue propuesta en 1856 por el príncipe Carlos III de
Mónaco, siendo inaugurado en 1861.
La importancia actual del método Montecarlo se basa en
la existencia de problemas que tienen difícil solución por métodos
exclusivamente analíticos o numéricos, pero que dependen de factores aleatorios
o se pueden asociar a un modelo probabilística artificial (resolución de
integrales de muchas variables, minimización de funciones, etc.). Gracias al
avance en diseño de los ordenadores, cálculos Montecarlo que en otro tiempo
hubieran sido inconcebibles, hoy en día se presentan como asequibles para la
resolución de ciertos problemas. En estos métodos el error ~ 1/√N, donde N es
el número de pruebas y, por tanto, ganar una cifra decimal en la precisión
implica aumentar N en 100 veces. La base es la generación de números aleatorios
de los que nos serviremos para calcular probabilidades. Conseguir un buen
generador de estos números así como un conjunto estadístico adecuado sobre el
que trabajar son las primeras dificultades con la nos vamos a encontrar a la
hora de utilizar este método. En el caso que presentamos hemos hecho uso de la
función random() incluida en la clase Math que la máquina virtual Java trae por
defecto como generador. Las pruebas realizadas, algunas de las cuales se
propondrán como ejercicio, verifican su calidad a la hora de calcular números
aleatorios sin tendencia aparente a la repetición ordenada.
Para resolver la ecuación elíptica de nuestro problema
usando el método de Montecarlo, se ha dividido el recinto bidimensional en una
malla cuadrada de puntos. Todos los situados en su frontera se consideran inicializados
a un valor de temperatura conocido. Suponemos en principio una partícula
situada en uno de los puntos y que tiene la posibilidad de moverse libremente
por todos los que constituyen la malla. La única condición que imponemos es que
en un solo salto, su movimiento se limite a los 4 nodos vecinos, los situados
su izquierda, derecha, arriba o abajo. La probabilidad de elegir una cualquiera
de las 4 direcciones posibles es la misma. Dejando a la partícula viajar por
toda la red sin más restricciones contamos el número de veces que, partiendo de
un mismo punto de coordenadas (i,j) sale por cada uno de los que constituyen la
frontera, momento en el cual suponemos que ha terminado su viaje. Considerando
un número elevado de pruebas podemos calcular la probabilidad de que, partiendo
de un mismo punto, salga por cada uno de los puntos del contorno después de
recorrer una trayectoria aleatoria. Los detalles de camino seguido desde el
inicio hasta el final del viaje no nos importan, tan solo nos vamos a fijar en
el número de veces que sale del recinto por cada uno de los puntos posibles.
La temperatura a la que se encuentra el punto desde
donde ha partido la partícula es la suma, extendida a todos los puntos frontera
(if,jf), de la temperatura de dichos puntos (determinada
por las condiciones de contorno) y por la probabilidad de que estando en (i,j)
salga por (if,jf).
Si tomamos una malla pequeña de 10x10 (salvo consideraciones de
simetría) hay que calcular probabilidades para 102 puntos. Una
precisión razonable requerimos que para cada uno de ellos hay que calcular ~106
trayectorias aleatorias. Con sólo estas estimaciones podemos aventurar que el
tiempo de computación requerido para solucionar la ecuación de Laplace en una
malla pequeña va a ser superior al necesario en cualquiera de los otros métodos
propuestos., k Ejecutando nuestra aplicación veremos como este tiempo crece rápidamente
con el número de puntos de la malla siendo éste el factor limitante de la
eficacia del método. Sin embargo, el método Montecarlo es sencillo y fácil de
programar.