シュトルーベ関数とは
シュトルーベ関数 \(\mathbf{H}_{v}(x)\) は、非同次ベッセル方程式の特殊解として現れる特殊関数です。音響、流体力学、光学、電磁気学などの問題で、通常のベッセル関数とともに登場します。本ツールは、任意の実数次数 \(v\) に対する \(\mathbf{H}_{v}(x)\) を、指定した \(x\) の数列にわたって数表化します。これにより、振動しながらゆるやかに減衰していく関数の振る舞いを確認できます。純粋な数学的関数のため、地域や単位系に依存せず、どこでも同じ結果が得られます。
使い方
次の4つの値を入力します。次数 \(v\)(シュトルーベ関数の次数)、\(x\) の初期値(最初の引数)、増分(隣り合う \(x\) の間隔)、繰り返し回数(生成する行数)です。数表には各引数 \(x_{i} = \text{初期値} + i \times \text{増分}\) と、対応する値 \(\mathbf{H}_{v}(x_{i})\) が一覧表示されます。初期設定(\(v = 0\)、初期値 = -10、増分 = 0.2、回数 = 101)では、\(x\) を -10 から +10 まで掃引する 101 点が得られます。
計算式の解説
値は上に示した冪級数から直接評価されます。$$\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}\) を2つのガンマ関数の積 \(\Gamma(k + 3/2)\) と \(\Gamma(k + v + 3/2)\) で割ったものです。ガンマ関数は数値的に安定なランチョス近似で計算し、引数が非正の場合は反射公式 $$\Gamma(z) = \frac{\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\) のとき、前置係数 \(\left(\frac{x}{2}\right)^{v+1}\) は \(x = 0\) でゼロになるため、\(\mathbf{H}_{v}(0) = 0\) です。
負の値や非整数の次数も使えますか? 使えます。ただし、\(x\) が負で \(v\) が非整数の場合は関数値が複素数になるため、その行は非数(NaN)として表示されます。\(v = 0\) や整数次数の場合は数表全体が実数のまま保たれます。
精度はどの程度ですか? 直接級数は初期設定の範囲では非常に高精度です。\(|x|\) が非常に大きい場合(おおむね 30 を超える場合)は多くの項が必要となり、漸近展開を用いる方が適しています。