Modified Bessel functions of the first kind
This functionality does not run in MATLAB.
besselI(v, z) represents the modified Bessel functions of the first kind:
The Bessel functions are defined for complex arguments v and z.
A floating-point value is returned if either of the arguments is a floating-point number and the other argument is numerical. For most exact arguments the Bessel functions return an unevaluated function call. Special values at index v = 0 and/or argument z = 0 are implemented. Explicit symbolic expressions are returned, when the index v is a half integer. See Example 2.
For nonnegative integer indices v some of the Bessel functions have a branch cut along the negative real axis. A jump occurs when crossing this cut. See Example 3.
If floating-point approximations are desired for arguments that are exact numerical expressions, then we recommend to use besselI(v, float(x)) rather than float(besselI(v, x)). In particular, for half integer indices the symbolic result besselI(v,x) is costly to compute. Further, floating-point evaluation of the resulting symbolic expression can be numerically unstable. See Example 4.
When called with floating-point arguments, these functions are sensitive to the environment variable DIGITS which determines the numerical working precision.
Unevaluated calls are returned for exact or symbolic arguments:
besselJ(2, 1 + I), besselK(0, x), besselY(v, x)
Floating point values are returned for floating-point arguments:
besselI(2, 5.0), besselK(3.2 + I, 10000.0)
Bessel functions can be expressed in terms of elementary functions if the index is an odd integer multiple of :
besselJ(1/2, x), besselY(3/2, x)
besselI(7/2, x), besselK(-7/2, x)
The negative real axis is a branch cut of the Bessel functions for non-integer indices v. A jump occurs when crossing this cut:
besselI(-3/4, -1.2), besselI(-3/4, -1.2 + I/10^10), besselI(-3/4, -1.2 - I/10^10)
The symbolic expressions returned by Bessel functions with half integer indices may be unsuitable for floating-point evaluation:
y := besselJ(51/2, PI)
Floating point evaluation of this exact result is subject to numerical cancellation. The following result is dominated by round-off:
The numerical working precision has to be increased to obtain a more accurate result:
DIGITS:= 39: float(y)
Direct floating-point evaluation via the Bessel function yields a correct result within working precision:
DIGITS := 5: besselJ(51/2, float(PI))
delete y, DIGITS:
diff(besselJ(0, x), x, x), float(ln(3 + besselI(17, sqrt(PI))))
limit(besselJ(2, x^2 + 1)*sqrt(x), x = infinity)
series(besselY(3, x)/x, x = infinity, 3)
The modified Bessel functions Iv(z) and Kv(z) satisfy the modified Bessel equation:
When the index v is an integer, the modified Bessel functions of the first kind are governed by reflection formulas: