SDE Problems

# SDE Problems

## Mathematical Specification of a SDE Problem

To define an SDE Problem, you simply need to give the forcing function $f$, the noise function g, and the initial condition $u₀$ which define an SDE:

$du = f(u,p,t)dt + Σgᵢ(u,p,t)dWⁱ$

f and g should be specified as f(u,p,t) and g(u,p,t) respectively, and u₀ should be an AbstractArray whose geometry matches the desired geometry of u. Note that we are not limited to numbers or vectors for u₀; one is allowed to provide u₀ as arbitrary matrices / higher dimension tensors as well. A vector of gs can also be defined to determine an SDE of higher Ito dimension.

## Problem Type

Wraps the data which defines an SDE problem

$u = f(u,p,t)dt + Σgᵢ(u,p,t)dWⁱ$

with initial condition $u0$.

### Constructors

SDEProblem{isinplace}(f,g,u0,tspan,noise=WHITE_NOISE,noise_rate_prototype=nothing) : Defines the SDE with the specified functions. The default noise is WHITE_NOISE. isinplace optionally sets whether the function is inplace or not. This is determined automatically, but not inferred.

### Fields

• f: The drift function in the SDE.

• g: The noise function in the SDE.

• u0: The initial condition.

• tspan: The timespan for the problem.

• noise: The noise process applied to the noise upon generation. Defaults to Gaussian white noise. For information on defining different noise processes, see the noise process documentation page

• noise_rate_prototype: A prototype type instance for the noise rates, that is the output g. It can be any type which overloads A_mul_B! with itself being the middle argument. Commonly, this is a matrix or sparse matrix. If this is not given, it defaults to nothing, which means the problem should be interpreted as having diagonal noise.

• callback: A callback to be applied to every solver which uses the problem. Defaults to nothing.

• mass_matrix: The mass-matrix. Defaults to I, the UniformScaling identity matrix.

## Example Problems

Examples problems can be found in DiffEqProblemLibrary.jl.

To use a sample problem, such as prob_sde_linear, you can do something like:

# Pkg.add("DiffEqProblemLibrary")
using DiffEqProblemLibrary
prob = prob_sde_linear
sol = solve(prob)
$du_t = βudt + αudW_t$

where β=1.01, α=0.87, and initial condtion u0=1/2, with solution

$u(u0,p,t,W_t)=u0\exp((α-\frac{β^2}{2})t+βW_t)$
source

8 linear SDEs (as a 4x2 matrix):

$du_t = βudt + αudW_t$

where β=1.01, α=0.87, and initial condtion u0=1/2 with solution

$u(u0,p,t,W_t)=u0\exp((α-\frac{β^2}{2})t+βW_t)$
source
$du_t = -\frac{1}{100}sin(u)cos^3(u)dt + \frac{1}{10}cos^{2}(u_t) dW_t$

and initial condition u0=1.0 with solution

$u(u0,p,t,W_t)=\arctan(\frac{W_t}{10} + \tan(u0))$
source

\begin{align} dx &= σ*(y-x)dt + αdW_t \\ dy &= (x*(ρ-z) - y)dt + αdW_t \\ dz &= (x*y - β*z)dt + αdW_t \\ \end{align}

with $σ=10$, $ρ=28$, $β=8/3$, $α=3.0$ and inital condition $u0=[1;1;1]$.

source
$du_t = \frac{1}{4}u(1-u^2)dt + \frac{1}{2}(1-u^2)dW_t$

and initial condtion u0=1/2, with solution

$u(u0,p,t,W_t)=\frac{(1+u0)\exp(W_t)+u0-1}{(1+u0)\exp(W_t)+1-u0}$
source

$u_t = (\frac{β}{\sqrt{1+t}}-\frac{1}{2(1+t)}u_t)dt + \frac{αβ}{\sqrt{1+t}}dW_t$
$u(u0,p,t,W_t)=\frac{u0}{\sqrt{1+t}} + \frac{β(t+αW_t)}{\sqrt{1+t}}$
A multiple dimension extension of additiveSDEExample