Understanding the use of `SDEFunction`

I am learning how to work with SDEs in julia and am a bit confused:
In the documentation, both of SDEProblem’s constructors take two functions f,g as their first two arguments, where f should be the drift and g the noise term. One of the constructors requires f to be of type SDEFunction. That makes sense to me.
The strange part is: SDEFunction requires in its only constructor both the drift term f and noise term g:

SDEFunction{iip,specialize}(f,g; [...])

That does not make sense to me – if we use the first constructor of SDEProblem:
SDEProblem(f::SDEFunction,g,u0,tspan,p=NullParameters();noise=WHITE_NOISE,noise_rate_prototype=nothing)
we would input g as both the 2nd argument of SDEProblem and in the input of the first argument of SDEProblem, since it is of type SDEFunction.

To make things more confusing, the first-steps SDE tutorial does not provide g as parameter in the construction of the SDEProblem – contradicting the two contstructors in the documentation of SDEProblem.

ff = SDEFunction(f, g, analytic = f_analytic)
prob = SDEProblem(ff, u₀, (0.0, 1.0))

What am I not getting about this SDEFunction?

1 Like

That’s just a typo in the docstring. It should be SDEProblem(f::SDEFunction,u0,tspan,p=NullParameters();noise=WHITE_NOISE,noise_rate_prototype=nothing). I assume that solves the rest of your issues.

The next doc build should include the fix.

It does – many thanks.