Hi, Sorry for late reply, (I was busy with Mid terms & Assignments).
Based on the above Ideas, I have made the draft of my Proposal on SymPy wiki, Please have a look: https://github.com/sympy/sympy/wiki/GSoC-2015-Application-AMiT-Kumar--Solvers-:-Extending-Solveset Thanks, AMiT Kumar 3rd Year Undergrad Delhi Technological University www.iamit.in On Tuesday, March 10, 2015 at 12:15:15 AM UTC+5:30, Aaron Meurer wrote: > > That sounds good, except as I noted at > https://groups.google.com/forum/#!msg/sympy/42GdMJ9ssyM/swC6bHVunP8J, > it's very important to build this around a framework of rewriting and > decomposition. You want to be able solve, f(g(x)) = 0, where f is a > polynomial and g is a lambertW (for example). You want the hints to > be as simple as possible, and any complicated equations to be solvable > by an application of possibly many hints. This is more complicated > than what the ODE solver does. > > Rewriting basically boils down to simplifying the matching portion of > the hints. This is something that is not done very well in the ODE > system, so I would only look there to see how it is lacking. > > You want each hint to match a simple pattern, and then have some set > of rules on how to rewrite different expressions to that pattern > mathematically, even if they don't match it structurally. I would take > a look at the rules system used in the fu algorithm, and in the unify > submodule. Also take a look at Francesco's pattern matching > suggestions (search the mailing list and the wiki). > > Aaron Meurer > > On Sun, Mar 8, 2015 at 12:18 AM, AMiT Kumar <[email protected] > <javascript:>> wrote: > > Hi, > > I was thinking, How about designing the solveset similiar > > to the ODE Module . Something like hints system to classify solvers? > > > > Example: > > > > primaryhint = [ > > "univariate", > > "multivariate", > > "single_eq", > > "multiple_eq" > > ] > > > > > > subhints = [ > > 'solve_linear_system' > > 'linear_trig', > > 'polynomial', > > 'transcendental', > > 'piecewise', > > 'relational' > > 'solve_lambertw' > > 'miscellaneous' > > ] > > > > > > def classify_solver(f, symbols=None): > > """ > > Clasifies the input equation(s)/function(s) to solve for, into > possible > > hints such as linear, univariate, multivariate, etc. > > """ > > hints = [] > > > > # Methods to classify Equations > > > > def solveset(f, symbol=None): > > > > if eq_type == 'linear': > > solve_linear(f, symbol) > > > > if eq_type == 'linear_system': > > solve_linear_system(f, symbol) > > > > . > > . > > . and so on > > > > > > > > In that case we will be able to add new solvers, without messing with > > the others, and we will have a more robust and flexible framework > > which will be easy to extend. > > > > I think, building a robust framework, which felicitates further > > development, worth much more than adding new solvers. > > > > Thoughts from the community are invited. > > > > AMiT Kumar > > > > -- > > 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] <javascript:>. > > To post to this group, send email to [email protected] > <javascript:>. > > Visit this group at http://groups.google.com/group/sympy. > > To view this discussion on the web visit > > > https://groups.google.com/d/msgid/sympy/5b7393ef-7d4d-46f9-bfcd-dbbeb38639c4%40googlegroups.com. > > > > > > For more options, visit https://groups.google.com/d/optout. > -- 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 post to this group, send email to [email protected]. Visit this group at http://groups.google.com/group/sympy. To view this discussion on the web visit https://groups.google.com/d/msgid/sympy/6247761d-1673-4f10-bfcd-c0b92a555e7b%40googlegroups.com. For more options, visit https://groups.google.com/d/optout.
