シュトルーベ関数とは
シュトルーベ関数(記号 \(\mathbf{H}_{\text{v}}(\text{x})\))は、数理物理学のさまざまな場面に現れる特殊関数です。天文学者ヘルマン・シュトルーベにちなんで名づけられ、非同次ベッセル微分方程式の特殊解として自然に導かれます。音響学(振動するピストンからの放射)、流体力学、電磁気学、非定常空気力学などで登場します。本計算機は、任意の実数の階数 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| が大きい場合は多くの項が必要となり、漸近展開を用いるほうが効率的です。本ツールでは級数を直接和し、ガンマ因子の計算にランチョス近似を、オーバーフローを避けるために安定した項比の漸化式を採用しています。
使い方
階数 v(任意の実数)と引数 x を入力してください。階数が整数でない場合は、\(\left(\frac{x}{2}\right)^{v+1}\) が負の x で複素数となるため、\(x \ge 0\) としてください。計算ボタンを押すと \(\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\) を掛けると \(H_0(1) \approx 0.5686566\) となり、既知の高精度値 \(0.56865663339780\) と一致します。
よくある質問
v は負の値や分数でもよいですか。 はい。級数は任意の実数 v に対して有効です。ただし \(v + \frac{3}{2}\) が 0 以下の整数となる場合(\(v = -1.5\)、\(-2.5\)、…)は例外で、そのときガンマ関数の逆数によって該当する項が自動的に 0 になります(この処理は自動で行われます)。
x = 0 のときはどうなりますか。 \(v > -1\) の場合、前係数 \(\left(\frac{x}{2}\right)^{v+1}\) が 0 になるため関数値は 0 となり、計算機は 0 を返します。
x が大きいときも正確ですか。 べき級数は |x| がおよそ 30 を超えると桁落ち(相殺)により精度が低下します。非常に大きな引数に対しては、漸近展開を用いるほうがよい結果が得られます。