最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

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('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')

区間 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('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')

スケーリングされていない下側不完全ガンマ関数を計算し、スケーリングされた関数と比較します。

区間 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')

入力引数

すべて折りたたむ

入力配列。スカラー、ベクトル、行列または多次元配列として指定します。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 より前に導入