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.
