Main Content

besseli

Modified Bessel function of first kind

Description

I = besseli(nu,Z) computes the modified Bessel function of the first kind Iν(z) for each element in array Z.

example

I = besseli(nu,Z,scale) specifies whether to exponentially scale the modified Bessel function of the first kind to avoid overflow or loss of accuracy. If scale is 1, then the output of besseli is scaled by the factor exp(-abs(real(Z))).

example

Examples

collapse all

Define the domain.

z = 0:0.01:5;

Calculate the first five modified Bessel functions of the first kind. Each row of I contains the values of one order of the function evaluated at the points in z.

I = zeros(5,501);
for nu = 0:4
    I(nu+1,:) = besseli(nu,z);
end

Plot all of the functions in the same figure.

plot(z,I)
axis([0 5 0 8])
grid on
legend('I_0','I_1','I_2','I_3','I_4','Location','NorthWest')
title('Modified Bessel Functions of the First Kind for $\nu \in [0,4]$','interpreter','latex')
xlabel('z','interpreter','latex')
ylabel('$I_\nu(z)$','interpreter','latex')

Figure contains an axes object. The axes object with title Modified Bessel Functions of the First Kind for nu in bracketleft 0 , 4 bracketright, xlabel z, ylabel I indexOf nu baseline leftParenthesis z rightParenthesis contains 5 objects of type line. These objects represent I_0, I_1, I_2, I_3, I_4.

Calculate the scaled modified Bessel function of the first kind Iν(z)e-|Re[Z]| for values of z in the interval [0,20] and for orders ν between 0 and 3.

z = linspace(0,20);
scale = 1;
Is = zeros(4,100);
for nu = 0:3
  Is(nu+1,:) = besseli(nu,z,scale);
end

Plot all of the functions in the same figure. For large values of z, the scaled functions do not overflow the limits of double precision, extending their range of computability compared to the unscaled functions.

plot(z,Is)
legend('I_0','I_1','I_2','I_3')
title('Scaled Mod. Bessel Functions of the First Kind for $\nu \in \left[0, 3 \right]$','interpreter','latex')
xlabel('z','interpreter','latex')
ylabel('$e^{-|{z}|} \cdot I_\nu(z)$','interpreter','latex')

Figure contains an axes object. The axes object with title Scaled Mod. Bessel Functions of the First Kind for nu in bracketleft 0 , 3 bracketright, xlabel z, ylabel e toThePowerOf minus verticalbar z verticalbar baseline cdot I indexOf nu baseline leftParenthesis z rightParenthesis contains 4 objects of type line. These objects represent I_0, I_1, I_2, I_3.

Input Arguments

collapse all

Equation order, specified as a scalar, vector, matrix, or multidimensional array. nu is a real number that specifies the order of the modified Bessel function of the first kind. nu and Z must be the same size, or one of them can be scalar.

Example: besseli(3,Z)

Data Types: single | double

Functional domain, specified as a scalar, vector, matrix, or multidimensional array. besseli is real-valued where Z is positive. nu and Z must be the same size, or one of them can be scalar.

Example: besseli(nu,[1-1i 1+0i 1+1i])

Data Types: single | double
Complex Number Support: Yes

Toggle to scale function, specified as one of these values:

  • 0 (default) — No scaling

  • 1 — Scale the output of besseli by exp(-abs(real(Z)))

The magnitude of besseli grows rapidly as the value of abs(real(Z)) increases, so exponentially scaling the output is useful for large values of abs(real(Z)), where the results otherwise quickly lose accuracy or overflow the limits of double precision.

Example: besseli(nu,Z,1)

More About

collapse all

Modified Bessel Functions

This differential equation, where ν is a real constant, is called the modified Bessel's equation:

z2d2ydz2+zdydz(z2+ν2)y=0.

Its solutions are known as modified Bessel functions.

The modified Bessel functions of the first kind, denoted Iν(z) and Iν(z), form a fundamental set of solutions of the modified Bessel's equation. Iν(z) is defined by

Iν(z)=(z2)ν(k=0)(z24)kk!Γ(ν+k+1).

The modified Bessel functions of the second kind, denoted Kν(z), form a second solution independent of Iν(z) given by

Kν(z)=(π2)Iν(z)Iν(z)sin(νπ).

You can compute the modified Bessel functions of the second kind using besselk.

References

[1] Amos, D. E. “Algorithm 644: A Portable Package for Bessel Functions of a Complex Argument and Nonnegative Order.” ACM Transactions on Mathematical Software 12, no. 3 (September 1986): 265–273. https://dl.acm.org/doi/10.1145/7921.214331.

Extended Capabilities

Version History

Introduced before R2006a