Application for GSoC 2008

0 views
Skip to first unread message

Pan Peng

unread,
Mar 17, 2008, 10:14:30 AM3/17/08
to sympy
Hi,
I would like to participate in GSoC 2008. and extend the functionality
of sympy. My initial idea is to improve the integration algorithm by
using the recursive Risch algorithm and give some other improvements
of the "integrate()" function. I know this is a bit complex and I also
find that some one had failed to apply this project last year. I am
wondering whether this is suitable project that can be completed
within the GSoC time frame. Thanks for any advice.

Pan Peng

Ondrej Certik

unread,
Mar 17, 2008, 10:34:36 AM3/17/08
to sy...@googlegroups.com
Hi Pan!

thanks for your interest. The integrate() function has been improved a lot
lately, mainly due to Mateusz, Kirr and others. Try to play with it and see
which integrals still fail and how you would like to fix it.

The application will have to be more detailed, but otherwise, it's a good idea
for a GSoC project.

Ondrej

Pan Peng

unread,
Mar 17, 2008, 11:51:33 AM3/17/08
to sympy
Thank you, Ondrej.

Could anyone please give me a hint of the integration algorithm you
are using now?
So that I Will have an overview of what I will do.

Pan


On Mar 17, 10:34 pm, "Ondrej Certik" <ond...@certik.cz> wrote:
> Hi Pan!
>

Ondrej Certik

unread,
Mar 17, 2008, 12:04:53 PM3/17/08
to sy...@googlegroups.com
On Mon, Mar 17, 2008 at 4:51 PM, Pan Peng <pengp...@gmail.com> wrote:
>
> Thank you, Ondrej.
>
> Could anyone please give me a hint of the integration algorithm you
> are using now?
> So that I Will have an overview of what I will do.

Yes. See:

In [1]: integrate?

this contains

"""
...
See also the doctest of Integral._eval_integral(), which explains
thoroughly the strategy that SymPy uses for integration.
"""

so do:

In [3]: Integral._eval_integral?

and see the docstring.

Then do:

In [7]: risch.heurisch?


And this will give you thorough references to everything.

Ondrej

Mateusz Paprocki

unread,
Mar 17, 2008, 5:42:46 PM3/17/08
to sy...@googlegroups.com
Hi,

working on recursive Risch algorithm is an ambitious and very
complicated task. There are at least two reasons for this:

[1] The problem of symbolic integration isn't easy it self, Hardy some
time ago (1916) stated that a procedure for solving this issue might
not exist at all (fortunately Risch disproved this conjecture).

[2] The integrator requires tight cooperation with other parts of the
system (especially polynomial and simplification routines).

The question if it can be done during SoC depends on the subset of the
algorithm you would like to do, the desired efficiency and the level
of generality (symbolic coefficients, many field extensions etc.).

I suggest reading Manuel Bronstein's "Symbolic Integration Tutorial"
(ISSAC'98). It's a good starting point which will give you basic
understanding of the problem (unless you have already studied this).

Currently in sympy we have implemented heuristic Risch algorithm which
can handle elementary and special functions. Besides this we use
partial fraction decomposition (Bronstein-Salvy algorithm) for
integration of rational functions and some additional heuristics.

Recursive Risch algorithm would be a great improvement as the
heuristic version is not a decision procedure, so it may fail to find
an antiderivative even one exists. It would be also very interesting
to compare both approaches, to show which classes of integrals can not
be handled by heurisch and in cases where both algorithms succeed,
which one is faster and which generated more readable solution. This
should result in hybrid approach to indefinite integration (similar to
Maple's).

That's all about theory. If you will have any questions, ask. We will
surely answer all of them. Application deadline is on 31 March so
there is plenty of time to discuss details.

Mateusz

2008/3/17, Ondrej Certik <ond...@certik.cz>:

Pan Peng

unread,
Mar 18, 2008, 1:51:29 AM3/18/08
to sympy
Thanks for all your very useful information!

Now I have an overview of how symbolic integration is implemented
inside sympy and roughly read the paper you suggested. I am becoming
more interested in it. I will think a little more and make a plan for
what functionality I can contribute to the community. Then I will
prepare for my application.

One question, I have read the api documentation on integration, there
is an item written as follow:
" ....
(3) Whichever implementation of pmInt (Mateusz, Kirill's or a
combination of both).

- this way we can handle efficiently huge class of
elementary and
special functions
......
"
I am not sure what "pmInt" mean, would you please give me more
explanation?

Pan

Kirill Smelkov

unread,
Mar 18, 2008, 1:57:34 AM3/18/08
to sy...@googlegroups.com
Hi Pan,

On Mon, Mar 17, 2008 at 10:51:29PM -0700, Pan Peng wrote:
> One question, I have read the api documentation on integration, there
> is an item written as follow:
> " ....
> (3) Whichever implementation of pmInt (Mateusz, Kirill's or a
> combination of both).
>
> - this way we can handle efficiently huge class of
> elementary and
> special functions
> ......
> "
> I am not sure what "pmInt" mean, would you please give me more
> explanation?

It is Manuel Bronstein's "Poor Man's Integrator":

http://www-sop.inria.fr/cafe/Manuel.Bronstein/pmint/index.html

pmInt is referenced inside risch.py & on our wiki:

http://code.google.com/p/sympy/wiki/LinksToArticles

--
Всего хорошего, Кирилл.
http://landau.phys.spbu.ru/~kirr/aiv/

Reply all
Reply to author
Forward
0 new messages