MCPで接続 →

計算を入力してください

公式

広告

結果

指数積分 E_n(x)
0.1484955068
無次元
定義 E_n(x) = 1から∞までの e^(-x t) / t^n dt の積分

指数積分Eₙ(x)とは

一般化指数積分En(x)は、\(e^{-x\cdot t}/t^{n}\)をtについて1から∞まで積分して定義される代表的な特殊関数です。応用数学のさまざまな場面のほか、物理学(とくに輻射輸送や中性子輸送)、工学の分野で広く現れます。パラメータnは整数の次数、xは実数の引数を表します。n = 1のとき、\(E_{1}(x) = -\mathrm{Ei}(-x)\)という関係により、古典的な指数積分に帰着します。

En(x) を定義する積分を表す塗りつぶし領域上の減衰曲線
Eₙ(x) は t = 1 から無限大までの e^(−x t)/t^n の下の面積です。

計算ツールの使い方

次数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 の値に対する En(x) を示す曲線群
次数 n が大きいほど Eₙ(x) は小さく、より速く減衰します。

計算例

初期値である 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桁が得られ、一般的な科学計算や工学用途には十分な精度です。

最終更新: