Bill Allombert on Mon, 23 Sep 2024 20:40:07 +0200


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

Re: How to compute functions defined by recurrences?


On Mon, Sep 23, 2024 at 05:05:54PM +0200, kevin lucas wrote:
> In some recent work I found myself having to investigate the asymptotics of
> the Debye polynomials, which I will here take as *defined* by the following
> integrodifferential recurrence:
> 
> $D_{n+1}(x)= \frac{1}{2}x^2(1-x)^2D'_n(x) +
> \frac{1}{8}\int_0^x(1-5t^2)D_n(t)dt$
> with $D_0(x)=1$

You can compute them with 

D(n)=
{
  my(d=1);
  for(i=1,n,d=x^2*(1-x)^2*(d')/2 + intformal((1-5*x^2)*d)/8);
  d
}

If you want the low-degree monomial only, you can do

Ds(n,l)=
{
  my(d=1+O(x^(l+1));
  for(i=1,n,d=x^2*(1-x)^2*(d')/2 + intformal((1-5*x^2)*d)/8);
  d
}

If you want the high degree term it is possible but requires
some manual computation (PARI does not know how to integrate 
x^n when n is a parameter).

Consider the operator from Q(x) to Q(x): 
F: $f \mapsto \frac{1}{2}x^2(1-x)^2f' + \frac{1}{8}\int_0^x(1-5t^2)fdt$

This linear operator has the property that 
if deg f > deg g, then deg F(f) > deg F(g),
which allows you to compute a formula for the leading term just by computing
the leading monomial of F(x^n) which is (n/2-5/(n+3)/8)*x^(3+n).

So we find that deg D_n = 3*n and that the

lc(D(n+1))*x^(3*(n+1))= lc(F(D(n)) = (3*n/2-5/(3*n+3)/8 * lc(D(n))

so we find that 

lc(D(n)) = prod(k=0, n-1 ,3*k/2-5/(3*k+3)/8)

So for example lc(D(1000)) is

? prod(n=0,999,3*n/2-5/(3*n+3)/8,1.)
%115 = -5.9847352224227929579864664579708515576E2739

You could use the same method for the coefficients of degree 3*n-1, 3*n-2 etc.

Cheers,
Bill