Bessel functions of the first kind
MuPAD® notebooks are not recommended. Use MATLAB® live scripts instead.
MATLAB live scripts support most MuPAD functionality, though there are some differences. For more information, see Convert MuPAD Notebooks to MATLAB Live Scripts.
besselJ(v, z) represents the 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
float(x)) rather than
In particular, for half integer indices the symbolic result
costly to compute. Further, floating-point evaluation of the resulting
symbolic expression may 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), besselJ(0, x), besselJ(v, x)
Floating point values are returned for floating-point arguments:
besselJ(2, 5.0), besselJ(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), besselJ(3/2, x)
besselJ(5/2, x), besselJ(-5/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:
besselJ(-3/4, -1.2), besselJ(-3/4, -1.2 + I/10^10), besselJ(-3/4, -1.2 - I/10^10)
The symbolic expressions returned by Bessel functions with half integer indices can 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 + besselJ(17, sqrt(PI))))
limit(besselJ(2, x^2 + 1)*sqrt(x), x = infinity)
series(besselJ(1, x), x = infinity, 3)
The Bessel functions are regular (holomorphic) functions of z throughout the z-plane cut along the negative real axis, and for fixed z ≠ 0, each is an entire (integral) function of v.
Jv (z) and Yv (z) satisfy Bessel's equation in w(v, z):
When the index v is an integer, the Bessel functions of the first kind are governed by reflection formulas: