> Thanks for the response :-). I have a few questions as follows:
> what are the other solvers that need to implemented in this year GSoC and
some references to the algorithms that will be used in implementing those
solvers.
> when will this ideas page be updated.
> Regards
> Luv Agarwal
> In GSoC last year there was a project on improvising solvers. I wanted to
> know how much of that is implemented (the ideas page of this year is not
> updated yet) as I am interested in working on solvers.
Great to hear you are interesting in working on solvers. Briefly here's
what have been done in the summer:
Instead of making changes in the current `solve` function we rewrote
solvers in a new submodule named solveset. Though it borrows ideas and
tests from the `solve` submodule.
* `solveset` has a cleaner input and output interface: We now return a set
object. For input only takes the equation and the variables for which the
equations has to be solved.
* `solveset` can return infinitely many solutions. For example solving for
`sin(x) = 0` returns {2⋅n⋅π | n ∊ ℤ} ∪ {2⋅n⋅π + π | n ∊ ℤ} Whereas `solve`
only returns [0, π]
* There is a clear code level and interface level separation between
solvers for equations in complex domain and equations in real domain. For
example solving `exp(x) = 1` when x is complex returns the set of all
solutions that is {2⋅n⋅ⅈ⋅π | n ∊ ℤ} . Whereas if x is a real symbol then
only {0} is returned.
* There are cases like finding the maxima and minima of function using
critical points where it is important to know if it has returned all the
solutions. `solve` does not guarantee this. `solveset` fixes that issue.
There had been a lot of discussion during and before the project and you
should know why we did what we did. Here are some links:
* Discussion on the mailing list:
https://groups.google.com/forum/#!searchin/sympy/solvers/sympy/Oyz8SkR2fRk/RMpooqwu3oMJ
* Action Plan on solvers: https://github.com/sympy/sympy/pull/2948
* My Proposal for GSoC 2014:
https://github.com/sympy/sympy/wiki/GSoC-2014-Application-Harsh-Gupta:-Solvers
* My blog for GSoC: http://hargup.github.io/
* solveset pull request as mentioned by Sergey:
https://github.com/sympy/sympy/pull/7523
I used to have biweekly gitter meeting with Matthew and Sergey. You can try
to dig the gitter archives to have a look at them. Here is the link to the
logs of the first meeting https://gitter.im/sympy/sympy/archives/2014/05/07
Here's a brief list of things that needs to be done:
* Implement multivariate solvers for solveset
* Implement more equation solvers for univariate algebraic equations. For
example equations solvable by LambertW function
* Build the set infrastructure: This includes implementing complex sets and
functions to handle multidimentional ImageSet etc., This part must go hand
in hand with the improvements in the solvers as set module can be a
universe in itself. Also there can be fundamental limits on the things you
can do.
This list might appear small but there is a lot of work that needs to be
done which can easily fill up the summer or probably beyond it. This can be
fun project but as it is mentioned in the ideas of 2014 it requires a good
deal of thought during the application phase.
Richard, I have gone through some of your paper written on solvers in CAS
and also used in them solveset. Thanks for them. It would be great if you
can also provide us with some curated list of resources on solvers.
Aaron can we support more than one student to work on solvers? As far as I
remember there were one or two other students who were also interested in
solvers.
--
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/CADN8iuqZhB2Qn7f0WGMP_1JRvfHxnFFsnjJBcvg7z%2Bb4DaMbKw%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.