I realize that there is less than a month left for the application
deadline and it has already been a month since I posted this thread.
So, I need to come up with design details fast. I have written some
details about using sets as output for solvers in this PR
https://github.com/sympy/sympy/pull/2948/files. PR because I feel it
is better platform to facilitate this discussion than the mailing
list. Please have a look.

On 16 February 2014 07:15, Jigar Mistry <jigarmistr...@gmail.com> wrote:
> i am also interested in solvers module. how can i contribute to simpy using
> this solvers module.Plz help me....
>
>
> On Tuesday, 21 January 2014 16:25:13 UTC+5:30, Harsh Gupta wrote:
>>
>> Hi, I'm Harsh Gupta I will be GSOC applicant this year. I want to discuss
>> the solvers idea given on the Idea's
>> page.https://github.com/sympy/sympy/wiki/GSoC-2014-Ideas#solvers
>>
>> Some of the aspect of the idea are discussed at
>> https://groups.google.com/forum/?fromgroups=#!starred/sympy/8TM8cnuzkG8.
>>
>>
>> Aaron Meurer said:
>>
>>> I think with TransformationSet we can do quite a bit. That handles
>>> sets like {f(x) | x in A}. I think what is missing is the basic set
>>> builder {x | P(x)}, where P(x) is a boolean predicate.
>>
>>
>>
>> Matthew Rocklin said:
>>
>>>> > Real issue here - how to represent some solutions (e.g. sin(x)==0).
>>>
>>> In sets we would represent this with
>>> In [1]: imageset(k, pi*k, S.Integers)
>>> Out[1]: {π⋅k | k ∊ ℤ}
>>
>>
>> Implementing a general set builder will be very useful, we will need to
>> define basic set operations like union
>> and intersection on them. We might use a syntax like `BuildSet(expr,
>> sym_in_inputset, cond)`
>>
>> In [1]: BuildSet(pi*k, (k, S.Integers), True).intersect(0, 10)
>> Out[1]: {pi, 2*pi, 3*pi}
>>
>>
>> Matthew Rocklin said:
>>
>>> It sounds like maybe solve should return a Set.
>>
>>
>> I think it will be necessary to return set if we want to represent the
>> solution of expressions like `floor(x) - 5`.
>> See https://code.google.com/p/sympy/issues/detail?id=3975.
>> One problem I see with returning sets is that it can break a lot of
>> existing code.
>>
>>
>> As mentioned in the idea page we need to have a method to check if solve
>> returns all the solutions. For polynomials or expressions which are
>> solved by converting to polynomials we can compare the degree of the
>> polynomial to the number of solutions returned.
>>
>> Other method can be verifying the number of the solutions by using the
>> derivative of the function. Say we are given a *continuous* and
>> *differentiable*  function f(x) and it's derivative w.r.t x is g(x),
>> then if g(x) has n solutions then f(x) cannot have more than n + 1
>> solutions. So, if the solve returns n + 1 solutions for f(x) then we are
>> guaranteed that we have found all the solutions.
>> For this we will need a discontinuity finder and we will also have to make
>> sure that we have found all the solutions for g(x), i.e., the derivative of
>> f(x), which can be done recursively or by using other methods.
>>
>> A third way can be using numerical solver. Say we use solve to find the
>> solution of f(x) for some interval [a, b] then we can also run the numerical
>> solver for f(x) on [a, b]
>> if the number of solutions by numerical solver and symbolic solve matches
>> then we can be pretty sure that we have found out all the solutions of f(x)
>> in [a, b].
>>
>> --
>> Harsh
>
> --
> 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.
> For more options, visit https://groups.google.com/groups/opt_out.



-- 
Harsh

-- 
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.
For more options, visit https://groups.google.com/groups/opt_out.

Reply via email to