Hi Mohit, I'm replying on the mailing list. I didn't realise we had gone off-list in the last couple of emails.
This conversation belongs in the issue on github. Oscar On Tue, 10 Mar 2020 at 13:29, 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/CAHVvXxSkHZsi3Z37WAL%3DCC5swGxvnONJOZeHhB%3Do2hKuoxBg_w%40mail.gmail.com.