diffsol icon indicating copy to clipboard operation
diffsol copied to clipboard

SODE solver

Open martinjrobins opened this issue 1 year ago • 3 comments

  • [ ] Implement explicit RK method for SODEs using methods by Rößler, Timestepping with error control and rejection sampling described here
  • [ ] Implement ESDIRK method for SODEs with singular mass matrix. Should be able to do this ontop of existing SDIRK solver in diffsol:
    • I'm currently thinking of following the approch used in differentialequations.jl
    • SODE equations and tableau described here. 4-stage 3rd order ODE method due to Kennedy and Carpenter on page 9.
    • Timestepping with error control and rejection sampling described here
  • [ ] I'm not sure if there is a good published solver based on BDF, if I find one I'll add it here. Otherwise need to give a reasonable error if a user tries to use BDF solver for SODEs
  • [ ] Update OdeEquations trait to enable users to specify SODE equations required (presumably need to specify additional functions for diffusion term g and its gradient)

martinjrobins avatar Sep 07 '24 11:09 martinjrobins

@Siel and I are looking forward to diffsol supporting SDEs, so please let us know if there is anything we can assist with in this matter.

mhovd avatar Mar 05 '25 18:03 mhovd

Thanks @Siel . what is your usecase? What equations are you solving, what does your noise term look like? What do you currently use for this (packages and methods)?

Any links to good references are welcome too :) just stick any info you think would be helpful on this issue

martinjrobins avatar Mar 05 '25 19:03 martinjrobins

Hi Martin, We are using SDEs to model Inter-occasion Variability (IOV) in our population pharmecometric modeling package. Here an example. Given our use case, we usually end up solving autonomous systems of SDEs.

Our current implementation consists on a very barebones but functional SDE solver using the Euler-Maruyama method implemented here. with the noise being added here. Then we use a particle filter to calculate the likelihood of each of the support point here.

All of the above is based these two papers GSS MalikPitt.

Previously I did some tests using Julia's DifferentialEquations.jl family of stochastic solvers. Here they have some references to specific algorithms.

I'll paste some: Rößler A., Runge–Kutta Methods for the Strong Approximation of Solutions of Stochastic Differential Equations, SIAM J. Numer. Anal., 48 (3), pp. 922–952. DOI:10.1137/09076636X

Debrabant, K. and Rößler A., Families of efficient second order Runge–Kutta methods for the weak approximation of Itô stochastic differential equations, Applied Numerical Mathematics 59, pp. 582–594 (2009) DOI:10.1016/j.apnum.2008.03.012

Rößler A., Second Order Runge–Kutta Methods for Itô Stochastic Differential Equations, SIAM J. Numer. Anal., 47, pp. 1713-1738 (2009) DOI:10.1137/060673308

There are many more.

Thanks!

Siel avatar Mar 05 '25 19:03 Siel