Asymptotic Expansion of besselI(x,nu) For Large x

Share:

Description

Compute Bessel function I[nu](x) and K[nu](x) for large x and small or moderate nu, using the asymptotic expansion (9.7.1), p.377 of Abramowitz & Stegun, for x -> Inf, even valid for complex x,

I_a(x) = exp(x) / sqrt(2*pi*x)* f(x, a),

where

f(x,a) = 1 - (mu-1) / (8x) + (mu-1)(mu-9) / (2! (8x)^2) - ...,

and mu = 4*a^2 and |arg(x)| < π/2.

Whereas besselIasym(x,a) computes I_a(x), besselI.ftrms returns the corresponding terms in the series expansion of f(x,a) above.

Usage

1
2
besselIasym  (x, nu, k.max = 10, expon.scaled = FALSE, log = FALSE)
besselI.ftrms(x, nu, K = 20)

Arguments

x

numeric, >= 0.

nu

numeric; The order (maybe fractional!) of the corresponding Bessel function.

k.max, K

integer number of terms in the expansion.

expon.scaled

logical; if TRUE, the results are exponentially scaled in order to avoid overflow.

log

logical; if TRUE, \log(f(.)) is returned instead of f.

Details

......... FIXME ...

Value

a numeric vector of the same length as x.

Author(s)

Martin Maechler

References

Abramowitz, M., and Stegun, I. A. (1955, etc). Handbook of mathematical functions (NBS AMS series 55, U.S. Dept. of Commerce).

See Also

From this package Bessel() BesselI(); further, besselI.nuAsym() which is useful when ν is large (as well); further base besselI, etc

Examples

1
2
3
4
5
6
7
x <- c(1:10, 20, 50, 100^(2:10))
nu <- c(1, 10, 20, 50, 100)

r <- lapply(c(0:4,10,20), function(k.)
            sapply(nu, function(n.)
                  besselIasym(x, nu=n., k.max = k., log = TRUE)))
warnings()