# [Maxima] applying function identities (proposal)

Billinghurst, David (RTATECH) David.Billinghurst at riotinto.com
Mon Feb 26 23:21:36 CST 2007

```Last May Barton Willis posted some code to crunch linear combinations of
Bessel functions.

http://www.math.utexas.edu/pipermail/maxima/2006/001287.html

I have finally got around to trying it. I want check Bessel function
solutions of ODEs.  It doesn't work for me with maxima-5.11.0.  I have
tried to debug it, but have failed so far.  I will continue my attempts
but am open to suggestions.

The code under discussion is:

bessel_reduce_order : bessel_j = lambda([n,x], (2 * n -1) * bessel_j(n-1,x)
/ x - bessel_j(n-2,x));

besselcrunch(e) := block([ords, minord, maxord, prd, n : ?gensym()],
e : expand(e),
ords : map('first, gatherargs(e,bessel_j)),
minord : lmin(ords),
maxord : lmax(ords),
if maxord - minord < 2 then e else (
prd : buildq([n,minord], lambda([n,x], n >= minord + 2)),
besselcrunch(opsubstif(bessel_reduce_order, prd, e))));

When I run the first example:

(%i4) besselcrunch((-(1+2*n)*bessel_j(n,x))/x+bessel_j(1+n,x)+bessel_j(n-1,x));

Maxima encountered a Lisp error:

Expected a maxima function designator but got NIL.

Automatically continuing.
To reenable the Lisp debugger set *debugger-hook* to nil.

NOTICE
This e-mail and any attachments are private and confidential and may contain privileged information. If you are not an authorised recipient, the copying or distribution of this e-mail and any attachments is prohibited and you must not read, print or act in reliance on this e-mail or attachments.
This notice should not be removed.

```