El código para generar la gráfica del Movimiento Browniano fue traducido del Matlab al Python a partir del código del capítulo 2 del libro "Stochastic Diferential Equations: Models and Numerics" de Jesper Carlsson, Kyoung-Sook Moon, Anders Szepessy, Raúl Tempone y Georgios Zouraris. Además, como ejercicio, quise implementar mi propia función de suma acumulada "cumsum". El código resultante es el siguiente:
import numpy as np
import math
import matplotlib.pyplot as plt
def cumsum(lista):
lista2 = [lista[0]]
for i in range(1, len(lista)):
lista2.append(lista[i] + lista2[-1])
return lista2
N = 1E6
np.random.seed(1337)
A = np.random.normal(0, 1, N-1)
T = 1
dt = 1/(N-1)
t = [c/(N-1) for c in range(0, int(N-1))]
dW = [c*math.sqrt(dt) for c in A]
W = cumsum(dW)
# Aqui se requiere Numpy y Mathplotlib
plt.plot(W)
plt.ylabel('Brownian Motion')
plt.show()
'''
N = 1E6; % number of timesteps
randn('state',0); % initialize random number generator
T = 1; % final time
dt = T/(N-1); % time step
t = 0:dt:T;
dW = sqrt(dt)*randn(1,N-1); % Wiener increments
W = [0 cumsum(dW)]; % Brownian path
LHS = sum(t(1:N-1).*dW);
RHS = T*W(N) - sum(W(1:N-1))*dt;
'''
Para instalar Numpy y Matplotlib se debe bajar el archivo get-pip.py de este enlace. Y se debe ejecutar en la terminal (para Linux) o en el CMD (para Windows) la siguiente instrucción:
python get-pip.py
Si es Linux es mejor poner:
sudo python get-pip.py
La terminal o el CMD deben apuntar a la carpeta donde está el archivo get-pip.py.
Luego se debe instalar numpy y matplotlib. En Linux se ingresa los comandos:
pip install matplotlib
pip install numpy
Si no recuerdo mal, Matplotlib también instala Numpy.
En Windows, como soy muy floja, me descargué el pip-Win e ingresé los respectivos comandos en la caja de texto donde pide el comando:
Éste es el resultado. Estoy usando Python Tools for Visual Studio:
1 comentario:
Perdona, podría ayudarme implementar una funcion en matlab llamada ROUCHE, cuyo objetivo es analizar el sistema y determinar si se trata de un sistema incompatible, compatible determinado o compatible indeterminado. Lo que es equivalente a decir que, el sistema no tiene solución, tiene una única solución o tiene infinitas soluciones respectivamente.
Una vez que tenemos dicha función, procedemos a programar una nueva función llamada RESUELVE, que aplicaremos para obtener la solución del sistema independientemente del tipo que sea.
Publicar un comentario