how to add to list of known integrals



It seems to me that integral table lookup has been added to Maxima 
several times,
including Moses' SIN program, which had a feature "Italu"   (pronounced  
I tell you..)
... that would be for indefinite integrals.

I think I did this at least once with pattern matching, just before the 
integration program
gave up and returned an unevaluated integral.

There is also "tilu", which was (is?) a lookup program that has a few 
hundred tabulated
integrals in web server.  Adding formulas to that is pretty easy.

Then there were the experiments with making derivative-divides better, which

One issue is that a clever human will transform a difficult integral 
into a simpler one
and then look it up, so a formula may apply but not obviously so.  Much 
of the heuristic integration
program has to do with making integrals into more-or-less standardized 
forms.

The definite integration problem is generally transformed into contour 
integration.
A different set of programs.

RJF


On 3/2/2012 5:40 AM, Barton Willis wrote:
>
> -----maxima-bounces at math.utexas.edu wrote: -----
>
>> Hi everybody,  is there some way to add to the list of known integrals?
>> (Whether it's by some Lisp programming or otherwise.) e.g. we could add
>> integrate(cos(x*sin(t)), t, 0, %pi) =>  %pi * bessel_j(0, x) and then
>> integrate could recognize at least that and maybe do some related
>> integrals.
> For antiderivatives, giving a symbol the 'integral property is one way to extend
> Maxima's integrate function. Example (in simp.lisp)
>
>    (defun abs-integral (x)
>     (mul (div 1 2) x (take '(mabs) x)))
>
>    (putprop 'mabs `((x) ,#'abs-integral) 'integral)
>
> An example from bessel.lisp (antiderivative with respect to order is unknown)
>
>    (putprop '%bessel_j `((v z) nil ,#'bessel-j-integral-2) 'integral)
>
> For symbols with the 'integral property, Maxima tries derivative divides integration
> (substitution).
>
>  From a Maxima prompt, not sure how to give a symbol the 'integral property:
>
>    (%i19) ?putprop(larry, lambda([x], patsy(x)), '?integral);
>    (%o19) lambda([x],patsy(x))
>
> Oops:
>
>    (%i20) integrate(larry(x),x);
>    (%o20) [x]
>
> For definite integrals, I don't know. Or did you have something else in mind?
>
>
> --bw
> _______________________________________________
> Maxima mailing list
> Maxima at math.utexas.edu
> http://www.math.utexas.edu/mailman/listinfo/maxima