Puede descargar el archivo de Excel borracho.xlsm
Contenido
- Concepto
- Random Walk en una dimensión
- Random Walk en dos dimensiones
- Random Walk en tres dimensiones
- Random walk 2D en Python
Concepto
Un Random Walk es un proceso estocástico que describe un camino consistente en realizar una serie de pasos aleatorios.
Esa trayectoria aleatoria se puede dar en una dimensión, en dos dimensiones, en tres o más dimensiones.
Random Walk en una dimensión
Hoja1
En el archivo descargable indicado a inicio de este post encontramos un paseo aleatorio unidimensional. Si se interpreta como saltos dentro de una recta, se trataría de ver saltos a la derecha o izquierda respecto de la posición que se tiene en cada momento. Esto es, dada una posición inicial (1.000) se trataría de ir hacia la derecha o hacia la izquierda un paso de longitud el 3% de esa posición inicial.
Otra forma de interpretarlo es verlo como una serie temporal, a lo largo de un eje de tiempos.
Hoja2
Ahora vamos a crear un conjunto de 20 series de que contienen 2.000 saltos aleatorios cada una de ellas. En el gráfico siguiente hemos tomado escala logarítmica para que se pueda ver mejor el rango de variación de las curvas.
Random Walk en dos dimensiones
Random Walk en tres dimensiones
El concepto de random walk comenzó en 1827 cuando el botánico Robert Brown estudió el movimiento del polen. También es importante la aportación de Albert Einstein de 1905 sobre el movimiento browniano de pequeñas partículas.
Matemáticamente se podría estudiar el movimiento aleatorio en más de tres dimensiones. Aunque perdemos la representación gráfica, esto no es problema ya que, podemos utilizar matrices o en programación arrays.
Random walk 2D en Python
# El caminar del borracho
# Un paseo aleatorio en dos dimensiones
# Se parte del punto (0,0) del plano cartesiano
# Cada paso que se da es de longitud r
# El ángulo con el que se da cada paso es aleatorio
import random
import math
import matplotlib.pyplot as plt
random.seed()
n=100 # número de pasos
r=1 # longitud del paso
x=y=0 # punto de partida (x,y)=(0,0)
listax=[x]
listay=[y]
for i in range(n):
angulo=random.random()*math.pi*2 # en radianes
x+=r*math.cos(angulo)
y+=r*math.sin(angulo)
listax.append(x)
listay.append(y)
plt.plot(listax,listay)
plt.show()
import random
import math
import matplotlib.pyplot as plt
random.seed()
n=100000 # número de pasos
r=1 # longitud del paso
x1=y1=x2=y2=0 # punto de partida (x,y)=(0,0)
lista1x=[x1]
lista1y=[y1]
lista2x=[x2]
lista2y=[y2]
for i in range(n):
angulo1=random.random()*math.pi*2 # en radianes
angulo2=random.random()*math.pi*2 # en radianes
x1+=r*math.cos(angulo1)
y1+=r*math.sin(angulo1)
x2+=r*math.cos(angulo2)
y2+=r*math.sin(angulo2)
lista1x.append(x1)
lista1y.append(y1)
lista2x.append(x2)
lista2y.append(y2)
plt.plot(lista1x,lista1y)
plt.plot(lista2x,lista2y,'--r')
plt.show()
No hay comentarios:
Publicar un comentario