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.

Reply via email to