Main Content

expint

説明

expint(x) は、次のように定義される 1 引数の指数積分関数を返します。

expint(x)=xettdt.

expint(n,x) は、次のように定義される 2 引数の指数積分関数を返します。

expint(n,x)=1exttndt.

浮動小数点数およびシンボリック数の 1 引数の指数積分

浮動小数点数について指数積分を計算します。これらの数値はシンボリック オブジェクトではないため、結果は浮動小数点数となります。

s = [expint(1/3), expint(1), expint(-2)]
s =
   0.8289 + 0.0000i   0.2194 + 0.0000i  -4.9542 - 3.1416i

同じ数値をシンボリック オブジェクトに変換して指数積分を計算します。正の値 x に対し、expint(x)-ei(-x) を返します。負の値の x に対しては、-pi*i - ei(-x) を返します。

s = [expint(sym(1)/3), expint(sym(1)), expint(sym(-2))]
s =
[ -ei(-1/3), -ei(-1), - ei(2) - pi*1i]

vpa を使用して 10 桁の精度でこの結果を近似します。

vpa(s, 10)
ans =
[ 0.8288877453, 0.2193839344, - 4.954234356 - 3.141592654i]

浮動小数点数およびシンボリック数の 2 引数の指数積分

2 引数の指数積分を計算するときは、数値をシンボリック オブジェクトに変換します。

s = [expint(2, sym(1)/3), expint(sym(1), Inf), expint(-1, sym(-2))]
s =
[ expint(2, 1/3), 0, -exp(2)/4]

vpa を使用して 25 桁の精度でこの結果を近似します。

vpa(s, 25)
ans =
[ 0.4402353954575937050522018, 0, -1.847264024732662556807607]

最初の引数が非正である 2 引数の指数積分

2 引数の指数積分を計算します。n が非正の整数の場合、expint(n, x) は陽的な表現を exp(-x)*p(1/x) という形式で返します。ここで、p1 - n 次の多項式です。

syms x
expint(0, x)
expint(-1, x)
expint(-2, x)
ans =
exp(-x)/x
 
ans =
exp(-x)*(1/x + 1/x^2)
 
ans =
exp(-x)*(1/x + 2/x^2 + 2/x^3)

指数積分の導関数

1 引数の指数積分の 1 次、2 次および 3 次導関数を計算します。

syms x
diff(expint(x), x)
diff(expint(x), x, 2)
diff(expint(x), x, 3)
ans =
-exp(-x)/x
 
ans =
exp(-x)/x + exp(-x)/x^2
 
ans =
- exp(-x)/x - (2*exp(-x))/x^2 - (2*exp(-x))/x^3

2 引数の指数積分の 1 次導関数を計算します。

syms n x
diff(expint(n, x), x)
diff(expint(n, x), n)
ans =
-expint(n - 1, x)
 
ans =
- hypergeom([1 - n, 1 - n], [2 - n, 2 - n],...
             -x)/(n - 1)^2 - (x^(n - 1)*pi*(psi(n) - ...
             log(x) + pi*cot(pi*n)))/(sin(pi*n)*gamma(n))

入力引数

すべて折りたたむ

シンボリック数、シンボリック変数、シンボリック式、シンボリック関数、シンボリック ベクトルまたはシンボリック行列として指定される入力。

シンボリック数、シンボリック変数、シンボリック式、シンボリック関数、シンボリック ベクトルまたはシンボリック行列として指定される入力。2 引数の指数積分関数を計算する場合は、少なくとも 1 つの引数がスカラーでなければなりません。

ヒント

  • シンボリック オブジェクトではない数値について expint を呼び出すと、MATLAB® 関数 expint が呼び出されます。この関数では 1 つの引数だけが受け入れられます。2 引数の指数積分を計算するには、sym を使用して数値をシンボリック オブジェクトに変換してから、それらシンボリック オブジェクトに対して expint を呼び出します。vpa を使用して、結果を浮動小数点数で近似することができます。

  • 指数積分の以下の値は、MATLAB 関数 expint によって返される値とは異なります。expint(sym(Inf)) = 0, expint(-sym(Inf)) = -Inf, expint(sym(NaN)) = NaN.

  • 正の実数 x に対しては、expint(x) = -ei(-x) です。負の実数 x に対しては、expint(x) = -pi*i - ei(-x) です。

  • 一方の入力引数がスカラーであり、もう一方の入力引数がベクトルまたは行列である場合、expint(n,x) によってスカラーは、すべての要素がそのスカラーと等しい、もう一方の引数と同じサイズのベクトルまたは行列に拡張されます。

アルゴリズム

関数 expintei の関係は、以下のとおりです。

expint(1,-x) = ei(x) + (ln(x)-ln(1/x))/2 - ln(-x)

関数 ei(x) および expint(1,x) には共に、原点および負の実数軸に沿う分枝切断において対数特異性があります。関数 ei は、この分枝切断の上方または下方からの接近時に不連続です。

関数 expint は、次のように上側不完全ガンマ関数 igamma に関連しています。

expint(n,x) = (x^(n-1))*igamma(1-n,x)

バージョン履歴

R2013a で導入

参考

| |