On Wed, Mar 17, 2021 at 7:54 AM nijso.be...@gmail.com <nijso.beishui...@gmail.com> wrote: > > Hi Oscar, > > I've started with a document: > https://github.com/sympy/sympy/wiki/ODE-solver-roadmap > > I think the first thing to do is build a kind of regression test using e.g. > the database of first order ODEs from the book of Kamke and see where we > stand. Maybe somebody already did this? I started with making my own > regression test a couple of months ago but other projects demanded my > attention. I'm not so familiar with making regression tests, so I'll probably > get back to you about how to set this up properly (I think I wanted to get > much more output like time statistics I have to check). > > There is a nice website listing the performance of maple and mathematica for > the ODE solvers: > http://www.12000.org/my_notes/kamek/mma_12_1_maple_2020/KEse1.htm#x3-20001 > > An ODE solver that I wrote (for the maxima CAS) based on the symmetry papers > from Cheb-Terrab and from Schwarz gave me a performance of around 86% for the > first order, first degree ODEs, but very important classes are missing like > solutions to Riccati and Bessel problems. > code: > https://github.com/bigfooted/maxima-odesolve/blob/master/ode1_lie.mac > with documentation here: > https://nbviewer.jupyter.org/github/bigfooted/maxima-odesolve/blob/master/Doc/ode1solve.ipynb > > So by just making the existing symmetry solvers more robust we should get a > similar performance without the solver getting stuck or crashing (I got 1 > stuck and 1 crash, both in the Risch integration routine)
At the end of the day, the power of the integrator is always going to be a limiting factor in the ODE solver. For those solvers that call out to integrate(), I would split the comparisons into two steps, the computation of the solution with an unevaluated integral, and the computation of the integral. sympy.dsolve() already does this in the hints system with separate _Integral hints, so this will not be hard. I know Maple has a similar feature (the dsolve hints feature is based on Maple). I don't know about Mathematica or Maxima. The integration itself is obviously important for the actual final answer, but any improvements to that step will generally need to be done in the integration code, not the ODE solving code. Aaron Meurer > > Best regards, > Nijso > > On Tuesday, 16 March 2021 at 10:53:30 UTC+1 Oscar wrote: >> >> On Tue, 16 Mar 2021 at 09:27, nijso.be...@gmail.com >> <nijso.be...@gmail.com> wrote: >> > >> > >> > A couple of ideas for improving the ODE solver capabilities are listed on >> > the GSoC project ideas page: >> > https://github.com/sympy/sympy/wiki/GSoC-Ideas#other-ode-ideas >> > >> > I propose a roadmap for a (first order) ODE solver that leads to a >> > structured and modular workflow where the individual functionalities can >> > be reused >> >> Hi Nijso, >> >> I completely agree with all of your very useful suggestions. What >> would be most useful is if you could write the ideas up in more detail >> e.g. on the sympy wiki. >> >> Last year I wrote something for improving the ODE systems solvers >> which you can see here: >> https://github.com/sympy/sympy/wiki/ODE-Systems-roadmap >> >> That led to a successful GSOC project that massively improved the very >> messy code that was there before for ODE systems. Most of the ideas >> from that roadmap got implemented and thousands of lines of buggy and >> repetitive code were replaced with some better more generalised code. >> The key point is that we are more likely to get well-prepared GSOC >> applications if the proposal for what needs doing is written up >> clearly enough with examples/references. (It doesn't need to be as >> explicit as the road map I wrote but we should try to be clear about >> exactly which paper to read, where to see existing implementations >> etc, how much would make sense for a single project, what background >> needed etc) >> >> Oscar > > -- > You received this message because you are subscribed to the Google Groups > "sympy" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to sympy+unsubscr...@googlegroups.com. > To view this discussion on the web visit > https://groups.google.com/d/msgid/sympy/e1bc45fc-89dd-4c79-a351-354ccf9b4694n%40googlegroups.com. -- You received this message because you are subscribed to the Google Groups "sympy" group. To unsubscribe from this group and stop receiving emails from it, send an email to sympy+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/sympy/CAKgW%3D6KKeo3GJMY6kT4E0TWC3PCN7i3QP9G8Ua-2EuNwu5NffQ%40mail.gmail.com.