什么是斯特鲁夫函数?
斯特鲁夫函数记作 \(\mathbf{H}_{\text{v}}(\text{x})\),是数学物理中广泛出现的一类特殊函数。它以天文学家赫尔曼·斯特鲁夫(Hermann Struve)的名字命名,是非齐次贝塞尔微分方程的一个特解。在声学(振动活塞的辐射问题)、流体力学、电磁学以及非定常空气动力学中,你都会遇到它的身影。本计算器可计算任意实数阶 v 与自变量 x 对应的 \(\mathbf{H}_{\text{v}}(\text{x})\)。
计算公式
斯特鲁夫函数由如下收敛幂级数定义:
$$\mathbf{H}_{\text{v}}\!\left(\text{x}\right) = \sum_{k=0}^{\infty} \frac{(-1)^{k}}{\Gamma\!\left(k+\frac{3}{2}\right)\,\Gamma\!\left(k+\text{v}+\frac{3}{2}\right)} \left(\frac{\text{x}}{2}\right)^{2k+\text{v}+1}$$
其中 \(\Gamma\) 为伽马函数。该级数对所有实数 x 均收敛,但当 \(|x|\) 较大时需要很多项才能收敛,此时采用渐近展开会更高效。本工具直接对级数求和,伽马因子使用兰乔斯(Lanczos)近似计算,并通过稳定的逐项比值递推来避免数值溢出。
使用方法
输入阶数 v(任意实数)和自变量 x。当阶数为非整数时,请保持 \(x \ge 0\),因为此时 \(\left(\frac{x}{2}\right)^{v+1}\) 在 x 为负值时会变为复数。点击「计算」即可得到 \(\mathbf{H}_{\text{v}}(\text{x})\)。两个输入均为无量纲的纯数值。
计算实例
取默认值 \(v = 0\)、\(x = 1\)。此时 \(\text{half} = 0.5\),\(\text{half}^2 = 0.25\),前置因子 \(\left(\frac{x}{2}\right)^{v+1} = 0.5\)。级数前几项分别为 \(1.273239545\)、\(-0.141471061\)、\(0.005658842\)、\(-0.000115487\)……累加约为 \(1.137313265\)。再乘以前置因子 \(0.5\),得到 \(\mathbf{H}_0(1) \approx 0.5686566\),与已知的高精度数值 \(0.56865663339780\) 完全吻合。
常见问题
v 可以是负数或分数吗?可以。该级数对任意实数 v 都成立,唯一的例外是当 \(v + \frac{3}{2}\) 为非正整数时(即 \(v = -1.5\)、\(-2.5\)……);在这些情形下,伽马函数的倒数会使相应项自动归零,本工具已自动处理。
x = 0 时会怎样?当 \(v > -1\) 时,由于前置因子 \(\left(\frac{x}{2}\right)^{v+1}\) 为零,函数值为 0,计算器会直接返回 0。
对较大的 x 精度如何?当 \(|x|\) 超过约 30 时,幂级数因正负项相消会损失精度。对于非常大的自变量,采用渐近展开能获得更好的结果。