Next: Exponential Integrals, Previous: Airy Functions, Up: Special Functions [Contents][Index]
ガンマ関数と、関連したベータ、プサイ、不完全ガンマ関数は Abramowitz and Stegun, Handbook of Mathematical Functions, Chapter 6の中で定義されています。
階乗(シフトガンマ)関数の多倍長浮動小数点バージョン。 2番目の引数は、保持し返すディジットの数です。 少しの余分を要請するのはいい考えです。
bfpsiは、実引数zと整数次数nの多ガンマ関数です。
bfpsi0はディガンマ関数です。
bfpsi0 (z, fpprec)はbfpsi (0, z, fpprec)と同値です。
これらの関数は多倍長浮動小数点値を返します。 fpprecは戻り値の多倍長浮動小数点精度です。
複素多倍長浮動小数点の階乗です。
load ("bffac")はこの関数をロードします。
ガンマ関数の基本的な定義 (A&S 6.1.1) は、
inf
/
[ z - 1 - t
gamma(z) = I t %e dt
]
/
0
です。
Maximaは、正の整数と正負の有理数に関して、gammaを整理します。
半整数値に関して、結果は有理数掛けるsqrt(%pi)です。
整数値に関する整理は、factlimによって制御されます。
factlimより大きな整数に関して、
階乗関数ーgammaを計算するのに使われますーの数値的な結果はオーバーフローします。
有理数に関する整理は、内部オーバーフローを避けるために、
gammalimによって制御されます。
factlimとgammalimも参照してください。
負の整数に関して、gammaは未定義です。
Maximaは、浮動小数点および多倍長浮動小数点の実数値および複素数値に関して、
gammaを数値的に評価できます。
gammaは鏡像対称性を持ちます。
gamma_expandがtrueの時、
Maximaは、
引数z+nとz-n―nは整数―のgammaを
展開します。
Maximaは、gammaの導関数を知っています。
例:
整数、半整数、有理数に関する整理:
(%i1) map('gamma,[1,2,3,4,5,6,7,8,9]);
(%o1) [1, 1, 2, 6, 24, 120, 720, 5040, 40320]
(%i2) map('gamma,[1/2,3/2,5/2,7/2]);
sqrt(%pi) 3 sqrt(%pi) 15 sqrt(%pi)
(%o2) [sqrt(%pi), ---------, -----------, ------------]
2 4 8
(%i3) map('gamma,[2/3,5/3,7/3]);
2 1
2 gamma(-) 4 gamma(-)
2 3 3
(%o3) [gamma(-), ----------, ----------]
3 3 9
実数と複素数の数値評価:
(%i4) map('gamma,[2.5,2.5b0]);
(%o4) [1.329340388179137, 1.329340388179137b0]
(%i5) map('gamma,[1.0+%i,1.0b0+%i]);
(%o5) [.4980156681183558 - .1549498283018108 %i,
4.980156681183561b-1 - 1.549498283018107b-1 %i]
gammaは鏡像対称性を持ちます:
(%i6) declare(z,complex)$ (%i7) conjugate(gamma(z)); (%o7) gamma(conjugate(z))
gamma_expandがtrueの時
Maximaは、gamma(z+n)とgamma(z-n)を展開します:
(%i8) gamma_expand:true$
(%i9) [gamma(z+1),gamma(z-1),gamma(z+2)/gamma(z+1)];
gamma(z)
(%o9) [z gamma(z), --------, z + 1]
z - 1
gammaの導関数:
(%i10) diff(gamma(z),z);
(%o10) psi (z) gamma(z)
0
makegammaも参照してください。
オイラー-マスケローニ定数は%gammaです。
ガンマ関数の自然対数。
第二種不完全ガンマ関数 A&S 6.5.2:
inf
/
[ a - 1 - t
gamma_incomplete(a, z) = I t %e dt
]
/
z
正則第二種不完全ガンマ関数 A&S 6.5.1:
gamma_incomplete_regularized(a, z) =
gamma_incomplete(a, z)
----------------------
gamma(a)
一般化不完全ガンマ関数
gamma_incomplete_generalized(a, z1, z2) =
z2
/
[ a - 1 - t
I t %e dt
]
/
z1
デフォルト値: 1000000
gammalimは、整数と有理数引数に関してガンマ関数の整理を制御します。
もし引数の絶対値がgammalimよりも大きくないなら、
整理が行われます。
factlimスイッチは、
整数引数のgammaの結果の整理を制御します。
factlimスイッチは、
整数引数のgammaの結果の整理も制御することに注意してください。
exprの中の2項、階乗、ベータ関数のインスタンスをガンマ関数に変換します。
makefactも参照してください。
ベータ関数は、gamma(a) gamma(b)/gamma(a+b)
(A&S 6.2.1)として定義されます。
Maximaは、正の整数と、合計すると整数になる有理数についてベータ関数を整理します。
beta_args_sum_to_integerがtrueの時、
Maximaは、和が整数になる一般式も整理します。
aもしくはbがゼロに等しい時には、ベータ関数は未定義です。
一般にベータ関数は、負の整数の引数で未定義です。 例外は、a=-n―nは正の整数―かつbがb<=nの正の整数で、 解析接続を定義することが可能です。 Maximaはこの場合結果を与えます。
beta_expandがtrueの時、
nを整数とするbeta(a+n,b)とbeta(a-n,b)、
もしくはbeta(a,b+n)とbeta(a,b-n)
のような式は整理されます。
Maximaは、実数値と複素数値のベータ関数を浮動小数点と多倍長浮動小数点精度で評価できます。
数値評価のために、Maximaはlog_gammaを使います:
- log_gamma(b + a) + log_gamma(b) + log_gamma(a)
%e
Maximaは、ベータ関数が対称で、鏡像対称性を持つことを知っています。
Maximaは、aまたはbに関するベータ関数の導関数を知っています。
ベータ関数をガンマ関数の比として表現するには、makegammaを参照してください。
例:
引数の1つが整数の時の整理:
(%i1) [beta(2,3),beta(2,1/3),beta(2,a)];
1 9 1
(%o1) [--, -, ---------]
12 4 a (a + 1)
2つの有理数引数の和が整数になる時の整理:
(%i2) [beta(1/2,5/2),beta(1/3,2/3),beta(1/4,3/4)];
3 %pi 2 %pi
(%o2) [-----, -------, sqrt(2) %pi]
8 sqrt(3)
beta_args_sum_to_integerをtrueに設定した時、
引数の和が整数の時、さらに一般的な式が整理されます:
(%i3) beta_args_sum_to_integer:true$
(%i4) beta(a+1,-a+2);
%pi (a - 1) a
(%o4) ------------------
2 sin(%pi (2 - a))
引数の1つが負の整数の時、可能な結果:
(%i5) [beta(-3,1),beta(-3,2),beta(-3,3)];
1 1 1
(%o5) [- -, -, - -]
3 6 3
beta_expandがtrueの時、
nが整数のbeta(a+n,b)またはbeta(a-n)は整理されます:
(%i6) beta_expand:true$
(%i7) [beta(a+1,b),beta(a-1,b),beta(a+1,b)/beta(a,b+1)];
a beta(a, b) beta(a, b) (b + a - 1) a
(%o7) [------------, ----------------------, -]
b + a a - 1 b
引数の1つがゼロの時、ベータは未定義です:
(%i7) beta(0,b); beta: expected nonzero arguments; found 0, b -- an error. To debug this try debugmode(true);
実数値と複素数値の浮動小数点または多倍長浮動小数点精度での数値評価:
(%i8) beta(2.5,2.3); (%o8) .08694748611299981 (%i9) beta(2.5,1.4+%i); (%o9) 0.0640144950796695 - .1502078053286415 %i (%i10) beta(2.5b0,2.3b0); (%o10) 8.694748611299969b-2 (%i11) beta(2.5b0,1.4b0+%i); (%o11) 6.401449507966944b-2 - 1.502078053286415b-1 %i
ベータは対称で、鏡像対称性を持ちます:
(%i14) beta(a,b)-beta(b,a); (%o14) 0 (%i15) declare(a,complex,b,complex)$ (%i16) conjugate(beta(a,b)); (%o16) beta(conjugate(a), conjugate(b))
aに関するベータ関数の導関数:
(%i17) diff(beta(a,b),a);
(%o17) - beta(a, b) (psi (b + a) - psi (a))
0 0
不完全ベータ関数の基本定義(A&S 6.6.1)は、以下の通りです。
z
/
[ b - 1 a - 1
I (1 - t) t dt
]
/
0
この定義は、realpart(a)>0かつrealpart(b)>0かつabs(z)<1で可能です。 他の値では不完全ベータ関数は一般化超幾何関数を通じて定義することができます。
gamma(a) hypergeometric_generalized([a, 1 - b], [a + 1], z) z
(不完全ベータ関数の完全な定義については、functions.wolfram.comを参照してください。 )
負の整数a = -nと正の整数b=mで、m<=nの場合、 不完全ベータ関数は以下を通して定義されます。
m - 1 k
==== (1 - m) z
n - 1 \ k
z > -----------
/ k! (n - k)
====
k = 0
Maximaは、
負の整数aに関するbeta_incompleteを整理するために、この定義を使います。
aが正の整数の時、
任意の引数b, zに関して、
bが正の整数の時、
非負の整数a, 任意のzに関して、
beta_incompleteは整理されます。
z=0かつrealpart(a)>0の時、beta_incompleteは特別な値ゼロを取ります。
z=1かつrealpart(b)>0の時、
beta_incompleteはベータ関数beta(a,b)に整理されます。
Maximaは、浮動小数点か多倍長浮動小数点精度の実数値と複素数値に対して、
beta_incompleteを数値的に評価します。
数値評価に関して、
不完全ベータ函数の連分数展開を使います。
オプション変数beta_expandがtrueの時、
Maximaはbeta_incomplete(a+n,b,z)やbeta_incomplete(a-n,b,z)のような式を展開します。ここでnは正の整数です。
Maximaはbeta_incompleteの変数a, b, zについての導関数と
変数zについての積分を知っています。
例:
正の整数aに関する整理:
(%i1) beta_incomplete(2,b,z);
b
1 - (1 - z) (b z + 1)
(%o1) ----------------------
b (b + 1)
正の整数bに関する整理:
(%i2) beta_incomplete(a,2,z);
a
(a (1 - z) + 1) z
(%o2) ------------------
a (a + 1)
正の整数a, bに関する整理:
(%i3) beta_incomplete(3,2,z);
3
(3 (1 - z) + 1) z
(%o3) ------------------
12
aが負の整数かつb<=(-a)の時、Maximaは整理します:
(%i4) beta_incomplete(-3,1,z);
1
(%o4) - ----
3
3 z
特定の値z=0とz=1に関して, Maximaは整理します:
(%i5) assume(a>0,b>0)$ (%i6) beta_incomplete(a,b,0); (%o6) 0 (%i7) beta_incomplete(a,b,1); (%o7) beta(a, b)
浮動小数点または多倍長浮動小数点精度の数値評価:
(%i8) beta_incomplete(0.25,0.50,0.9); (%o8) 4.594959440269333 (%i9) fpprec:25$ (%i10) beta_incomplete(0.25,0.50,0.9b0); (%o10) 4.594959440269324086971203b0
abs(z)>1の時、beta_incompleteは複素数を返します:
(%i11) beta_incomplete(0.25,0.50,1.7); (%o11) 5.244115108584249 - 1.45518047787844 %i
もっと一般的な複素引数に関する結果:
(%i14) beta_incomplete(0.25+%i,1.0+%i,1.7+%i); (%o14) 2.726960675662536 - .3831175704269199 %i (%i15) beta_incomplete(1/2,5/4*%i,2.8+%i); (%o15) 13.04649635168716 %i - 5.802067956270001 (%i16)
beta_expandがtrueの時の展開:
(%i23) beta_incomplete(a+1,b,z),beta_expand:true;
b a
a beta_incomplete(a, b, z) (1 - z) z
(%o23) -------------------------- - -----------
b + a b + a
(%i24) beta_incomplete(a-1,b,z),beta_expand:true;
b a - 1
beta_incomplete(a, b, z) (- b - a + 1) (1 - z) z
(%o24) -------------------------------------- - ---------------
1 - a 1 - a
beta_incompleteの微分と積分:
(%i34) diff(beta_incomplete(a, b, z), z);
b - 1 a - 1 (%o34) (1 - z) z
(%i35) integrate(beta_incomplete(a, b, z), z);
b a
(1 - z) z
(%o35) ----------- + beta_incomplete(a, b, z) z
b + a
a beta_incomplete(a, b, z)
- --------------------------
b + a
(%i36) factor(diff(%, z));
(%o36) beta_incomplete(a, b, z)
beta_incomplete_regularized(a, b, z) =
beta_incomplete(a, b, z)
------------------------
beta(a, b)
として定義された正則不完全ベータ関数 A&S 6.6.2。
beta_incomplete同様、この定義は完全ではありません。
beta_incomplete_regularizedの完全な定義については、functions.wolfram.comを参照してください。
beta_incomplete_regularizedは、aまたはbが正の整数の時
整理されます。
z=0かつrealpart(a)>0の時、
beta_incomplete_regularizedは、具体的な値0を持ちます。
z=1かつrealpart(b)>0の時、
beta_incomplete_regularizedは、1に整理されます。
Maximaは、実数と複素数の引数について、
浮動小数点と多倍長浮動小数点精度でbeta_incomplete_regularizedを評価します。
beta_expandがtrueの時、
Maximaは、
nは整数として、引数a+nまたはa-nに関して
beta_incomplete_regularizedを展開します。
Maximaは、変数a, b, zに関する
beta_incomplete_regularizedの導関数と、
変数zに関する積分を知っています。
例:
aまたはbが正の整数の時の整理:
(%i1) beta_incomplete_regularized(2,b,z);
b
(%o1) 1 - (1 - z) (b z + 1)
(%i2) beta_incomplete_regularized(a,2,z);
a
(%o2) (a (1 - z) + 1) z
(%i3) beta_incomplete_regularized(3,2,z);
3
(%o3) (3 (1 - z) + 1) z
特定の値z=0, z=1について、Maximaは整理します:
(%i4) assume(a>0,b>0)$ (%i5) beta_incomplete_regularized(a,b,0); (%o5) 0 (%i6) beta_incomplete_regularized(a,b,1); (%o6) 1
実数と複素数引数に関する浮動小数点または多倍長浮動小数点精度の数値評価:
(%i7) beta_incomplete_regularized(0.12,0.43,0.9); (%o7) .9114011367359802 (%i8) fpprec:32$ (%i9) beta_incomplete_regularized(0.12,0.43,0.9b0); (%o9) 9.1140113673598075519946998779975b-1 (%i10) beta_incomplete_regularized(1+%i,3/3,1.5*%i); (%o10) .2865367499935403 %i - 0.122995963334684 (%i11) fpprec:20$ (%i12) beta_incomplete_regularized(1+%i,3/3,1.5b0*%i); (%o12) 2.8653674999354036142b-1 %i - 1.2299596333468400163b-1
beta_expandがtrueの時の展開:
(%i13) beta_incomplete_regularized(a+1,b,z);
b a
(1 - z) z
(%o13) beta_incomplete_regularized(a, b, z) - ------------
a beta(a, b)
(%i14) beta_incomplete_regularized(a-1,b,z);
(%o14) beta_incomplete_regularized(a, b, z)
b a - 1
(1 - z) z
- ----------------------
beta(a, b) (b + a - 1)
zに関する微分と積分:
(%i15) diff(beta_incomplete_regularized(a,b,z),z);
b - 1 a - 1
(1 - z) z
(%o15) -------------------
beta(a, b)
(%i16) integrate(beta_incomplete_regularized(a,b,z),z);
(%o16) beta_incomplete_regularized(a, b, z) z
b a
(1 - z) z
a (beta_incomplete_regularized(a, b, z) - ------------)
a beta(a, b)
- -------------------------------------------------------
b + a
一般化不完全ベータ関数の基本的な定義は、以下の通りです。
z2
/
[ b - 1 a - 1
I (1 - t) t dt
]
/
z1
Maximaは、
aとbが正の整数の時、
beta_incomplete_regularizedを整理します。
realpart(a)>0かつz1=0またはz2=0の時、
Maximaは、
beta_incomplete_generalizedをbeta_incompleteに整理します。
realpart(b)>0かつz1=1またはz2=1の時、
Maximaは、betaとbeta_incompleteを含む式に整理します。
Maximaは、実数値と複素数値に関して、浮動小数点と多倍長浮動小数点精度で
beta_incomplete_regularizedを評価します。
beta_expandがtrueの時、
nを正の整数とすると、
Maximaは、a+nやa-nに関してbeta_incomplete_generalized
を整理します。
Maximaは、
変数a, b, z1, z2に関する
beta_incomplete_generalizedの微分を知っており、
変数z1やz2に関する積分を知っています。
例:
Maximaは、aとbが正の整数の時、
beta_incomplete_generalizedを整理します:
(%i1) beta_incomplete_generalized(2,b,z1,z2);
b b
(1 - z1) (b z1 + 1) - (1 - z2) (b z2 + 1)
(%o1) -------------------------------------------
b (b + 1)
(%i2) beta_incomplete_generalized(a,2,z1,z2);
a a
(a (1 - z2) + 1) z2 - (a (1 - z1) + 1) z1
(%o2) -------------------------------------------
a (a + 1)
(%i3) beta_incomplete_generalized(3,2,z1,z2);
2 2 2 2
(1 - z1) (3 z1 + 2 z1 + 1) - (1 - z2) (3 z2 + 2 z2 + 1)
(%o3) -----------------------------------------------------------
12
特定の値z1=0, z2=0, z1=1またはz2=1に関する整理:
(%i4) assume(a > 0, b > 0)$ (%i5) beta_incomplete_generalized(a,b,z1,0); (%o5) - beta_incomplete(a, b, z1) (%i6) beta_incomplete_generalized(a,b,0,z2); (%o6) - beta_incomplete(a, b, z2) (%i7) beta_incomplete_generalized(a,b,z1,1); (%o7) beta(a, b) - beta_incomplete(a, b, z1) (%i8) beta_incomplete_generalized(a,b,1,z2); (%o8) beta_incomplete(a, b, z2) - beta(a, b)
浮動小数点もしくは多倍長浮動小数点精度での実数値引数に関する数値評価:
(%i9) beta_incomplete_generalized(1/2,3/2,0.25,0.31); (%o9) .09638178086368676 (%i10) fpprec:32$ (%i10) beta_incomplete_generalized(1/2,3/2,0.25,0.31b0); (%o10) 9.6381780863686935309170054689964b-2
浮動小数点もしくは多倍長浮動小数点精度での複素数値引数に関する数値評価:
(%i11) beta_incomplete_generalized(1/2+%i,3/2+%i,0.25,0.31); (%o11) - .09625463003205376 %i - .003323847735353769 (%i12) fpprec:20$ (%i13) beta_incomplete_generalized(1/2+%i,3/2+%i,0.25,0.31b0); (%o13) - 9.6254630032054178691b-2 %i - 3.3238477353543591914b-3
beta_expandがtrueの時、
nを正の整数とする、
a+nまたはa-nに関する整理:
(%i14) beta_expand:true$
(%i15) beta_incomplete_generalized(a+1,b,z1,z2);
b a b a
(1 - z1) z1 - (1 - z2) z2
(%o15) -----------------------------
b + a
a beta_incomplete_generalized(a, b, z1, z2)
+ -------------------------------------------
b + a
(%i16) beta_incomplete_generalized(a-1,b,z1,z2);
beta_incomplete_generalized(a, b, z1, z2) (- b - a + 1)
(%o16) -------------------------------------------------------
1 - a
b a - 1 b a - 1
(1 - z2) z2 - (1 - z1) z1
- -------------------------------------
1 - a
変数z1に関する微分とz1やz2に関する積分:
(%i17) diff(beta_incomplete_generalized(a,b,z1,z2),z1);
b - 1 a - 1
(%o17) - (1 - z1) z1
(%i18) integrate(beta_incomplete_generalized(a,b,z1,z2),z1);
(%o18) beta_incomplete_generalized(a, b, z1, z2) z1
+ beta_incomplete(a + 1, b, z1)
(%i19) integrate(beta_incomplete_generalized(a,b,z1,z2),z2);
(%o19) beta_incomplete_generalized(a, b, z1, z2) z2
- beta_incomplete(a + 1, b, z2)
デフォルト値: false
beta_expandがtrueの時、
a+nやa-nのような引数に対して
beta(a,b) と、関連した関数は展開されます。
ここでnは整数です。
デフォルト値: false
beta_args_sum_to_integerがtrueの時、
引数aとbの和が整数の時、
Maximaはbeta(a,b)を整理します。
log (gamma (x))の次数n+1の導関数。
例えば、
psi[0](x)は1階微分、
psi[1](x)は2階微分など。
Maximaは、一般に、psiの数値を計算する方法を知りませんが、
有理数の引数に関してはいくつかの厳密な値を計算することができます。
いくつの変数は、psiが可能なら厳密な値を返す有理数の引数の範囲を制御します。
maxpsiposint,
maxpsinegint, maxpsifracnum, maxpsifracdenomを参照してください。
すなわち、xは、maxpsinegintとmaxpsiposintの間になければいけません。
もしxの小数部分の絶対値が有理数で、かつ分子がmaxpsifracnumより小さく、
分母がmaxpsifracdenomより小さければ、
psiは厳密な値を返します。
bffacパッケージの中の
関数bfpsiは数値を計算できます。
デフォルト値: 20
maxpsiposintは、
psi[n](x)が厳密な値を計算しようとする
最も大きな正の値です。
デフォルト値: -10
maxpsinegint
psi[n](x)が厳密な値を計算しようとする
最も大きな負の値です。
従って、もし
xがmaxnegintよりも小さければ、
たとえ可能でも、
psi[n](x)は整理された答えを返しません。
デフォルト値: 6
xを1より小さい、形式p/qの有理数とします。
もしpがmaxpsifracnumより大きいなら
psi[n](x)は、
整理された値を返そうとしません。
デフォルト値: 6
xを1より小さい、形式p/qの有理数とします。
もしqがmaxpsifracdenomより大きいなら
psi[n](x)は、
整理された値を返そうとしません。
exprの中の二項、ガンマ、ベータ関数のインスタンスを階乗に変換します。
makegammaも参照してください。
式exprを掛ける数値因子を返します。 式exprは単一項でなければいけません。
contentは、輪の中のすべての項の最大公約数を返します。
(%i1) gamma (7/2);
15 sqrt(%pi)
(%o1) ------------
8
(%i2) numfactor (%);
15
(%o2) --
8
Next: Exponential Integrals, Previous: Airy Functions, Up: Special Functions [Contents][Index]