#! /usr/bin/env python3
# -*- coding:utf8 -*-
import matplotlib.pyplot as plt
import numpy as np
from math import *
plt.rcParams['font.sans-serif'] = 'DejaVu Sans'
np.random.seed(5)
ntraces = 5
a = 0. # starting value of X
sigma = 1. # diffusion
D = sigma**2 / 2 # diffusion constant
t = np.linspace(0, 3, 1001)
dt = t[1:] - t[:-1]
fig = plt.figure(figsize=(520 / 90.0, 340 / 90.0), dpi=72)
sigma0 = sigma * np.sqrt(t)
plt.fill_between(t, a - sigma0, a + sigma0, color='#dddddd')
for itrace in range(ntraces):
randnorm = np.random.normal(0, 1, len(t))
X = np.empty_like(t)
X[0] = a
for i in range(len(t) - 1):
X[i+1] = X[i] + sigma * sqrt(dt[i]) * randnorm[i+1]
plt.plot(t, X, lw=1)
plt.grid(True)
plt.xlim(t[0], t[-1])
plt.ylim(-4, 4)
plt.xlabel('t')
plt.ylabel('X')
plt.tight_layout()
plt.savefig('Wiener-process-5traces.svg')