Main Content

besselh

第三类 Bessel 函数(Hankel 函数)

说明

示例

H = besselh(nu,Z) 为数组 Z 中的每个元素计算第一类 Hankel 函数 Hν(1)(z)=Jν(z)+iYν(z)

示例

H = besselh(nu,K,Z) 为数组 Z 中的每个元素计算第一类或第二类 Hankel 函数 Hν(K)(z),其中 K12

示例

H = besselh(nu,K,Z,scale) 指定是否缩放 Hankel 函数以避免溢出或精度损失。如果 scale1,则第一类 Hankel 函数 Hν(1)(z)eiZ 进行缩放,第二类 Hankel 函数 Hν(2)(z)e+iZ 进行缩放。

示例

全部折叠

生成 Hankel 函数 H0(1)(z)[1] 的模和相位的等高线图。

创建一个由域值构成的网格。

[X,Y] = meshgrid(-4:0.002:2,-1.5:0.002:1.5);

在此域中计算 Hankel 函数并生成模量等高线图。

H = besselh(0,X+1i*Y);
contour(X,Y,abs(H),0:0.2:3.2)
hold on

Figure contains an axes object. The axes object contains an object of type contour.

在同一图窗中,添加该相位的等高线图。

contour(X,Y,rad2deg(angle(H)),-180:10:180)
hold off

Figure contains an axes object. The axes object contains 2 objects of type contour.

绘制第二类 Hankel 函数的实部和虚部,并检查其渐近行为。

计算区间 [0.1, 25] 中的第二类 Hankel 函数 H0(2)(z)=J0(z)-iY0(z)

k = 2;
nu = 0;
z = linspace(0.1,25,200);
H = besselh(nu,k,z);

绘制函数的实部和虚部。在同一图窗中,绘制线性组合 J02(z)+Y02(z),这将显示实部和虚部的幅值的渐近行为。

plot(z,real(H),z,imag(H))
grid on
hold on
M = sqrt(real(H).^2 + imag(H).^2);
plot(z,M,'--')
legend('$J_0(z)$', '$Y_0(z)$', '$\sqrt{J_0^2 (z) + Y_0^2 (z)}$','interpreter','latex')

Figure contains an axes object. The axes object contains 3 objects of type line. These objects represent $J_0(z)$, $Y_0(z)$, $\sqrt{J_0^2 (z) + Y_0^2 (z)}$.

计算复平面上呈指数缩放的 Hankel 函数 H1(2)(z) eiz,并将其与未缩放的函数进行比较。

计算复平面上的二阶未缩放 Hankel 函数。当 z 的正虚部较大时,函数的值很快就会发散。这种现象限制了可计算值的范围。

k = 2;
nu = 1;
x = -5:0.4:15;
y = x';
z = x + 1i*y;
scaled = 1;
H = besselh(nu,k,z);
surf(x,y,imag(H))
xlabel('real(z)')
ylabel('imag(z)')

Figure contains an axes object. The axes object contains an object of type surface.

现在,计算复平面上的 H1(2)(z) eiz,并将其与未缩放的函数进行比较。当 z 的正虚部较大时,经过缩放的函数通过避免溢出和精度损失来增大可计算值的范围。

Hs = besselh(nu,k,z,scaled);
surf(x,y,imag(Hs))
xlabel('real(z)')
ylabel('imag(z)')

Figure contains an axes object. The axes object contains an object of type surface.

输入参数

全部折叠

方程的阶,指定为标量、向量、矩阵或多维数组。nu 指定 Hankel 函数的阶。nuZ 的大小必须相同,或者其中一个可以为标量。

示例: besselh(3,Z)

数据类型: single | double

Hankel 函数的类别,指定为 12

  • 如果 K = 1,则 besselh 计算第一类 Hankel 函数 Hν(1)(z)=Jν(z)+iYν(z)

  • 如果 K = 2,则 besselh 计算第二类 Hankel 函数 Hν(2)(z)=Jν(z)iYν(z)

示例: besselh(nu,2,Z)

函数的域,指定为标量、向量、矩阵或多维数组。nuZ 的大小必须相同,或者其中一个可以为标量。

示例: besselh(nu,[1-1i 1+0i 1+1i])

数据类型: single | double
复数支持:

切换到缩放函数,指定为下列值之一:

  • 0(默认值)- 无缩放

  • 1 - 根据 K 的值缩放 besselh 的输出:

    • 如果 K = 1,则按 eiZ 缩放第一类 Hankel 函数 Hν(1)(z)

    • 如果 K = 2,则按 e+iZ 缩放第二类 Hankel 函数 Hν(2)(z)

    在复平面上,当 imag(Z) 为大的负值时,Hν(1)(z) 溢出。同样,当 imag(Z) 为大的正值时,Hν(2)(z) 也会溢出。在这两种情况下,呈指数缩放 besselh 的输出很有用,因为如果不这样处理,则函数会很快损失精度或上溢超出双精度的限制。

示例: besselh(nu,K,Z,1)

详细信息

全部折叠

Hankel 函数和 Bessel 方程

以下微分方程(其中 ν 是实数常量)称为 Bessel 方程

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

它的解称为 Bessel 函数

第一类 Bessel 函数(表示为 Jν(z)J–ν(z))构成非整数 ν 的 Bessel 方程的一组基本解。第二类 Bessel 函数(表示为 Yν(z))构成 Bessel 方程的另一个解(与 Jν(z) 线性无关),它由以下方程定义:

Yν(z)=Jν(z)cos(νπ)Jν(z)sin(νπ).

第三类 Bessel 函数(也称为第一类和第二类 Hankel 函数)由 Bessel 函数的线性组合定义,其中 Jν(z)besseljYν(z)bessely,如下所示:

Hν(1)(z)=Jν(z)+iYν(z)Hν(2)(z)=Jν(z)iYν(z).

参考

[1] Abramowitz, M., and I.A. Stegun. Handbook of Mathematical Functions. National Bureau of Standards, Applied Math. Series #55, Dover Publications, 1965.

扩展功能

版本历史记录

在 R2006a 之前推出

另请参阅

| | |