patrick-kidger / diffrax

Numerical differential equation solvers in JAX. Autodifferentiable and GPU-capable. https://docs.kidger.site/diffrax/
Apache License 2.0
1.44k stars 130 forks source link

Adaptive SDE Docs #471

Open lockwo opened 3 months ago

lockwo commented 3 months ago

In the docs under adaptation, it says "To perform adaptive stepping with SDEs requires commutative noise. Note that this commutativity condition is not checked."

Is this universally true? Can't you do improved Euler without commutative noise SDEs and still use adaptive methods? I thought this commutative requirement was just for Levy Area solvers

patrick-kidger commented 3 months ago

Adaptive stepping of SDEs is pretty weird. The problem is that the adaptivity may accidentally introduce a bias in the Levy area.

Two sufficient conditions for good behaviour -- you just need one of them -- are (a) commutative noise or (b) that any rejected steps will still have their endpoint stepped to afterwards.

In practice we don't offer (b) at the moment -- although I've contemplated adding it -- so instead we simply just require that (a) be true.

I don't know if these conditions are necessary (I suspect not), but AFAIK the general case of what conditions you need here is essentially still open.

FWIW James is really the expert on this, I'd suggest pinging him an email.