指数積分Eₙ(x)とは
一般化指数積分En(x)は、\(e^{-x\cdot t}/t^{n}\)をtについて1から∞まで積分して定義される代表的な特殊関数です。応用数学のさまざまな場面のほか、物理学(とくに輻射輸送や中性子輸送)、工学の分野で広く現れます。パラメータnは整数の次数、xは実数の引数を表します。n = 1のとき、\(E_{1}(x) = -\mathrm{Ei}(-x)\)という関係により、古典的な指数積分に帰着します。
計算ツールの使い方
次数nには0以上の整数(0, 1, 2, 3, …)を、引数xには実数を入力します。「計算」を押すと、En(x)が倍精度(有効数字およそ15桁)で求められます。この関数が実数値をとるのはxが0以上のときに限られます。n = 0またはn = 1の場合、xが0に近づくと発散するため、xは正の値でなければなりません。一方、n ≥ 2の場合はx = 0でも有限値となり、その値は\(1/(n-1)\)に等しくなります。
定義式とアルゴリズム
定義となる積分は $$E_{\text{n}}\!\left(\text{x}\right) = \int_{1}^{\infty} \frac{e^{-\text{x}\,t}}{t^{\,\text{n}}}\,dt$$ です。本実装では、数値的に安定な「expint」ルーチンを採用しています。x > 1のときはLentz法による連分数展開を、0 < x ≤ 1のときはオイラー・マスケローニ定数 γ ≈ 0.5772156649 を含む収束べき級数を用います。特殊なケースは直接処理し、\(E_{0}(x) = e^{-x}/x\)、およびn ≥ 2に対して \(E_{n}(0) = 1/(n-1)\) としています。
計算例
初期値である n = 2、x = 1 を使ってみましょう。x ≤ 1 なので、nm1 = 1 としてべき級数が用いられます。級数は1から始まり、続く各項(−0.4227843, −0.5, +0.0833333, −0.0138889, …)が積み重なって、\(E_{2}(1) \approx 0.1484955\) となります。検算として、\(E_{2}(0) = 1/(2-1) = 1\)、また \(E_{1}(1) \approx 0.2193839\) です。
よくある質問
xが負のときにエラーになるのはなぜですか? この関数は x < 0 では実数値をとらないため、計算ツールでは未定義として扱われます。
x = 0のときはどうなりますか? n ≥ 2 の場合は結果が \(1/(n-1)\) になります。n = 0 または n = 1 の場合は関数が発散するため、xは正の値でなければなりません。
計算結果の精度はどのくらいですか? 倍精度演算により有効数字およそ15桁が得られ、一般的な科学計算や工学用途には十分な精度です。