Billinghurst, David (RTATECH) wrote:
> .......
> I was also wondering how to add a hook/property to integrate
> (simple) expressions containing a special function, such as:
> * integrate( sin(x)/x, x)
> * integrate( x^(n+1).bessel_j(n,x), x)
> * integrate( jacobi_sn(u,m)^n, dx)
>
> If we could search the expression for special functions and
> have a general, table-driven way of trying custom integration
> routines. Perhaps an 'integral-hook (or some better name)
> property on %sin, %bessel_j .... that returns points to
> a function with specialized knowledge.
....
transformations based on the occurrence of key words like Bessel_J would
not be hard to do,
but sin(x)/x does not have any special function in the input, just in
the output (Si(x)).
A relatively disciplined way to do this is to look at the organization
of Tilu, which has a few thousand
patterns. Clearly you do not want to test them one at a time, so they
have to be organized. Tilu uses
a kind of tree-hashing, but it became rather ad hoc as it was refined.
A fresh look could be based
on the same kind of organization used in classic tables of integrals,
where chapter heading indicate
the nature of the patterns contained. (e.g. sqrt of cubic, log of
something). Also note that most of
the integrals of interest in the world of applied science are DEFINITE
integrals whose indefinite
integrals do not exist in neat form. Therefore spending a great deal of
time doing the (few!)
indefinite integrals may not be particularly useful.
Check a large table of integrals to get some perspective.
The other (major, and generally successful) approach is used in Yannis's
specint code in Maxima,
as well as in later efforts, especially in Mathematica, to map functions
to a very general representation
where integration may be possible, e.g. Meier G functions, and then
map back if possible.
Going back to the integral-hook notion, the right way to do this would
be, I think, to have a utility
that inserts your new integral into the tree-like structure of patterns
that already exist. This is what
Tilu does: it starts with an empty tree and inserts thousands of
patterns from several reference books.
Our hope was that users from all over the internet would insert
additional patterns. It didn't happen.
RJF