什么是斯特鲁夫函数?
斯特鲁夫函数 \(\mathbf{H}_{v}(x)\) 是一种特殊函数,它是非齐次贝塞尔方程的一个特解。这个函数常常出现在声学、流体力学、光学和电磁学等问题中,通常与普通的贝塞尔函数一同登场。本计算器可以列出任意实数阶 \(v\) 的斯特鲁夫函数 \(\mathbf{H}_{v}(x)\) 在一段指定 \(x\) 取值序列上的数值表,方便你观察它那种振荡且缓慢衰减的特性。它属于纯数学范畴,普遍适用,不依赖任何地区或单位制。
如何使用本计算器
请输入四个数值:阶数 \(v\)(斯特鲁夫函数的阶)、\(x\) 的初始值(第一个自变量)、步长(相邻 \(x\) 值之间的间隔)以及重复次数(要生成多少行)。随后表格会逐行列出每个自变量 \(x_{i} = \text{startX} + i \times \text{stepX}\) 及其对应的函数值 \(\mathbf{H}_{v}(x_{i})\)。使用默认值(\(v = 0\),起始值 \(= -10\),步长 \(= 0.2\),行数 \(= 101\))时,你会得到 101 个数据点,使 \(x\) 从 \(-10\) 扫到 \(+10\)。
公式解析
函数值直接由上方所示的幂级数求得。
$$\mathbf{H}_{v}(x) = \left(\frac{x}{2}\right)^{v+1} \sum_{k=0}^{\infty} \frac{(-1)^{k}\left(\frac{x}{2}\right)^{2k}}{\Gamma\!\left(k+\frac{3}{2}\right)\,\Gamma\!\left(k+v+\frac{3}{2}\right)}$$令 \(t = x/2\),则前置因子为 \(t^{v+1}\),每一项为 \((-1)^{k} t^{2k}\) 除以两个伽马函数的乘积,即 \(\Gamma(k + 3/2)\) 与 \(\Gamma(k + v + 3/2)\)。伽马函数采用数值稳定的 Lanczos 近似计算;当其自变量为非正数时,使用反射公式 \(\Gamma(z) = \pi / (\sin(\pi z)\,\Gamma(1 - z))\)。在 \(|x|\) 适中时,这个交错级数收敛得很快。
实例演算
取 \(v = 0\)、\(x = 2\),则 \(t = 1\),前置因子为 1。将级数逐项相加:
$$1.273240 - 0.565884 + 0.090542 - 0.007391 + 0.000365 - \ldots \approx 0.79066$$于是 \(\mathbf{H}_{0}(2) \approx 0.79066\),与标准参考值一致。
常见问题
\(\mathbf{H}_{v}(0)\) 等于多少?对于任意阶 \(v > -1\),前置因子 \((x/2)^{v+1}\) 在 \(x = 0\) 处为零,因此 \(\mathbf{H}_{v}(0) = 0\)。
能使用负数阶或非整数阶吗?可以。当 \(x\) 为负且 \(v\) 为非整数时,函数值会变为复数,因此这些行会以非数字(NaN)形式标出;而当 \(v = 0\) 或为整数阶时,整张表都保持为实数。
计算精度如何?在默认范围内,直接级数法精度很高。但对于 \(|x|\) 非常大的情形(大约超过 30),就需要累加很多项,此时改用渐近展开式会更合适。