13

Let's take a stochastic differential equation: $$ X_t = f(t,X_t)dt + g(t,X_t)dW_t $$ Here's a few different arguments which lead to intuitive understandings of why the mathematics behind the higher order methods is necessary. I will be discussing in terms of strong order, which is the same as saying "for a given Brownian motion $W(t)$, how well does the ...


7

I can understand that this property is useful in some applications where the derivative is difficult or computationally infeasible to obtain or does not exist. However, I would not expect such problems to be very relevant in application. If an analytical solution for the derivative is not known, it's very costly and error prone. Calculating the Jacobian is $...


4

I am not an expert in specifically stochastic differential equations, but I would assume that my answer will still be of some value. Computation of the derivative can be challenging, as you mentioned in your question. However, this would be even more pronounced in a multidimensional case, as one would have to calculate Jacobian matrices ($n^2$ entries). So, ...


3

The parameter can be any type, so here I pass in a time-dependent function for p and use it in the differential equation: # Packages library(tidyverse) library(diffeqr) library(JuliaCall) diffeq_setup() # Drift function f <- function(u,p,t){ du1 = p(t) return(c(du1)) } # Diffusion function g <- function(u,p,t){ du1 = 0 # note that there is ...


2

The first method is Euler-Maruyama with its strong convergence of order $0.5$. This can be seen in the difference plot on the right. The step sizes vary with a factor of $4$, while the error does not decrease that rapidly. In the second method, if one inserts the constants actually used, then the steps are \begin{align} k_1&=f(x_t)Δt+g(x_t)\sqrt2ΔW_t\\ ...


2

The setup that is used in DifferentialEquations.jl and QuantumOptics.jl is what's known as time-adaptive jumping. It's nice because it allows for jump events to do things like change the number of DEs, and the jumps are computed exactly. However, it does have the limitation that jumps are computed exactly, so if you have a high jump rate then this slows down....


2

I discuss the method you describe in more detail in this paper (Rackauckas and Nie 2017) as RSwM2. In that paper I am ever so slightly able to detect that it's sometimes doing something wrong, but since it only has issues with re-rejections it isn't that big of a deal. Those 3 methods (RSwM1, RSwM2, RSwM3) are now the basis of DiffEqNoiseProcess.jl and ...


2

DifferentialEquations.jl in Julia can do it if you can write it in mass-matrix form. You won't find it mentioned in the tutorial, but you can provide a mass matrix as part of the SDEProblem. Some of the stiff solvers can handle the problem (I see it's not well-documented yet which ones, but it's the symplectic and implicit Euler forms). I will caution that ...


Only top voted, non community-wiki answers of a minimum length are eligible