Hi,
currently, there are 28 solvers in the ODE module out of which 6 solvers
have been refactored already.

I have classified the remaining 22 solvers on the basis of their parent
class whether they should inherit SinglePatternODESolver or SingleODESolver

 SinglePatternODESolver

   1. separable
   2. separable_reduced
   3. linear_coefficients
   4. Liouville
   5. 2nd_linear_airy
   6. 2nd_linear_bessel
   7. 2nd_hypergeometrics

SingleODESolver

   1.
*1st_exact *
   2.
*1st_homogeneous_coeff_subs_indep_div_dep *
   3.
*1st_homogeneous_coeff_subs_dep_div_indep *
   4.
*1st_power_series *
   5.
*2nd_power_series_ordinary *
   6.
*2nd_power_series_regular *
   7.
*nth_linear_constant_coeff_homogeneous *
   8.
*nth_linear_euler_eq_homogeneous *
   9.
*nth_linear_constant_coeff_undetermined_coefficients *
   10. *nth_linear_euler_eq_nonhomogeneous_undetermined_coefficients*
   11.
*nth_linear_constant_coeff_variation_of_parameters *
   12.
*nth_linear_euler_eq_nonhomogeneous_variation_of_parameters *
   13.
*nth_order_reducible *
   14.
*1st_homogeneous_coeff_best ( it just gives the best result from
   "1st_homogeneous_coeff_subs_indep_div_dep" and
   "1st_homogeneous_coeff_subs_dep_div_indep") *
   15. *Lie_group*

+oscar.j.benja...@gmail.com <oscar.j.benja...@gmail.com> does this
classification look good?
Any suggestions would be really helpful.

Regards,
Mohit

On Sun, Mar 8, 2020 at 1:53 PM mohit balwani <mohitbalwani.ic...@gmail.com>
wrote:

> Hi, oscar
>
> I started looking at the (Single) ODE solver closely and as suggested by
> you, they are to be refactored in the form of classes. After performing all
> this work it will be easier to maintain the code and whenever a new solver
> is to be added it will be very easy to add it. In my GSoC proposal what
> exactly I should elaborate on because refactoring different solvers will be
> based on either SinglePatternODESolver
> or SingleODESolver only and both of the base classes are already
> implemented so we just have to inherit them. one thing I noted that there
> are helper functions in ode.py so I guess they should be moved to
> other file deutils.py may be.
> so in my proposal should I show the code for one of the non-refactored
> solvers?
>
> Thanks,
> Mohit
>
> On Sat, Mar 7, 2020 at 2:22 AM Oscar Benjamin <oscar.j.benja...@gmail.com>
> wrote:
>
>> Hi Mohit,
>>
>> That's plenty enough for a GSOC project. You should try to go into
>> more detail in your proposal about exactly what you think should
>> happen though. Perhaps review all of the (single) ODE solvers that are
>> there now and how they can be refactored and simplified or improved in
>> the process.
>>
>> Refactoring the tests so that they can be reused will make it possible
>> to run all solvers on all of the tested ODEs which will expose many
>> bugs in the individual solvers. You don't need to worry about having
>> enough to do if you start thinking about fixing those bugs! If I was
>> doing this work myself I would begin with refactoring the tests so
>> that I can use them to compare before/after performance while
>> refactoring the solving code.
>>
>> I think this would be too much for one GSOC project but the ultimate
>> goal I would like is to see the ODE code organised more like
>> integral_steps with rules leading to other rules and so on so that we
>> can have step-by-step solutions and better debugging output. Many of
>> the solvers are actually using substitutions so we should make it
>> possible for a solver to simply match the ODE and say "use this
>> substitution". We can't even begin to implement a rule-based system
>> until dsolve is refactored though.
>>
>> Oscar
>>
>> On Fri, 6 Mar 2020 at 19:34, mohit balwani <mohitbalwani.ic...@gmail.com>
>> wrote:
>> >
>> > I am planning to take Refactoring ODE module as a GSoC project.
>> >
>> > For every solver we need to make it as a separate class so that
>> classify_ode() can easily match the ode and return the solution right away.
>> After that the test_ode.py also needs to be refactored as there are lot of
>> redundant test  and we can use data structures for maintaining and testing
>> each and every part of test_ode.py.This will provide uniformity as there
>> are some blocks which are not tested.
>> >
>> > So will this be enough for GSoC'20?
>> >
>> > On Fri, Jan 24, 2020, 12:14 AM Oscar Benjamin <
>> oscar.j.benja...@gmail.com> wrote:
>> >>
>> >> Those might be able to speed things up but not until the ODE module is
>> >> refactored. The reason the module needs to be refactored is that right
>> >> now it runs the whole of classify_ode including the matching code for
>> >> every single solver.
>> >>
>> >> If it just returned the first match straight away and computed the
>> >> result it would be much faster. Then adding new fast methods that are
>> >> tried first can speed things up. As it stands though each method that
>> >> you add will probably just slow it down more. There needs to be a
>> >> refactor first so that classify_ode still works as expected even if
>> >> dsolve does something different.
>> >>
>> >>
>> >> On Thu, 23 Jan 2020 at 16:04, mohit balwani
>> >> <mohitbalwani.ic...@gmail.com> wrote:
>> >> >
>> >> >
>> >> >
>> >> > On Thursday, January 9, 2020 at 10:00:33 PM UTC+5:30, mohit balwani
>> wrote:
>> >> >>
>> >> >> I have ideas of implementing functionalities in ODE mentioned in
>> wiki page. with whom should I discuss it?
>> >> >
>> >> >
>> >> >
>> >> >  I have attached a pdf file in which there are shortcut tricks to
>> solve linear ode, i don't know whether these methods are already
>> implemented indirectly or  will enhance the speed.But In my opinion if they
>> are implemented then lot of work could be saved. For example if we look at
>> method of undetermined coefficients, to find a particular integral of ode
>> it solves for coefficient by comparing them and call solve which has matrix
>> as argument. Now with the help of these tricks we do not need to call solve
>> as it will directly find out the coefficients of particular integral. This
>> pdf is handwritten notes and i have tried to write them as neat and
>> understandable as possible and with each case i have also written 1 example
>> so that it becomes easy to go through.
>> >> >
>> >> > --
>> >> > 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/2df1d019-75a6-48eb-a6ce-676337cda1a5%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/CAHVvXxR-9tiiEN8Fak_0czd19gtBTiL_Lna09CLWcck72e5j-A%40mail.gmail.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/CAGoPB%2BuBTuy4jfMssJJqd59oZO-zf3uA29sMFPxkmjnbwmMexA%40mail.gmail.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/CAHVvXxSf5xAg2V0M1vF2xo%2B1_0C_s4P1pf8%3DPJwVKUYfNNRxyA%40mail.gmail.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/CAGoPB%2BvqSNJOkQQYFb0%2BQpT4kmyVaXBycvntaqUQvQtJskbXLw%40mail.gmail.com.

Reply via email to