Skip to content

Quickstart

Example 1: RK1 time-invariant solver

Solve

\[ dX(t)=1\,dt + 1\cdot dW(t),\quad X(0)=0, \]

with \(N=10\), \(T_0=0\), \(T_N=1\), \(Q=1\), seed \(=123456789\).

import numpy as np
import sdepack

def drift(x):
    return 1.0

def diffusion(x):
    return 1.0

x = np.zeros(11, dtype=np.float64)
sdepack.rk1_ti_solve(drift, diffusion, x, 0.0, 1.0, 0.0, 10, 1.0, 123456789)
print(x)

Expected trajectory:

[0.0, 0.630959, 0.581457, 0.502453, 0.529365,
 1.01293, 1.28212, 1.78354, 2.21543, 1.78857, 1.29873]

Example 2: RK4 time-variant solver

Solve

\[ dX(t)=\left(-0.5X + 0.1\cos(2t)\right)dt + 0.05\left(1+0.25\sin t\right)dW(t),\quad X(0)=1. \]

with \(N=10\), \(T_0=0\), \(T_N=2\), seed \(=99999\).

import numpy as np
import sdepack

def drift(x, t):
    return -0.5 * x + 0.1 * np.cos(2.0 * t)

def diffusion(x, t):
    return 1.0 + 0.25 * np.sin(t)

x = np.zeros(11, dtype=np.float64)
sdepack.rk4_tv_solve(drift, diffusion, x, 0.0, 2.0, 1.0, 10, 0.05, 99999)
print(x)

Expected trajectory:

[1.0, 0.84965124, 0.58111185, 0.54310931, 0.58651215,
 0.40478869, 0.15210296, 0.15575955, 0.17411699, 0.17575902, 0.29481523]