Jacques Gélinas on Tue, 17 Oct 2017 20:04:55 +0200


[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Date Index] [Thread Index]

RE: Bessel series


> If you need the value at 0

Actually, I need values near 0, and the besselj series provides an elegant solution !
This seems to work:

H(p,x) ={
  if( abs(x) < 1. << - (bitprecision(1.)/2),
      eval(Pol(besselj(p,'x+O('x^3)))),
      gamma(p+1)*besselj(p,x)/(x/2)^p );
}


Thanks,

Jacques Gélinas







De : Bill Allombert <Bill.Allombert@math.u-bordeaux.fr>
Envoyé : 17 octobre 2017 05:49
À : pari-users@pari.math.u-bordeaux.fr
Objet : Re: Bessel series
    
On Tue, Oct 17, 2017 at 12:17:17AM +0000, Jacques Gélinas wrote:
> How can I compute the entire function  H_p(x) = Gamma(p+1) J_p(x) / (x/2)^p 
> where J_p denotes the Bessel-J function, and p >  -1 ?
> For example, H_{-1/2} = cos, H_{1/2} = sinc.
> 
> # besselj(-1/2,0)
>   *** besselj: domain error in gpow(0,n): n <= 0

If you need the value at 0, you need to use the power series expanssion
taking into account the documentation:

  If x converts to a power series,  the initial factor
  (x/2)^nu/Gamma(nu+1)  is omitted  (since it cannot be represented in
  PARI when nu is not integral).

So 
? besselj(-1/2,O(x))
%11 = 1+O(x^2)

Maybe you want this:
H(p,x) = if(x,gamma(p+1)*besselj(p,x)/(x/2)^p,polcoeff(besselj(p,O('x)),0))

Cheers,
Bill.