Great that you are working on solvers. > Multivariate functions with non point solution: (solvemv) > ```python > 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}}`
The output should rather be a set of ProductSets rather than a set of sets. General FiniteSet is unordered so {(-oo, oo), 2} is same as {2, (-oo, oo)}. This example shows how you can define and use a product set. ``` In [9]: s = FiniteSet(2)*Interval(-oo, oo) In [10]: s Out[10]: {2} x (-oo, oo) In [11]: (2, 0) in s Out[11]: True ``` > Solve System of Equation: (solvesys) > (For system of Equation, we can have this): > ```python > In [0] solveset([x + y == 1, x - y == 0], (x,y)) > Out[1] {{1/2, 1/2}} > ``` It has the same issue as I mentioned above {1/2, 1/2} is unordered. You can use a FinteSet set of ordered tuple. ``` In [14]: FiniteSet((S(1)/2, S(1)/2)) Out[14]: {(1/2, 1/2)} ``` > we also need to extend singularities module (though useful in general) +1 I suggest that you create a detailed plan of "how" you are going to solve multivariate equations and how will you find a singular point. I did a shallow study of the current multivariate solver in `solve`. The writeup is here: http://hargup.github.io/posts/week-7.html Try searching for some literature, dig into other older CAS and probably you should ask professor Fateman for help. He can be harsh but if you have a thick skin he can be a lot of help too. On Fri Feb 06 2015 at 2:28:21 AM AMiT Kumar <dtu.a...@gmail.com> wrote: > Thanks, Jason > > I have pasted this in my Application Draft and moved to Sympy Wiki: > > https://github.com/sympy/sympy/wiki/GSoC-2015-Application-AMiT-Kumar--Solvers-:-Extending-Solveset > > > > Cheers! > AMiT Kumar > 3rd Year Undergrad > Delhi Technological University > www.iamit.in > > On Friday, February 6, 2015 at 2:10:49 AM UTC+5:30, Jason Moore wrote: > >> Amit, >> >> This sounds good. You should move this content to the SymPy wiki and use >> it as a starting point for your application submission. >> > >> >> Jason >> moorepants.info >> +01 530-601-9791 >> >> On Thu, Feb 5, 2015 at 10:38 AM, AMiT Kumar <dtu....@gmail.com> wrote: >> > 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/symp >>> y/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.co >>> m/forum/#!topic/sympy/Yp5NqrXmp2U >>> <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 sympy+un...@googlegroups.com. >>> To post to this group, send email to sy...@googlegroups.com. >> >> >>> 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 >>> <https://groups.google.com/d/msgid/sympy/c786148f-3ea3-411f-b24c-93dc0174b381%40googlegroups.com?utm_medium=email&utm_source=footer> >>> . >>> 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 sympy+unsubscr...@googlegroups.com. > To post to this group, send email to sympy@googlegroups.com. > 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/51ec7e79-71d0-43e8-8cd9-d34b63af493e%40googlegroups.com > <https://groups.google.com/d/msgid/sympy/51ec7e79-71d0-43e8-8cd9-d34b63af493e%40googlegroups.com?utm_medium=email&utm_source=footer> > . > 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 sympy+unsubscr...@googlegroups.com. To post to this group, send email to sympy@googlegroups.com. 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/CADN8iup72aM2uLxmS2q17Mfm%3DPNF7qoKWEXJZKX%2BzG3U24CPvw%40mail.gmail.com. For more options, visit https://groups.google.com/d/optout.