Work on the Confluent hypergeometric function



When you get a chance, run share_testsuite. There is some interaction
between hgfred
and the code in hypergeometric.lisp.

Barton



-----maxima-bounces at math.utexas.edu wrote: -----

>To: Maxima List <maxima at math.utexas.edu>
>From: Dieter Kaiser <drdieterkaiser at web.de>
>Sent by: maxima-bounces at math.utexas.edu
>Date: 01/02/2010 09:10PM
>Subject: Work on the Confluent hypergeometric function
>
>I have done some work on the confluent hypergeometric function:
>
>1.  More consequently inserting simplifying code,
>    e.g. (list '(%erf) x)-> (take '(%erf) x)
>2.  Do a mfuncall to get simplified polynomials.
>3.  Replace subst with maxima-substitute to get correct substitution.
>4.  At places where we get complicated and nested expressions call
>    sratsimp.
>5.  Use in general a gensym, not 'yannis.
>6.  Use flags like gamma_expand and bessel_reduce to simplify further.
>7.  Use more simplifying functions like pochhammer.
>
>There a lot of examples which now simplifies much better. Furthermore,
>numbers as an argument to hgfred for the 1F1 hypergeometric function are
>no longer a problem.
>
>
>The following algorithm have been implemented in addition:
>
>8.  1F1(a; c; 0) to handle a zero argument completely.
>
>Example:
>
>(%i1) hgfred([a],[c],0);
>(%o1) 1
>
>
>9.  1F1(a; 1; z) for a not an integer or a half integral value.
>
>Example:
>
>(%i3) hgfred([a],[1],x);
>(%o3) laguerre(-a,x)
>
>
>10. 1F1(1/2+n; m; z) and 1F1(1/2-n; m; z), n,m integer:
>    These expand in terms of bessel_i functions. We now get results for
>    1F1(-3/2,1,z) or 1F1(3/2,1,z)
>
>Examples:
>
>(%i4) hgfred([-3/2],[1],x);
>(%o4) -((2*bessel_i(1,x/2)-2*bessel_i(0,x/2))*x^2
>       +(6*bessel_i(0,x/2)-4*bessel_i(1,x/2))*x-3*bessel_i(0,x/2))
>       *%e^(x/2)
>       /3
>
>(%i5) hgfred([3/2],[1],x);
>(%o5) ((bessel_i(1,x/2)+bessel_i(0,x/2))*x+bessel_i(0,x/2))*%e^(x/2)
>
>With this extension Maxima can evaluate all Confluent hypergeometric
>functions for integer and half integral values. The code uses the
>functionality to reduce the bessel_i function to lowest order (new flag
>$bessel_reduce). Without this reduction the results can be much more
>complicated.
>
>
>11. 1F1(a; 2*a-n) and 1F1(a; 2*a+n) for a not an integer or half
>    integral value. We get results for expressions like
>    1F1(1/3; -1/3; z) and 1F1(1/3; 5/3; z), ...
>
>Examples:
>
>(%i6) hgfred([1/3],[-1/3],x);
>(%o6) -(3*bessel_i(-1/6,x/2)+3*bessel_i(-7/6,x/2))*gamma(5/6)*x^(7/6)
>      *%e^(x/2)/2^(4/3)
>
>(%i7) hgfred([1/3],[5/3],x);
>(%o7) -(2^(2/3)*gamma(5/6)*bessel_i(5/6,x/2)
>       -2^(2/3)*bessel_i(-1/6,x/2)*gamma(5/6))
>       *x^(1/6)*%e^(x/2)/2
>
>
>12. Introducing a flag $prefer_gamma_incomplete, when T return results
>    in terms of gamma_incomplete and not %gammagreek.
>
>Example:
>
>(%i8) hgfred([a],[a+1],-z),prefer_gamma_incomplete:true;
>(%o8) -(a*gamma_incomplete(a,z)-a*gamma(a))/z^a
>
>Maxima has more knowledge about the gamma_incomplete function.
>Therefore, it might be preferable to get results in terms of
>gamma_incomplete.
>
>
>The examples in rtesthyp.mac are updated. More examples for the
>confluent hypergeometic function have been added.
>
>In rtest_hypgeo.mac problem 61 gives a different result in terms of
>bessel_i, because the hypergeometric function hgfred([7/3],[5/3],z) is
>known in addition.
>
>In rtest16.mac problem 138 the laguerre function simplifies to a
>polynomial.
>
>Dieter Kaiser
>
>
>_______________________________________________
>Maxima mailing list
>Maxima at math.utexas.edu
>http://www.math.utexas.edu/mailman/listinfo/maxima