How to Use Real and Complex Noises in One Problem?

I would like to use both real and complex Weiner processes in one problem. For a simple example, suppose we have:

using DifferentialEquations
function Eq(du,u,p,t)
    du[1] = u[1] + u[2]
    du[2] = 2 * u[1]
end

function Eq_sigma(du, u, p, t)
    du[1] = u[1] + u[2]
    du[2] = u[2]
end 

u_0 = [1.0 + 0.0im, 0.0 + 1.0im]

prob = SDEProblem(Eq, Eq_sigma, u_0, (0, 1))
sol = solve(prob, EM(), dt = 1e-4, saveat = 1e-3)

I understand that this results in a diagonal noise dW = [dW_1,dW_2] so that:

  • du_1=(u_1 + u_2)dt + (u_1+u_2)dW_1
  • du_2=(2u_1)dt + (u_2)dW_2

Now if I want dW_1 to be a complex Weiner process while dW_2 is a real Weiner process, how can I go about specifying this? My understanding is that, by default, both noise processes would be complex.

Yeah currently we don’t have a good way of doing this without defining a custom noise process. You can define custom noise processes though as a way to do this by defining distributions, and you can see how the real and complex noise processes are done for that.