2026a

# besselh


用于符号表达的第三类贝塞尔函数(汉克尔函数)

函数库: TySymbolicMath

# 语法

H = besselh(nu,K,z)

H = besselh(nu,z)

H = besselh(nu,K,z,1)

# 说明

H = besselh(nu,K,z) 对复数数组 z 的每个元素计算汉克尔函数 ,其中 K 为 1 或 2。如果任意一个输入参数是符号类型,则输出 H 具有符号数据类型。参见贝塞尔方程示例

H = besselh(nu,z) 此时 K = 1。示例

H = besselh(nu,K,z) 如果 K = 1,汉克尔函数 需要乘以 exp(-imz);如果 K = 1,汉克尔函数 需要乘以 exp(imz)。示例

# 示例

计算汉克尔函数
using TySymbolicMath
@variables z
H = besselh(3/2,1,z)
H = SpecialFunctions.besselj(1.5, z) + im*SpecialFunctions.bessely(1.5, z)

在 z = 1 + 2im 处对函数进行数值求值。

Hval = besselh(3/2,1,1 + 2im)
Hval = -0.08495334128058647 - 0.056674847869835586im

指定不带第二个参数的函数,即 K = 1。

H2 = besselh(3/2,z)
H2 = SpecialFunctions.besselj(1.5, z) + im*SpecialFunctions.bessely(1.5, z)

请注意,函数 H 和 H2 是相同的。

通过对函数输入四个参数来用 对函数进行放缩。

Hnew = besselh(3/2,1,z,1)
Hnew = -SpecialFunctions.bessely(1.5, z)*sin(-z) + cos(-z)*SpecialFunctions.besselj(1.5, z) + im*(SpecialFunctions.bessely(1.5, z)*cos(-z) + SpecialFunctions.besselj(1.5, z)*sin(-z))

对 H 进行求导:

diffH = derivative(H,z)
diffH = (1//2)*(SpecialFunctions.besselj(0.5, z) - SpecialFunctions.besselj(2.5, z)) + (1//2)*im*(SpecialFunctions.bessely(0.5, z) - SpecialFunctions.bessely(2.5, z))

求 diffH 在 z = 2.5 处的值。

substitute(diffH, Dict([z => 2.5]))
ans = -0.013043252736036348 + 0.4884544533391028im

# 输入参数

nu - 汉克尔函数阶数
数组 | 符号数组

汉克尔函数阶数,指定为数组或符号数组。如果 nu 和 z 是相同大小的数组,则结果也是相同大小的数组。如果任一输入是标量,besselh 函数会将其扩展到另一输入的大小。

示例:nu = 3/2,nu = Num(3/2)

K - 汉克尔函数的种类
1 | 2

汉克尔函数的种类,指定为1或2。K 确定添加的贝塞尔函数 的符号。

示例:K = 1

z - 汉克尔函数参数
数组 | 符号数组

汉克尔函数参数,指定为数组或符号数组。如果 nu 和 z 是相同大小的数组,则结果也是相同大小的数组。如果任一输入是标量,besselh 函数会将其扩展到另一输入的大小。

示例:z = 1+im,z = Num(1)+im

# 详细信息

贝塞尔方程

微分方程:

其中 ν 是一个实常数,这个方程被称为贝塞尔方程,其解被称为贝塞尔函数。

构成了贝塞尔方程对于非整数 ν 的一组基本解。 是贝塞尔方程的第二个解,与 线性无关,定义如下:

汉克尔函数和贝塞尔函数之间的关系是:

其中, 是 besselj, 是 bessely。

# 另请参阅

besselhx | besseli | besselj | besselk | bessely