Function: asympnum Section: sums C-Name: asympnum0 Prototype: GD0,L,DGp Help: asympnum(expr,{k=20},{alpha = 1}): asymptotic expansion of expr assuming it has rational coefficients with reasonable height; k and alpha are as in extnum. Doc: Asymptotic expansion of \var{expr}, corresponding to a sequence $u(n)$, assuming it has the shape $$u(n) \approx \sum_{i \geq 0} a_i n^{-i\alpha}$$ with rational coefficients $a_i$ with reasonable height; the algorithm is heuristic and performs repeated calls to limitnum, with \kbd{k} and \kbd{alpha} are as in \kbd{limitnum} \bprog ? f(n) = n! / (n^n*exp(-n)*sqrt(n)); ? asympnum(f) %2 = [] \\ failure ! ? l = limitnum(f) %3 = 2.5066282746310005024157652848110452530 ? asympnum(n->f(n)/l) \\ normalize %4 = [1, 1/12, 1/288, -139/51840] @eprog\noindent and we indeed get a few terms of Stirling's expansion. Note that it helps to normalize with a limit computed to higher accuracy: \bprog ? \p100 ? L = limitnum(f) ? \p38 ? asympnum(n->f(n)/L) \\ we get more terms! %6 = [1, 1/12, 1/288, -139/51840, -571/2488320, 163879/209018880,\ 5246819/75246796800, -534703531/902961561600] @eprog\noindent If \kbd{alpha} is not an integer, loss of accuracy is expected, so it should be precomputed to double accuracy, say: \bprog ? \p38 ? asympnum(n->-log(1-1/n^Pi),,Pi) %1 = [0, 1, 1/2, 1/3] ? asympnum(n->-log(1-1/sqrt(n)),,1/2) %2 = [0, 1, 1/2, 1/3, 1/4, 1/5, 1/6, 1/7, 1/8, 1/9, 1/10, 1/11, 1/12, \ 1/13, 1/14, 1/15, 1/16, 1/17, 1/18, 1/19, 1/20, 1/21, 1/22] ? localprec(100); a = Pi; ? asympnum(n->-log(1-1/n^a),,a) \\ better ! %4 = [0, 1, 1/2, 1/3, 1/4, 1/5, 1/6, 1/7, 1/8, 1/9, 1/10, 1/11, 1/12] @eprog \synt{asympnum}{void *E, GEN (*u)(void *,GEN,long), long muli, GEN alpha, long prec}, where \kbd{u(E, n, prec)} must return $u(n)$ in precision \kbd{prec}. Also available is \fun{GEN}{asympnum0}{GEN u, long muli, GEN alpha, long prec}, where $u$ must be a vector of sufficient length as above.