Hi Mohit, You don't need to resend the previous emails. This discussion is becoming too detailed though and belongs on the Github issue for refactoring the ODE module: https://github.com/sympy/sympy/issues/18348
Oscar On Tue, 10 Mar 2020 at 15:26, mohit balwani <mohitbalwani.ic...@gmail.com> wrote: > > hello, > > so should I resend the previous mail to the mailing list? > > On Tue, Mar 10, 2020 at 6:59 PM mohit balwani <mohitbalwani.ic...@gmail.com> > wrote: >> >> For pattern matching, I kept in mind that we can extract the elements of our >> general solution from the equation with direct matching just like >> First_linear. And for `SingleODESolver` there will be proper logic checking >> whether the given equation matches or not. >> >> I am a bit confused about how all linear solvers can be based on pattern >> because >> let's say we want to implement >> `nth_linear_constant_coeff_undetermined_coefficients`. >> its general equation is >> >> a_n f^{(n)}(x) + a_{n-1} f^{(n-1)}(x) + .. + a_1 f'(x) + a_0 f(x) = P(x) >> >> Now p(x) needs to have a finite number of linearly independent derivatives >> and in pattern matching to write general solution we should use the >> extracted elements given by wilds function. >> >> On Tue, Mar 10, 2020 at 4:18 PM Oscar Benjamin <oscar.j.benja...@gmail.com> >> wrote: >>> >>> I think the series solvers should probably have their own superclass. >>> I'd like to move them out of normal dsolve anyway. >>> >>> Of the others I think that probably all the linear ones can be based >>> on the Pattern solver. You should give a rationale for why you have >>> divided them up like this. >>> >>> On Tue, 10 Mar 2020 at 10:29, mohit balwani >>> <mohitbalwani.ic...@gmail.com> wrote: >>> > >>> > 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 >>> > >>> > separable >>> > separable_reduced >>> > linear_coefficients >>> > Liouville >>> > 2nd_linear_airy >>> > 2nd_linear_bessel >>> > 2nd_hypergeometrics >>> > >>> > SingleODESolver >>> > >>> > 1st_exact >>> > 1st_homogeneous_coeff_subs_indep_div_dep >>> > 1st_homogeneous_coeff_subs_dep_div_indep >>> > 1st_power_series >>> > 2nd_power_series_ordinary >>> > 2nd_power_series_regular >>> > nth_linear_constant_coeff_homogeneous >>> > nth_linear_euler_eq_homogeneous >>> > nth_linear_constant_coeff_undetermined_coefficients >>> > nth_linear_euler_eq_nonhomogeneous_undetermined_coefficients >>> > nth_linear_constant_coeff_variation_of_parameters >>> > nth_linear_euler_eq_nonhomogeneous_variation_of_parameters >>> > nth_order_reducible >>> > 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") >>> > Lie_group >>> > >>> > +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/CAHVvXxS_jx5EeJ2jSefgTGEXDY_D86C4i85178H26nCYEcrkPA%40mail.gmail.com.