Modified Bessel function of first kind
I = besseli(
computes the modified Bessel function of the first kind
Iν(z) for each element in array nu,Z)Z.
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. The axes with title Modified Bessel Functions of the First Kind for $\nu \in [0,4]$ contains 5 objects of type line. These objects represent I_0, I_1, I_2, I_3, I_4.](../../examples/matlab/win64/PlotModifiedBesselFunctionsOfFirstKindExample_01.png)
Calculate the scaled modified Bessel function of the first kind for values of in the interval 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 , 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. The axes with title Scaled Mod. Bessel Functions of the First Kind for $\nu \in \left[0, 3 \right]$ contains 4 objects of type line. These objects represent I_0, I_1, I_2, I_3.](../../examples/matlab/win64/CalculateScaledModBesselFirstKindExample_01.png)
nu — Equation orderEquation 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
Z — Functional domainFunctional 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
scale — Toggle to scale function0 (default) | 1Toggle 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)
This differential equation, where ν is a real constant, is called the modified Bessel's equation:
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
The modified Bessel functions of the second kind, denoted Kν(z), form a second solution independent of Iν(z) given by
You can compute the modified Bessel functions of the second kind using besselk.
This function fully supports tall arrays. For more information, see Tall Arrays.
Usage notes and limitations:
Always returns a complex result.
Strict single-precision calculations are not supported. In the generated code, single-precision inputs produce single-precision outputs. However, variables inside the function might be double-precision.
Usage notes and limitations:
Always returns a complex result.
Strict single-precision calculations are not supported. In the generated code, single-precision inputs produce single-precision outputs. However, variables inside the function might be double-precision.
This function fully supports distributed arrays. For more information, see Run MATLAB Functions with Distributed Arrays (Parallel Computing Toolbox).
You have a modified version of this example. Do you want to open this example with your edits?