Main Content

gammainc

正則化された不完全ガンマ関数

説明

Y = gammainc(X,A) は、XA の要素で評価した、正則化された下側不完全ガンマ関数を返します。XA の両方が実数でなければならず、A は非負でなければなりません。

Y = gammainc(X,A,type) は、正則化された下側または上側の不完全ガンマ関数を返します。type の選択肢は、'lower' (既定) と 'upper' です。

Y = gammainc(X,A,scale) は、結果として得られた正則化された下側または上側の不完全ガンマ関数をスケーリングして、ゼロへのアンダーフローまたは正確性の低下を防ぎます。scale の選択肢は 'scaledlower''scaledupper' です。

すべて折りたたむ

区間 0x10a = 0.5, 1, 1.5, 2 について、正則化された下側不完全ガンマ関数を計算します。複数の a 値にわたってループし、各 a 値で関数を評価し、それぞれの結果を Y の列に代入します。

A = [0.5 1 1.5 2];
X = 0:0.05:10;
Y = zeros(201,4);
for i = 1:4
    Y(:,i) = gammainc(X,A(i));
end

すべての関数を同じ Figure にプロットします。

plot(X,Y)
grid on
legend('$a = 0.5$','$a = 1$','$a = 1.5$','$a = 2$','interpreter','latex')
title('Regularized lower incomplete gamma function for $a = 0.5, 1, 1.5,$ and $2$','interpreter','latex')
xlabel('$x$','interpreter','latex')
ylabel('$P(x,a)$','interpreter','latex')

Figure contains an axes object. The axes object with title Regularized lower incomplete gamma function for $a = 0.5, 1, 1.5,$ and $2$, xlabel $x$, ylabel $P(x,a)$ contains 4 objects of type line. These objects represent $a = 0.5$, $a = 1$, $a = 1.5$, $a = 2$.

区間 0x10a = 0.5, 1, 1.5, 2 について、正則化された上側不完全ガンマ関数を計算します。複数の a 値にわたってループし、各 a 値で関数を評価し、それぞれの結果を Y の列に代入します。

A = [0.5 1 1.5 2];
X = 0:0.05:10;
Y = zeros(201,4);
for i = 1:4
    Y(:,i) = gammainc(X,A(i),'upper');
end

すべての関数を同じ Figure にプロットします。

plot(X,Y)
grid on
legend('$a = 0.5$','$a = 1$','$a = 1.5$','$a = 2$','interpreter','latex');
title('Regularized upper incomplete gamma function for $a = 0.5, 1, 1.5,$ and $2$','interpreter','latex')
xlabel('$x$','interpreter','latex')
ylabel('$Q(x,a)$','interpreter','latex')

Figure contains an axes object. The axes object with title Regularized upper incomplete gamma function for $a = 0.5, 1, 1.5,$ and $2$, xlabel $x$, ylabel $Q(x,a)$ contains 4 objects of type line. These objects represent $a = 0.5$, $a = 1$, $a = 1.5$, $a = 2$.

区間 0x2a=1 について、スケーリングされていない正則化された下側不完全ガンマ関数を計算します。関数をプロットします。

a = 1;
x = 0:0.001:2;
Y = gammainc(x,a);
plot(x,Y);
xlabel('$x$','interpreter','latex');
ylabel('$P(x,1)$','interpreter','latex')
hold on

次に、スケーリングされた下側不完全ガンマ関数を計算します。同じグラフに関数をプロットします。スケーリングされた関数は 0 近傍で異なる漸近的な挙動を示し、これにより x が 0 に近いときにアンダーフローを回避します。

Ys = gammainc(x,a,'scaledlower');
plot(x,Ys,'--');
legend('unscaled','scaled')

Figure contains an axes object. The axes object with xlabel $x$, ylabel $P(x,1)$ contains 2 objects of type line. These objects represent unscaled, scaled.

入力引数

すべて折りたたむ

入力配列。スカラー、ベクトル、行列または多次元配列として指定します。X の要素は実数でなければなりません。XA は同じサイズであるか、いずれかがスカラーでなければなりません。

データ型: single | double

入力配列。スカラー、ベクトル、行列または多次元配列として指定します。A の要素は非負の実数でなければなりません。XA は同じサイズであるか、いずれかがスカラーでなければなりません。

データ型: single | double

正則化された不完全ガンマ関数のタイプ。'lower' または 'upper' として指定します。type'lower' の場合、gammainc は正則化された下側不完全ガンマ関数を返します。type'upper' の場合、gammainc は正則化された上側不完全ガンマ関数を返します。

スケーリング オプション。'scaledlower' または 'scaledupper' として指定します。scale'scaledlower' または 'scaledupper' である場合、gammainc は、正則化された下側または上側の不完全ガンマ関数を係数 Γ(a+1)ex/xa でスケーリングします。ここで Γ(a) は関数gammaです。このスケーリングは 0 近傍での関数の漸近的な挙動を相殺し、小さい引数でのアンダーフローを回避します。

制限

  • x が負の場合、abs(x) > a+1 で、正則化された不完全ガンマ関数が不正確になることがあります。

詳細

すべて折りたたむ

不完全ガンマ関数

正則化された下側不完全ガンマ関数 P と正則化された上側不完全ガンマ関数 Q は次で定義されます。

P(x,a)=1Γ(a)0xta1etdt,Q(x,a)=1Γ(a)xta1etdt.

ガンマ関数 Γ(a) は次で定義されます。

Γ(a)=0ta1etdt.

MATLAB® は、P(x,a)+Q(x,a)=1 となる正則化または正規化された不完全ガンマ関数の定義を使用します。

スケーリングされた下側および上側の不完全ガンマ関数は次で定義されます。

Ps(x,a)=Γ(a+1)Γ(a)exxa0xta1etdt,Qs(x,a)=Γ(a+1)Γ(a)exxaxta1etdt.

正則化された下側不完全ガンマ関数の一部のプロパティは次のとおりです。

  • limxP(x,a)=1fora0

  • limx,a0P(x,a)=1

ヒント

  • 正則化された上側不完全ガンマ関数が 0 に近い場合、'upper' オプションを指定して関数を計算するほうが、正則化された下側不完全ガンマ関数を 1 から減算するより正確です。

参照

[1] Olver, F. W. J., A. B. Olde Daalhuis, D. W. Lozier, B. I. Schneider, R. F. Boisvert, C. W. Clark, B. R. Miller, and B. V. Saunders, eds., Chapter 8. Incomplete Gamma and Related Functions, NIST Digital Library of Mathematical Functions, Release 1.0.22, Mar. 15, 2018.

拡張機能

バージョン履歴

R2006a より前に導入