Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Delay equations. #1

Open
parenthetical-e opened this issue Jan 8, 2016 · 1 comment
Open

Delay equations. #1

parenthetical-e opened this issue Jan 8, 2016 · 1 comment

Comments

@parenthetical-e
Copy link

I'd like to brighten the possibility of integrating stochastic delay ODEs, if possible.

Can the approach used in, https://github.com/Zulko/ddeint/blob/master/ddeint/ddeint.py, be adapted for sdeint? I'm quite happy to write the code, if there's interest. Wanted to see if that looks like a viable approach. My understanding of numerical methods for stochastic ODEs is not good enough to be sure this is a sane route.

@mattja
Copy link
Owner

mattja commented Jan 9, 2016

Thanks for the suggestion. That is a nice approach for DDE (using linear interpolation of history together with an existing integrator) but I think that code design can not be directly ported to the stochastic case.
The design of that code allows users to provide a fairly general DDE, as the evolution function func supplied by the user can depend in arbitrary ways on the recent history.
The main danger I see in directly applying that to SDDEs comes from the interpolation (when the needed history is not exactly on a time step).

I'm not expert in SDDEs, but it is possible that a heuristic adaptation of that code to the stochastic case may result in converging to the wrong path, or converging with decreasing step size more slowly than expected. Because it's possible a different interpolant is needed for the stochastic case to get the right convergence.

You can avoid this problem by restricting to SDDEs with a single discrete delay (because then you can choose a step size so that the delay is an integer times the step size. Then no interpolation is needed and the algorithms are simpler. For multiple discrete delays that is not possible, unless the ratio between delays equals a ratio of reasonably small integers, so a step size can be chosen with all delays an integer multiple of step size).

To add support for delays in sdeint, maybe the easiest case we could start with is to support the Euler-Maruyama algorithm for equations with a single discrete delay:

  • Baker and Buckwar (2000) Numerical Analysis of Explicit One-step Methods for Stochastic Delay Differential Equations

It is also possible to do the interpolation correctly to support more general SDDE equations, and to have faster converging algorithms. e.g.:

  • Buckwar (2006) One-step approximations for stochastic functional differential equations
  • Buckwar (2007) Multi-step Maruyama Methods for Stochastic Delay Differential Equations
  • Cao and Zhang (2013) On exponential mean-square stability of two-step Maruyama methods for stochastic delay differential equations

From these can see that it's not trivial to extend algorithms to the stochastic delay case, so best to stick to the published algorithms.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants