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.
