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
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
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>:
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/