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]