---
# System prepended metadata

title: Stochastic Differential Euations

---

# Stochastic Differential Euations

## February 10/17, 2023

https://hackmd.io/@ubcs3

The paper that Patrick found: https://epubs.siam.org/doi/10.1137/S0036144500378302

@article{doi:10.1137/S0036144500378302,
  author = {Higham., Desmond J.},
  title = {An Algorithmic Introduction to Numerical Simulation of Stochastic Differential Equations},
  journal = {SIAM Review},
  volume = {43},
  year = {2001},
  doi = {10.1137/S0036144500378302},
  URL = {https://doi.org/10.1137/S0036144500378302},
}

```
import numpy as np
import matplotlib.pyplot as plt

T = 1; N = 100; dt = T/N; sigma = np.sqrt(dt); mu = 0; npaths = 5;
dW = sigma*np.random.randn(N,npaths) + mu
X = np.vstack([np.zeros(npaths),dW.cumsum(axis=0)])
t = np.linspace(0,T,N+1)
plt.plot(t,X,'b-',alpha=0.5), plt.grid(True)
plt.show()
```

```
T = 1; N = 1000; dt = T/N; R = 1; dtau = R*dt; 
dW = np.sqrt(dt)*np.random.randn(N,1)
W = np.vstack([np.zeros(1),dW.cumsum(axis=0)])
t = np.linspace(0,T,N+1)
X = np.zeros(N+1)
a = 1; b = 2;
X[0] = 1
for j in range(1,N+1):
    X[j] = X[j-1] + a*X[j-1]*dtau + b*X[j-1]*dW[j-1]
plt.plot(X)
plt.show()
```

```
def sdeEM(f,g,X0=1,T=1,R=10,L=100,nsamples=20):
    N = R*L; dt = T/N; Dt = R*dt;
    dW = np.sqrt(dt)*np.random.randn(N,nsamples)
    W = np.vstack([np.zeros(nsamples),dW.cumsum(axis=0)])
    X = np.zeros((L+1,nsamples))
    X[0,:] = X0*np.ones(nsamples)
    for j in range(1,L+1):
        X[j,:] = X[j-1,:] + f(X[j-1,:])*Dt + g(X[j-1,:])*(W[j*R,:] - W[(j-1)*R,:])
    t = np.linspace(0,T,L+1)
    return (t,X,W)
```

```
alpha = 2; beta = 0.2; 
f = lambda x: alpha - x
g = lambda x: beta*np.sqrt(np.abs(x))
t,X,W = sdeEM(f,g,T=5)
plt.plot(t,X,'b',alpha=0.2)
plt.plot(t,X.mean(axis=1),'r')
plt.show()
```