Hi, I have put my the first draft of the proposal on the sympy wiki.

https://github.com/sympy/sympy/wiki/GSoC-2014-Application-Harsh-Gupta:-Solvers

Please have a look, your suggestions will be valuable.

On 22 February 2014 01:27, Harsh Gupta <[email protected]> wrote:
> 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 <[email protected]> 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 [email protected].
>> To post to this group, send email to [email protected].
>> Visit this group at http://groups.google.com/group/sympy.
>> For more options, visit https://groups.google.com/groups/opt_out.
>
>
>
> --
> Harsh



-- 
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 [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/CADN8iuohUoie3-eQHG5C_%2BEtKsfs%2BJ%2Bk2P-_DdLMPSBbLtXXDA%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to