Hi,

Here is rough draft of my GSoC proposal

https://docs.google.com/document/d/1slfj2CJRgKpmf0zOW93YkxYUDUvutTmkDX6BmsFfmIs/edit?usp=drivesdk

Any suggestions would really be appreciated.

On Tue, Mar 10, 2020, 9:15 PM Oscar Benjamin <[email protected]>
wrote:

> 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
> <[email protected]> wrote:
> >
> > hello,
> >
> > so should I resend the previous mail to the mailing list?
> >
> > On Tue, Mar 10, 2020 at 6:59 PM mohit balwani <
> [email protected]> 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 <
> [email protected]> 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
> >>> <[email protected]> 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
> >>> >
> >>> > [email protected] does this classification look good?
> >>> > Any suggestions would be really helpful.
> >>> >
> >>> > Regards,
> >>> > Mohit
> >>> >
> >>> > On Sun, Mar 8, 2020 at 1:53 PM mohit balwani <
> [email protected]> 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 <
> [email protected]> 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 <
> [email protected]> 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 <
> [email protected]> 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
> >>> >>> >> <[email protected]> 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 [email protected].
> >>> >>> >> > 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 [email protected].
> >>> >>> >> 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 [email protected].
> >>> >>> > 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 [email protected].
> >>> >>> 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 [email protected].
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/sympy/CAHVvXxS_jx5EeJ2jSefgTGEXDY_D86C4i85178H26nCYEcrkPA%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 [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/sympy/CAGoPB%2Buv0SrJtnusseGyGDwUqOBM-vGmTv5Z%2B4CwONdomBt%3D_Q%40mail.gmail.com.

Reply via email to