Hi, 
I am AMiT Kumar, I would be GSoC Applicant to SymPy this year. I have been 
following the SymPy Community for quite sometime now and have also got 
around 11-12 patches Merged in the Code base. So, now, I have got a decent 
idea of `How things works`.

I would like to work on Solvers as Mentioned on the Ideas Page. Last year 
Harsh Gupta did a very good job by Rewriting the Univariate solvers 
(solveset.py), I have gone through his work. After having conversation with 
him and digging into solveset, I got to know there is still a lot of work 
which needs to be done.

I could see a couple of entry points on the Ideas page:
https://github.com/sympy/sympy/issues/8725  (I have Merged a PR for this)
https://github.com/sympy/sympy/issues/8711  (Replace all internal solve() 
calls with solveset() ): TODO

Things, I would like to implement in solveset includes:

Multivariate Equation solving:

I think for solving multivariate equations, the order of variables should 
be given as input, so that we don't need to have a dict as output and we 
can return Set, as if we automatically detect variables, we need to output 
the dict of results.

   - Multivariate functions with non point solution: (solvemv)
   - 
   
   In [0] solveset((x - 1)*(y - 2), (x, y))
   Out[1] {{1, arbitrary}, {arbitrary, 2}}
   
   
or we may return:

Out[1] {{1, (-oo, oo)}, {(-oo, oo), 2}}



   - Multivariate functions with point solutions: (solvemv)
   


   - 
   
   In [0] solveset(x**2 + y**2, (x, y))
   Out[1] {0, 0}
   
   
Solve System of Equation: (solvesys)
(For system of Equation, we can have this): 


   - 
   
   In [0] solveset([x + y == 1, x - y == 0], (x,y))
   Out[1] {{1/2, 1/2}}
   
   - For inequality solver (or for solvers in general) we also need to 
   extend singularities module (though useful in general), so as to prevent 
   getting wrong results, caused due to incorrect simplification of 
   expression, as we saw in this issue: 
   https://github.com/sympy/sympy/issues/8715 , Example: x + 1/x > -2 + 1/x 
    this inequality is written as expr = expr. lhs - expr.rhs , which 
   cancels 1/x and gives wrong result, by including singular point in the 
   solution.
   - inequality solver in solveset currently uses inequalities.py 
   (dependent on solve) (some discussion here: 
   https://groups.google.com/forum/#!topic/sympy/Yp5NqrXmp2U). It is 
   related to the next point below. 
   - All internal solve() calls needs to be replaced with solveset() , this 
   is very important for bringing out the solveset from sandbox to 
   eventually replace solve().   (we need to consider the output API 
   (return type) also while replacing).
   - We also need to extend the set - boolean (relational) conversion 
   methods to handle multivariate variables.
   - Complex set Infrastructure is also not there (though I see a WIP PR 
   for that), and yes we also need to see what other set capabilities we need 
   to implement to support various other kinds of solutions.
   
And also other solvers as mentioned on ideas page like 'Equations solvable 
by LambertW function' also needs to work.

I would love to get feedback from the community before presenting my 
proposal.

Cheers!
AMiT Kumar
3rd Year Undergrad
Delhi Technological University
www.iamit.in

-- 
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/c786148f-3ea3-411f-b24c-93dc0174b381%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to