数学 において非負整数 n の階乗 (かいじょう、英 : factorial )n ! は、1 から n までのすべての整数の積 である。例えば、
6
!
=
6
×
5
×
4
×
3
×
2
×
1
=
720
{\displaystyle 6!=6\times 5\times 4\times 3\times 2\times 1=720}
である。空積 の規約のもと 0! = 1 と定義する[ 1] 。
階乗は数学の様々な場面に出現するが、特に組合せ論 、代数学 、解析学 などが著しい。階乗の最も基本的な出自は n 個の相異なる対象を1列に並べる方法(対象の置換 )の総数が n ! 通りであるという事実である。
階乗数 オンライン整数列大辞典 の数列 A000142
0!
1
1!
1
2!
2
3!
6
4!
24
5!
120
6!
720
7!
5 040
8!
40 320
9!
362 880
10!
3 628 800
11!
39 916 800
12!
479 001 600
13!
6 227 020 800
14!
87 178 291 200
15!
1 307 674 368 000
16!
20 922 789 888 000
17!
355 687 428 096 000
18!
6 402 373 705 728 000
19!
121 645 100 408 832 000
20!
2 432 902 008 176 640 000
階乗の定義は、最も重要な性質を残したまま、非整数を引数とする函数に拡張 することができる。そうすれば解析学における著しい手法などの進んだ数学を利用できるようになる。
定義
いくつか同値な条件により定義することが可能である。
n
!
=
∏
k
=
1
n
k
=
n
×
(
n
−
1
)
×
⋯
×
3
×
2
×
1
{\displaystyle n!=\prod _{k=1}^{n}k=n\times \left(n-1\right)\times \cdots \times 3\times 2\times 1}
再帰的な定義
n
!
=
{
1
,
if
n
=
0
n
×
(
n
−
1
)
!
,
if
n
>
0
{\displaystyle n!={\begin{cases}1,&{\text{if }}n=0\\n\times \left(n-1\right)!,&{\text{if }}n>0\end{cases}}}
微分 に関する「冪の法則 (英語版 ) 」を用いた定義
n
!
=
d
n
d
x
n
x
n
(
n
≥
0
)
{\displaystyle n!={\frac {d^{n}}{dx^{n}}}x^{n}\quad \left(n\geq 0\right)}
n ! = ( n 元集合の置換の総数 )
上記の何れの定義においても、
0
!
=
1
{\displaystyle 0!=1}
となることが織り込み済みである(最初の定義では「 0 項の積 は 1 と定める」という規約によって)[ 注釈 1] 。このように定義することの理由は:
零個の対象の置換は(「何もしない」という)ちょうど一通りであること。 n > 0 のとき有効な漸化式 (n + 1)! = n ! × (n + 1) , が n = 0 の場合にも延長できること。指数函数 などの冪級数としての表示
e
x
=
∑
n
=
0
∞
x
n
n
!
{\displaystyle e^{x}=\sum _{n=0}^{\infty }{\frac {x^{n}}{n!}}}
など多くの公式が短く表せるようになること。組合せ論 における多くの等式が任意のサイズに適用して意味を持つこと。例えば零個の元を空集合 から選ぶ方法の総数は
(
0
0
)
=
0
!
0
!
0
!
=
1
{\displaystyle {\binom {0}{0}}={\frac {0!}{0!\,0!}}=1}
であり、一般に n 元集合から n 個全ての元を選び出す方法の総数は
(
n
n
)
=
n
!
n
!
0
!
=
1
{\displaystyle {\binom {n}{n}}={\frac {n!}{n!\,0!}}=1}
と書ける。
など様々に挙げることができる。
より進んだ数学においては、引数が非整数の場合にも階乗函数を定義することができる(後述)。そういった一般化された定義のもとでの階乗は関数電卓 や、Maple や Mathematica などの数学ソフトウェア で利用できる。
プログラミング言語における階乗
多くのプログラミング言語において、再帰的な定義を利用し、プロシージャ の再帰呼び出し を用いた階乗の実装が可能である。
以下はC言語 での例である。例示するコードではint
型を使用しているが、int
型では小さな階乗でもオーバーフロー してしまうため、大きな階乗についてはdouble
型のような浮動小数点数 型を用いるなどの工夫が必要となる。
int factorial ( int n )
{
int x ;
if ( n > 0 ) {
x = n * factorial ( n - 1 );
} else {
x = 1 ; // 0! = 1
}
return x ;
}
組合せ論
階乗を含む公式は数学の多くの分野に現れるけれども、階乗のおおもとの出自は組合せ論 にある。相異なる n 個の対象の順列 (k -順列)の総数は n ! 通りである。
階乗はしばしば「順番を無視する」という事実を反映するものとして分母 に現れる。古典的な例としては n 個の元から k 個の元を選ぶ組合せ (k -組合せ)の総数が挙げられる。このような組合せは順列から得ることができる。実際、k -順列の総数
n
k
_
=
n
(
n
−
1
)
(
n
−
2
)
⋯
(
n
−
k
+
1
)
{\displaystyle n^{\underline {k}}=n(n-1)(n-2)\cdots (n-k+1)}
において、順番のみが違う(k -組合せでは違いが無視される)k -順列が k ! 通りずつ存在するから、k -組合せの総数は
n
k
_
k
!
=
n
(
n
−
1
)
(
n
−
2
)
⋯
(
n
−
k
+
1
)
k
(
k
−
1
)
(
k
−
2
)
⋯
1
{\displaystyle {\frac {n^{\underline {k}}}{k!}}={\frac {n(n-1)(n-2)\cdots (n-k+1)}{k(k-1)(k-2)\cdots 1}}}
となる。この数は、二項冪 (1 + X )n における Xk の係数となることから、二項係数
(
n
k
)
{\displaystyle {\tbinom {n}{k}}}
とも呼ばれる。
代数学 に現れる階乗にはいくつも理由があるが、既述の如く二項展開 の係数として現れたり、ある種の演算の対称化 (英語版 ) において置換 による平均化を行うなど、組合せ論的な理由で現れるものもある。
微分積分学 においても階乗は例えばテイラー級数 の分母として現れるが、これは冪函数 xn の n 階導函数が n ! であることを補正する定数である。確率論 でも階乗は用いられる。
階乗は数式操作にも有効である。例えば n の k -順列の総数を
n
k
_
=
n
!
(
n
−
k
)
!
{\displaystyle n^{\underline {k}}={\frac {n!}{(n-k)!}}}
と書けば、(この数値を計算することを考えれば効率が悪くなるが)二項係数の対称性
(
n
k
)
=
n
k
_
k
!
=
n
!
(
n
−
k
)
!
k
!
=
n
n
−
k
_
(
n
−
k
)
!
=
(
n
n
−
k
)
{\displaystyle {\binom {n}{k}}={\frac {n^{\underline {k}}}{k!}}={\frac {n!}{(n-k)!k!}}={\frac {n^{\underline {n-k}}}{(n-k)!}}={\binom {n}{n-k}}}
を見るには都合がよい。
数論における階乗
階乗は数論 にも多くの応用を持つ。特に n ! は n 以下の全ての素数 で整除されねばならない。このことの帰結として、n ≥ 5 が合成数 となる必要十分条件 は
(
n
−
1
)
!
≡
0
(
mod
n
)
{\displaystyle (n-1)!\equiv 0{\pmod {n}}}
が満たされることである。より強い結果としてウィルソンの定理 は
(
p
−
1
)
!
≡
−
1
(
mod
p
)
{\displaystyle (p-1)!\equiv -1{\pmod {p}}}
が p が素数であるための必要十分条件であることを述べる。
ルジャンドルの公式 は n ! の素因数分解に現れる p の重複度が
∑
i
=
1
∞
⌊
n
p
i
⌋
{\displaystyle \sum _{i=1}^{\infty }\left\lfloor {\frac {n}{p^{i}}}\right\rfloor }
であることを示す。これは
n
−
s
p
(
n
)
p
−
1
{\displaystyle {\frac {n-s_{p}(n)}{p-1}}}
と書いてもよい。ただし、s p (n ) は n の p 進展開の係数の和である。
n ! が素数となる n は 2 のみである。n ! ± 1 の形の素数は階乗素数 と呼ばれる。
1! より大きな階乗は全て偶数 である(これらは明らかに因数 2 を持ち、2 の倍数である)。同様に、5! より後の階乗は 10 の倍数(2 と 5 を因数に持つ)であり、十進展開の末尾には 0 が並ぶ (英語版 ) 。
ブロカールの問題
ブロカールの問題とは、
n
!
+
1
=
m
2
{\displaystyle n!+1=m^{2}}
を満たす n, m は存在するか、という問題である。2015年9月現在、これを満たす (n , m ) の組[ 注釈 2] は
(4, 5), (5, 11), (7, 71)
しか見つかっていない。ABC予想 が真であれば、解は有限個しかないことが、Marius Overholt により示されている。
階乗の解析学
階乗の逆数和
階乗の逆数 の総和は収束級数
∑
n
=
0
∞
1
n
!
=
1
1
+
1
1
+
1
2
+
1
6
+
1
24
+
1
120
+
⋯
=
e
{\displaystyle \sum _{n=0}^{\infty }{\frac {1}{n!}}={\frac {1}{1}}+{\frac {1}{1}}+{\frac {1}{2}}+{\frac {1}{6}}+{\frac {1}{24}}+{\frac {1}{120}}+\dotsb =e}
を与える(ネイピア数 を参照)。この和は無理数 となるけれども、階乗に適当な正整数を掛けて和が有理数となるようにすることができる。例えば、
∑
n
=
0
∞
1
(
n
+
2
)
n
!
=
1
2
+
1
3
+
1
8
+
1
30
+
1
144
+
⋯
=
1.
{\displaystyle \sum _{n=0}^{\infty }{\frac {1}{\left(n+2\right)n!}}={\frac {1}{2}}+{\frac {1}{3}}+{\frac {1}{8}}+{\frac {1}{30}}+{\frac {1}{144}}+\dotsb =1.}
この級数の値が 1 となることを見るには、その部分和 が 1 − 1/(n +2)! であることを確認すればよい。したがって、階乗数の全体は無理列 (英語版 ) を成さない[ 2] 。
階乗の増大度
階乗の自然対数 f (n ) = log(n !) のグラフをプロットしたもの。このグラフは一見して適当に選び出した n に対する一次函数 で近似できそうにも思えるが、そのような直観は誤りである。
n が増えるにつれて、階乗 n ! は n を変数とする任意の多項式函数 あるいは指数函数 よりも早く増加する(ただし、二重指数関数 よりは遅い)。
n ! の近似式の多くは自然対数
log
n
!
=
∑
x
=
1
n
log
x
{\displaystyle \log n!=\sum _{x=1}^{n}\log x}
であることを利用する。もっとも単純に得られる log(n !) の近似値を評価する式は、上記の式と以下の積分:
∫
1
n
log
x
d
x
≤
∑
x
=
1
n
log
x
≤
∫
0
n
log
(
x
+
1
)
d
x
{\displaystyle \int _{1}^{n}\log x\,dx\leq \sum _{x=1}^{n}\log x\leq \int _{0}^{n}\log(x+1)\,dx}
によって与えられる。積分を評価すれば
n
log
(
n
e
)
+
1
≤
log
n
!
≤
(
n
+
1
)
log
(
n
+
1
e
)
+
1
{\displaystyle n\log \left({\frac {n}{e}}\right)+1\leq \log n!\leq \left(n+1\right)\log \left({\frac {n+1}{e}}\right)+1}
を得る。これは、ランダウの記号 を用いれば log(n !) のオーダーは Θ(n log n ) であることを言っているのであり、この結果はソートアルゴリズム の計算量 を測るのに重要な役割を果たす。さて上記の log(n !) の評価から
e
(
n
e
)
n
≤
n
!
≤
e
(
n
+
1
e
)
n
+
1
{\displaystyle e\left({\frac {n}{e}}\right)^{n}\leq n!\leq e\left({\frac {n+1}{e}}\right)^{n+1}}
がわかる。実用上はより弱い結果だがより評価のしやすいものを用いることもある。上記の式から簡単な評価をしてみると、任意の n に対して (n /3)n < n ! であり、また n ≥ 6 のとき n ! < (n /2)n であることなどが分かる。
大きな n に対して n ! をよりよく評価するにはスターリングの公式
n
!
∼
2
π
n
(
n
e
)
n
{\displaystyle n!\sim {\sqrt {2\pi n}}\left({\frac {n}{e}}\right)^{n}}
を利用する。(ここで
∼
{\displaystyle \sim }
は両辺の比が 1 に収束することを表す。)実は任意の n に対して
2
π
n
(
n
e
)
n
<
n
!
<
2
π
n
(
n
e
)
n
e
1
/
12
n
{\displaystyle {\sqrt {2\pi n}}\left({\frac {n}{e}}\right)^{n}<n!<{\sqrt {2\pi n}}\left({\frac {n}{e}}\right)^{n}e^{1/12n}}
であることが証明できる。
log(n !) の別な近似はシュリニヴァーサ・ラマヌジャン により
log
n
!
≈
n
log
n
−
n
+
log
[
n
{
1
+
4
n
(
1
+
2
n
)
}
]
6
+
log
π
2
{\displaystyle \log n!\approx n\log n-n+{\frac {\log \left[n\left\{1+4n\left(1+2n\right)\right\}\right]}{6}}+{\frac {\log \pi }{2}}}
したがって
n
!
∼
2
π
n
(
n
e
)
n
(
1
+
1
2
n
+
1
8
n
2
)
1
/
6
{\displaystyle n!\sim {\sqrt {2\pi n}}\left({\frac {n}{e}}\right)^{n}\left(1+{\frac {1}{2n}}+{\frac {1}{8n^{2}}}\right)^{1/6}}
と与えられている[ 4] 。この近似の誤差は、スターリングの公式よりも小さい。
連続変数への補間
ガンマ関数とパイ関数
階乗函数は負の整数を除く任意の実数に対するものに一般化することができる。例えば * 0! = 1! = 1 , * (−1/2)! = √ π , * (1/2)! = √ π / 2 .
負の整数を除けば、階乗関数は非整数の値に対しても定義することができるが、そのためには解析学 の道具立てが必要である。そのように階乗の値を「補間」して得られるものの一つがガンマ函数 Γ(z ) である(ただし引数が 1 だけずれる)。これは負の整数を除く任意の複素数 z に対して定義される。z の実部が正である場合には
Γ
(
z
)
=
∫
0
∞
t
z
−
1
e
−
t
d
t
{\displaystyle \Gamma (z)=\int _{0}^{\infty }t^{z-1}e^{-t}\,dt}
で与えられる。ガンマ函数と階乗との関係は、任意の自然数 n に対して
n
!
=
Γ
(
n
+
1
)
{\displaystyle n!=\Gamma (n+1)}
が成り立つことである。オイラー のもともとの定義式は
Γ
(
z
)
=
lim
n
→
∞
n
z
n
!
∏
k
=
0
n
(
z
+
k
)
{\displaystyle \Gamma (z)=\lim _{n\to \infty }{\frac {n^{z}n!}{\displaystyle \prod _{k=0}^{n}(z+k)}}}
である。ガウス の導入した別表記として、負でない実数 z に対するパイ函数 Π(z ) は
Π
(
z
)
=
∫
0
∞
t
z
e
−
t
d
t
{\displaystyle \Pi (z)=\int _{0}^{\infty }t^{z}e^{-t}\,dt}
を満たす。ガンマ函数との関係は
Π
(
z
)
=
Γ
(
z
+
1
)
{\displaystyle \Pi (z)=\Gamma (z+1)}
である。非負整数 n に対し
Π
(
n
)
=
n
!
{\displaystyle \Pi (n)=n!}
が成り立つことを思えば、こちらのほうが階乗を補完した函数としては適していると言えるかもしれない。さてパイ函数は階乗が満たすのと同じ漸化式
Π
(
z
)
=
z
Π
(
z
−
1
)
{\displaystyle \Pi (z)=z\Pi (z-1)}
を、しかし定義される限り任意の複素数 z に対して満たす。事実としてはこれはもう漸化式ではなくて函数等式 と見るべきものであるが。この函数等式をガンマ函数に関するものに書き換えれば
Γ
(
n
+
1
)
=
n
Γ
(
n
)
{\displaystyle \Gamma (n+1)=n\Gamma (n)}
となる。階乗を延長したものがパイ函数なのだから、定義可能な任意の複素数 z に対して
z
!
:=
Π
(
z
)
{\displaystyle z!:=\Pi (z)}
と定めることは可能である。これらの補間函数を用いて半整数 における階乗の値を定めるならば、例えば
Γ
(
1
2
)
=
(
−
1
2
)
!
=
Π
(
−
1
2
)
=
π
{\displaystyle \Gamma \left({\frac {1}{2}}\right)=\left(-{\frac {1}{2}}\right)!=\Pi \left(-{\frac {1}{2}}\right)={\sqrt {\pi }}}
が成り立ち、さらに自然数 n ∈ N に対して
Γ
(
1
2
+
n
)
=
(
−
1
2
+
n
)
!
=
Π
(
−
1
2
+
n
)
=
π
∏
k
=
1
n
2
k
−
1
2
=
(
2
n
)
!
4
n
n
!
π
=
(
2
n
−
1
)
!
2
2
n
−
1
(
n
−
1
)
!
π
{\displaystyle \Gamma \left({\frac {1}{2}}+n\right)=\left(-{\frac {1}{2}}+n\right)!=\Pi \left(-{\frac {1}{2}}+n\right)={\sqrt {\pi }}\prod _{k=1}^{n}{2k-1 \over 2}={(2n)! \over 4^{n}n!}{\sqrt {\pi }}={(2n-1)! \over 2^{2n-1}(n-1)!}{\sqrt {\pi }}}
が得られる。例えば
Γ
(
4.5
)
=
3.5
!
=
Π
(
3.5
)
=
1
2
⋅
3
2
⋅
5
2
⋅
7
2
π
=
8
!
4
4
4
!
π
=
7
!
2
7
3
!
π
=
105
16
π
≈
11.63.
{\displaystyle \Gamma \left(4.5\right)=3.5!=\Pi \left(3.5\right)={1 \over 2}\cdot {3 \over 2}\cdot {5 \over 2}\cdot {7 \over 2}{\sqrt {\pi }}={8! \over 4^{4}4!}{\sqrt {\pi }}={7! \over 2^{7}3!}{\sqrt {\pi }}={105 \over 16}{\sqrt {\pi }}\approx 11.63.}
同様に n ∈ N に対して
Γ
(
1
2
−
n
)
=
(
−
1
2
−
n
)
!
=
Π
(
−
1
2
−
n
)
=
π
∏
k
=
1
n
2
1
−
2
k
=
(
−
4
)
n
n
!
(
2
n
)
!
π
{\displaystyle \Gamma \left({\frac {1}{2}}-n\right)=\left(-{\frac {1}{2}}-n\right)!=\Pi \left(-{\frac {1}{2}}-n\right)={\sqrt {\pi }}\prod _{k=1}^{n}{2 \over 1-2k}={(-4)^{n}n! \over (2n)!}{\sqrt {\pi }}}
が成り立ち、例えば
Γ
(
−
2.5
)
=
(
−
3.5
)
!
=
Π
(
−
3.5
)
=
2
−
1
⋅
2
−
3
⋅
2
−
5
π
=
(
−
4
)
3
3
!
6
!
π
=
−
8
15
π
≈
−
0.9453.
{\displaystyle \Gamma \left(-2.5\right)=(-3.5)!=\Pi \left(-3.5\right)={2 \over -1}\cdot {2 \over -3}\cdot {2 \over -5}{\sqrt {\pi }}={(-4)^{3}3! \over 6!}{\sqrt {\pi }}=-{8 \over 15}{\sqrt {\pi }}\approx -0.9453.}
パイ函数が殆ど全ての複素数値に対して定義される階乗の延長として唯一のものでないことはもちろんである。それは定義域において解析的 としても同じことである。しかし、ふつうはこれが階乗の複素函数への最も自然な延長であるものと考える。例えば、ボーア・モレルップの定理 はガンマ函数が Γ(1) = 1 かつ函数等式 Γ(n + 1) = n Γ(n ) を満足する、ガウス平面の全域で有理型 かつ実軸の正の部分で対数凸 (英語版 ) となるような唯一の函数であることを述べる。同様の主張はパイ函数に関しても、函数等式 Π(n ) = n Π(n − 1) に関して述べられる。
そうは言うものの、解析的函数論の意味で恐らくより簡明な、階乗の値を補間する複素函数は存在する。例えばアダマール の「ガンマ」函数[ 5] はガンマ函数とは異なり整函数 になる[ 6] 。
オイラーはまた非整数の階乗に対する近似無限乗積
n
!
=
Π
(
n
)
=
∏
k
=
1
∞
(
k
+
1
k
)
n
k
n
+
k
=
[
(
2
1
)
n
1
n
+
1
]
[
(
3
2
)
n
2
n
+
2
]
[
(
4
3
)
n
3
n
+
3
]
⋯
{\displaystyle {\begin{aligned}n!=\Pi (n)&=\prod _{k=1}^{\infty }\left({\frac {k+1}{k}}\right)^{n}\!\!{\frac {k}{n+k}}\\&=\left[\left({\frac {2}{1}}\right)^{n}{\frac {1}{n+1}}\right]\left[\left({\frac {3}{2}}\right)^{n}{\frac {2}{n+2}}\right]\left[\left({\frac {4}{3}}\right)^{n}{\frac {3}{n+3}}\right]\cdots \end{aligned}}}
についても考察している。これは上記のガンマ函数に関する公式と同じものと見做すことができる。しかしこの公式は収束が遅く、実用的な意味でパイ函数やガンマ函数の値を計算することに利用することはできない。
ガウス平面上での挙動
複素変数に対する階乗の絶対値と偏角を、単位長さ間隔で −3 ≤ x ≤ 3 , −2 ≤ y ≤ 2 の範囲で描いた等高線。太くなぞった等高線は φ = ±π である。
複素変数の階乗の値をガンマ函数による表現を通して評価することができる。絶対値 ρ と偏角 φ を用いて
f
=
ρ
exp
(
i
φ
)
=
(
x
+
i
y
)
!
=
Γ
(
x
+
i
y
+
1
)
{\displaystyle f=\rho \exp(i\varphi )=(x+iy)!=\Gamma (x+iy+1)}
と書けば、絶対値一定曲線 ρ = (定数) と偏角一定曲線 φ = (定数) を等値線として格子を描くことができる。一定間隔で引いた等値線の間にさらに細かく等値線を引けば、それが補間で得られる値である。極である負の整数においては絶対値と偏角が定義できず、またその周辺で等値線は密になる。
展開の係数の最初の方
n
gn
近似値
0
1
1
1
−γ
−0.5772156649
2
π
2
12
+
γ
2
2
{\displaystyle {\frac {\pi ^{2}}{12}}+{\frac {\gamma ^{2}}{2}}}
0.9890559955
3
−
ζ
(
3
)
3
−
π
2
γ
12
−
γ
3
6
{\displaystyle -{\frac {\zeta (3)}{3}}-{\frac {\pi ^{2}\gamma }{12}}-{\frac {\gamma ^{3}}{6}}}
−0.9074790760
γ はオイラー・マスケローニ定数 、ζ はリーマンゼータ函数 である。
|z | < 1 に対してはテイラー展開
z
!
=
∑
n
=
0
∞
g
n
z
n
{\displaystyle z!=\sum _{n=0}^{\infty }g_{n}z^{n}}
が利用できる。この展開のより多くの項は、Sage のような計算機代数システム で計算できる。
階乗の近似
展開の係数 a n [ 7]
n
an
0
1 ⁄12
1
1 ⁄30
2
53 ⁄210
3
195 ⁄371
4
22999 ⁄22737
5
29944523 ⁄19733142
6
109535241009 ⁄48264275462
大きな値に対する階乗の値の近似をディガンマ函数 の積分を通じて連分数 表示を用いて記述できる。この方法はスティルチェス による[ 8] もので、z ! = exp(P (z )) と書けば P (z ) は
P
(
z
)
=
p
(
z
)
+
log
(
2
π
)
/
2
−
z
+
(
z
+
1
2
)
log
(
z
)
{\displaystyle P(z)=p(z)+\log(2\pi )/2-z+\left(z+{\frac {1}{2}}\right)\log(z)}
で、スティルチェスはこの第一項 p (z ) の連分数展開
p
(
z
)
=
a
0
z
+
a
1
z
+
a
2
z
+
a
3
z
+
⋱
{\displaystyle p(z)={\cfrac {a_{0}}{z+{\cfrac {a_{1}}{z+{\cfrac {a_{2}}{z+{\cfrac {a_{3}}{z+\ddots }}}}}}}}}
を与えた。
さて、任意の複素数 z ≠ 0 に対して log(z !) = P (z ) あるいは log(Γ(z + 1)) = P (z ) とするのは誤りであり[要出典 ] 、実際には実軸の近くの特定の範囲の z でしか成り立たない(一方 |ℑ(Γ(z + 1))| < π である。引数の実部は大きいほど、虚部はより小さくなければならない。しかし逆の関係式 z ! = exp(P (z )) は原点を除くガウス平面の全域で有効である。ただし実軸の負の部分では収束性は弱くなる[要出典 ] (特異点の周辺ではどのような近似もよい収束性を得ることが難しい)。一方、|ℑ(z )| > 2 または ℜ(z ) > 2 の範囲では上記の六つの係数は double
精度の複素数に対してその階乗の近似値を得るのに十分である。より高い精度でより多くの係数を計算するには rational QD-scheme (H. Rutishauser 's QD algorithm )[ 9] を用いる。
負の整数に対する拡張不能性
関係式 n ! = n × (n − 1)! を使えばある整数に対する階乗をそれより「小さい」整数の階乗から計算できる。この関係式を逆に使えば、「大きい」整数に対して与えられた階乗から
(
n
−
1
)
!
=
n
!
n
{\displaystyle (n-1)!={\frac {n!}{n}}}
と計算することも可能である。しかし注意すべきは、これでは負の整数に関する階乗を計算することはできないということである(この式に従って (−1)! を計算するには零除算が必要となりこれ以下の負の整数における階乗の値の計算は不可能となる)。このことはガンマ函数においても同じことで、ガンマ函数は負の整数を除くガウス平面の全域において定義できるにも拘らず、負の整数における値だけは定義することができない。
一般化
多重指数記法
多重指数
α
=
(
α
1
,
α
2
,
…
,
α
n
)
{\displaystyle \alpha =(\alpha _{1},\alpha _{2},\ldots ,\alpha _{n})}
に対し階乗は、
α
!
=
α
1
!
⋅
α
2
!
⋯
α
n
!
{\displaystyle \alpha !=\alpha _{1}!\cdot \alpha _{2}!\cdots \alpha _{n}!}
と定義できる。これは例えば、多変数関数の展開に使われる。
デデキント環への拡張
マンジュル・バルガヴァ は階乗を一般のデデキント環 上で定義し、いくつかの古典的な問題を解決するために用いた[ 10] 。それらの階乗は整数ではなく、イデアル となる。
階乗に類似する概念
二重階乗の例
(-9)!!
= 1 ⁄105
(-7)!!
= −1 ⁄15
(-5)!!
= 1 ⁄3
(-3)!!
= −1
(-1)!!
= 1
0!!
= 1
1!!
= 1
2!!
= 2
3!!
= 3
4!!
= 8
5!!
= 15
6!!
= 48
7!!
= 105
8!!
= 384
9!!
= 945
10!!
= 3840
11!!
= 10395
12!!
= 46080
13!!
= 135135
14!!
= 645120
15!!
= 2027025
16!!
= 10321920
17!!
= 34459425
18!!
= 185794560
19!!
= 654729075
20!!
= 3715891200
二重階乗
階乗の類似として、二重階乗 n !! は自然数 n に対し一つ飛ばしに積を取る。二重階乗 n !! は階乗 n ! の二回反復合成 (n !)! とは異なる。
(
2
n
)
!
!
=
(
2
n
)
(
2
n
−
2
)
⋯
(
2
)
=
2
n
n
!
{\displaystyle (2n)!!=(2n)(2n-2)\cdots (2)=2^{n}n!}
(
2
n
+
1
)
!
!
=
(
2
n
+
1
)
(
2
n
−
1
)
⋯
(
1
)
=
(
2
n
+
1
)
!
(
2
n
)
!
!
{\displaystyle (2n+1)!!=(2n+1)(2n-1)\cdots (1)={\frac {(2n+1)!}{(2n)!!}}}
奇数 n = 1, 3, 5, 7, … に対する二重階乗の最初の方の値は
1, 3, 15, 105, 945, 10395, 135135, …, (A001147 )
偶数 n = 0, 2, 4, 6, 8, … に対する二重階乗の値の最初の方は
1, 2, 8, 48, 384, 3840, 46080, 645120, … (A000165 )
で与えられる。
負の奇数にも拡張される(
(
−
(
2
n
+
1
)
)
!
!
=
(
−
1
)
n
/
(
2
n
−
1
)
!
!
{\displaystyle \left(-(2n+1)\right)!!={(-1)^{n}}/{(2n-1)!!}}
)。また、複素数値への拡張として、以下が知られている[ 11] 。
z
!
!
=
2
[
1
+
2
z
−
cos
(
π
z
)
]
/
4
π
[
cos
(
π
z
)
−
1
]
/
4
Γ
(
1
+
1
2
z
)
{\displaystyle z!!={2}^{\left[1+2z-\cos(\pi z)\right]/4}{\pi }^{\left[\cos(\pi z)-1\right]/4}\Gamma \left(1+{\frac {1}{2}}z\right)}
多重階乗
より一般に多重階乗 (multifactorial ) は、連続した整数の積である通常の階乗 n ! 、一つ飛ばしの積である二重階乗 n !! 、二つ飛ばしの積である三重階乗 n !!! または n !3 、三つ飛ばしの四重階乗 n !!!! または n !4 などを総称して言う。
定義
一般の k -重階乗 n !k は正整数 n に関して帰納的に
n
!
k
=
{
1
if
n
=
0
,
n
if
0
<
n
<
k
,
n
(
(
n
−
k
)
!
k
)
if
n
≥
k
.
{\displaystyle n!_{k}={\begin{cases}1&{\text{if }}n=0,\\n&{\text{if }}0<n<k,\\n\,\left((n-k)!_{k}\right)&{\text{if }}n\geq k.\end{cases}}}
と定義できる。これと異なる定義として
定義
z
!
(
k
)
=
z
(
z
−
k
)
⋯
(
k
+
1
)
=
k
(
z
−
1
)
/
k
(
z
k
)
(
z
−
k
k
)
⋯
(
k
+
1
k
)
=
k
(
z
−
1
)
/
k
Γ
(
z
k
+
1
)
Γ
(
1
k
+
1
)
.
{\displaystyle z!^{(k)}=z(z-k)\cdots (k+1)=k^{(z-1)/k}\left({\frac {z}{k}}\right)\left({\frac {z-k}{k}}\right)\cdots \left({\frac {k+1}{k}}\right)=k^{(z-1)/k}{\frac {\Gamma \left({\frac {z}{k}}+1\right)}{\Gamma \left({\frac {1}{k}}+1\right)}}.}
とするものもある。
階乗冪
自然数 n, k に対して、n の k -順列の総数 n k は n から始めて上から k 個の連続する整数の積を取る(ある意味で不完全な階乗とも呼べる)階乗の類似物であった。これを下降階乗冪 と呼ぶ。その反対に n から始めて下から k 個の連続する整数の積をとったもの n k を上昇階乗冪 といい、これら二つを総称して階乗冪と呼ぶ。ただし一般に自然数に限らず(実数や複素数などに値をとる)x を変数として
x
n
_
=
∏
k
=
0
n
−
1
(
x
−
k
)
,
x
n
¯
=
∏
k
=
0
n
−
1
(
x
+
k
)
{\displaystyle {\begin{aligned}x^{\underline {n}}&=\prod _{k=0}^{n-1}(x-k),\\x^{\overline {n}}&=\prod _{k=0}^{n-1}(x+k)\end{aligned}}}
を考えることが多い。明らかに自然数 n に対して
n
k
_
=
n
!
(
n
−
k
)
!
,
n
k
¯
=
(
n
+
k
−
1
)
!
(
n
−
1
)
!
,
{\displaystyle n^{\underline {k}}={\frac {n!}{(n-k)!}},\quad n^{\overline {k}}={\frac {(n+k-1)!}{(n-1)!}},}
n
!
=
n
n
_
=
1
n
¯
.
{\displaystyle n!=n^{\underline {n}}=1^{\overline {n}}.}
また一般に実数 x ≠ 0 に対して
x
0
_
=
x
0
¯
=
1
{\displaystyle x^{\underline {0}}=x^{\overline {0}}=1}
と定義する(空積 も参照)が x = 0 のときもそうであるかは規約による(例えば上記の関係式 n ! = n n は n = 0 のとき 1 = 0! = 00 で矛盾しない。0^0 も参照)。
素数階乗
素数階乗 (Primorial ) n # は最初の n -個の素数の総乗
n
#
=
∏
i
=
1
n
p
i
{\displaystyle n\#=\prod _{i=1}^{n}p_{i}}
である[ 12] 。オンライン整数列大辞典 の数列 A002110 。
これは、素数が無限に存在するという命題 の証明に用いられることがある。
超階乗
Pickover (1995) [ 13] の超階乗 (superfactorial )は、階乗を入れ子に拡張したものである。ドル記号 $を用いて書かれる。またLawrence Hollom氏が開発した超階乗配列表記 は階乗をベースとした配列表記で従来の階乗や超階乗より遥かに大きな増加速度を持つ。
定義[ 注釈 3]
n
$
=
n
!
n
!
=
n
!
n
!
n
!
⋅
⋅
⋅
n
!
⏟
n
!
{\displaystyle n\$={}^{n!}n!=\underbrace {n!^{n!^{\scriptstyle n!^{{\textstyle \,\cdot }^{{\textstyle \,\cdot }^{{\textstyle \,\cdot \,}^{\scriptstyle n!}}}}}}} _{n!}}
nが3以上になると、非常に大きい値になる。
これとは異なる種類の超階乗の定義がある。Neil J. A. Sloane and Simon Plouffe (1995 ) The Encyclopedia of Integer Sequences [ 14] は、超階乗 (superfactorial )を定義した。例として、4の超階乗は次のようになる。
s
f
(
4
)
=
1
!
×
2
!
×
3
!
×
4
!
=
288.
{\displaystyle \mathrm {sf} (4)=1!\times 2!\times 3!\times 4!=288.\,}
一般的にこの定義における超階乗は下の式で定義される。
定義[ 注釈 3]
s
f
(
n
)
=
∏
k
=
1
n
k
!
=
∏
k
=
1
n
k
n
−
k
+
1
=
1
n
⋅
2
n
−
1
⋅
3
n
−
2
⋅
4
n
−
3
⋯
(
n
−
1
)
2
⋅
n
1
.
{\displaystyle \mathrm {sf} (n)=\prod _{k=1}^{n}k!=\prod _{k=1}^{n}k^{n-k+1}=1^{n}\cdot 2^{n-1}\cdot 3^{n-2}\cdot 4^{n-3}\cdots (n-1)^{2}\cdot n^{1}.}
これは以下と同値:
s
f
(
n
)
=
∏
0
≤
i
<
j
≤
n
(
j
−
i
)
.
{\displaystyle \mathrm {sf} (n)=\prod _{0\leq i<j\leq n}(j-i).}
最初のいくつかの値は、次のようになる:
1, 1, 2, 12, 288, 34560, 24883200, 125411328000, …… A000178
超階乗は、複素数値にも拡張できる。その結果はバーンズのG関数 と呼ばれる。定義は次のようになる。
G
(
z
+
1
)
=
(
2
π
)
z
/
2
exp
(
−
z
+
z
2
(
1
+
γ
)
2
)
∏
k
=
1
∞
{
(
1
+
z
k
)
k
exp
(
z
2
2
k
−
z
)
}
{\displaystyle G(z+1)=(2\pi )^{z/2}{\text{exp}}\left(-{\frac {z+z^{2}(1+\gamma )}{2}}\right)\,\prod _{k=1}^{\infty }\left\{\left(1+{\frac {z}{k}}\right)^{k}{\text{exp}}\left({\frac {z^{2}}{2k}}-z\right)\right\}}
自然数に対しては、以下が成り立っている。
G
(
n
+
2
)
=
s
f
(
n
)
=
{
0
if
n
=
−
1
,
−
2
,
…
∏
i
=
0
n
i
!
if
n
=
0
,
1
,
2
,
…
{\displaystyle G(n+2)=\mathrm {sf} (n)={\begin{cases}0&{\text{if }}n=-1,-2,\dots \\\prod _{i=0}^{n}i!&{\text{if }}n=0,1,2,\dots \end{cases}}}
hyperfactorial
ハイパー階乗 (hyperfactorial )は、以下で定義される。
H
(
n
)
=
∏
k
=
1
n
k
k
=
1
1
⋅
2
2
⋅
3
3
⋯
(
n
−
1
)
n
−
1
⋅
n
n
{\displaystyle H(n)=\prod _{k=1}^{n}k^{k}=1^{1}\cdot 2^{2}\cdot 3^{3}\cdots (n-1)^{n-1}\cdot n^{n}}
これはとても大きくなっていく。最初のいくつかの値はつぎの通りである[ 15] 。
1 , 4 , 108 , 27648, 86400000, ……
ハイパー階乗は定義域を複素数にまで拡張できる。それはK函数 と呼ばれ、以下で定義される。
K
(
z
)
=
(
2
π
)
(
−
z
+
1
)
/
2
exp
[
(
z
2
)
+
∫
0
z
−
1
ln
(
t
!
)
d
t
]
.
{\displaystyle K(z)=(2\pi )^{(-z+1)/2}\exp \left[{\begin{pmatrix}z\\2\end{pmatrix}}+\int _{0}^{z-1}\ln(t!)\,dt\right].}
自然数nに対し、次が成り立つ。
K
(
n
+
1
)
=
1
1
2
2
3
3
4
4
⋯
n
n
.
{\displaystyle K(n+1)=1^{1}\,2^{2}\,3^{3}\,4^{4}\,\cdots n^{n}.}
階冪
以下、↑をクヌースの矢印表記 とする。
階乗が連続する整数を順に「乗」じるのに対し、連続する整数を順に冪にする演算として階「冪」 (exponential factorial ) [ 注釈 4] n ! (感嘆符は右肩に添字として書く)は
n
!
=
{
1
(
n
=
0
)
n
(
n
−
1
)
!
=
n
↑
(
n
−
1
)
!
(
n
>
0
)
{\displaystyle n^{!}={\begin{cases}1&(n=0)\\n^{{(n-1)}^{!}}=n\uparrow {(n-1)}^{!}&(n>0)\end{cases}}}
で与えられる。つまり、自然数 n に対して
n
!
=
n
(
n
−
1
)
(
n
−
2
)
⋅
⋅
⋅
3
2
1
=
n
↑
(
n
−
1
)
↑
(
n
−
2
)
↑
⋯
⋯
↑
3
↑
2
↑
1
{\displaystyle n^{!}=n^{(n-1)^{(n-2)^{\cdot ^{\cdot ^{\cdot ^{3^{2^{1}}}}}}}}=n\uparrow \left(n-1\right)\uparrow \left(n-2\right)\uparrow \cdots \cdots \uparrow 3\uparrow 2\uparrow 1}
であり、最初の5つの値は次のようになる。
0! = 1, 1! = 1, 2! = 2, 3! = 9, 4! = 262144, …… (オンライン整数列大辞典 の数列 A049384 )
5! の値は十進展開で183231桁にも及ぶきわめて大きな自然数である。
5
!
=
5
4
!
=
5
262144
≈
6.2
×
10
183230
.
{\displaystyle 5^{!}=5^{4^{!}}=5^{262144}\approx 6.2\times 10^{183230}.}
これ以降は、グーゴルプレックス
10
10
100
{\displaystyle 10^{10^{100}}}
より遥かに大きくなる(6! を計算すると、およそ 66.2×10183230 ≒ 104.8×10183230 となる)。
全ての自然数の exponential factorial の逆数の総和は、
∑
n
=
1
∞
1
n
!
=
1.611114925808376736
111
⋯
111
⏟
183213 digits
272243
⋯
{\displaystyle \sum _{n=1}^{\infty }{\frac {1}{n^{!}}}=1.611114925808376736\underbrace {111\cdots 111} _{\text{183213 digits}}272243\cdots }
となる。この数は、超越数 であり、リウヴィル数 である[ 17] 。
また、高次 exponential factorial が定義される。例として、二次 exponential factorial は、
n
!
!
=
n
!
2
=
(
n
!
)
(
n
−
1
)
!
2
=
(
n
!
)
(
(
n
−
1
)
!
)
(
(
n
−
2
)
!
)
.
.
.
(
3
!
)
(
2
!
)
1
!
=
n
!
↑
(
n
−
1
)
!
↑
(
n
−
2
)
!
↑
⋯
⋯
↑
3
!
↑
2
!
↑
1
!
{\displaystyle {\begin{aligned}n^{!!}=n^{{!}^{2}}=\left(n^{!}\right)^{(n-1)^{!^{2}}}&=\left(n^{!}\right)^{\left((n-1)^{!}\right)^{\left((n-2)^{!}\right){.^{.^{.^{\left(3^{!}\right)^{\left(2^{!}\right)^{1^{!}}}}}}}}}\\&=n^{!}\uparrow (n-1)^{!}\uparrow (n-2)^{!}\uparrow \cdots \cdots \uparrow 3^{!}\uparrow 2^{!}\uparrow 1^{!}\end{aligned}}}
となる。一般の m -次 exponential factorial は、
n
!
m
=
(
n
!
(
m
−
1
)
)
(
n
−
1
)
!
m
=
n
!
(
m
−
1
)
(
n
−
1
)
!
(
m
−
1
)
.
.
.
2
!
(
m
−
1
)
1
!
(
m
−
1
)
=
n
!
(
m
−
1
)
↑
(
n
−
1
)
!
(
m
−
1
)
↑
⋯
⋯
↑
2
!
(
m
−
1
)
↑
1
!
(
m
−
1
)
{\displaystyle {\begin{aligned}n^{{!}^{m}}=\left(n^{{!}^{(m-1)}}\right)^{{(n-1)}^{!^{m}}}&={n^{{!^{(m-1)}}{(n-1)^{{!^{(m-1)}}{{.}^{{.}^{{.}^{2^{{!^{(m-1)}}{1^{!^{(m-1)}}}}}}}}}}}}\\&=n^{!^{(m-1)}}\uparrow (n-1)^{!^{(m-1)}}\uparrow \cdots \cdots \uparrow 2^{!^{(m-1)}}\uparrow 1^{!^{(m-1)}}\end{aligned}}}
で与えられる。ただし、n, m は自然数である。
歴史
n 個の相異なる対象を1列に並べる方法の総数が n ! 通りであるということは、少なくとも12世紀にはインドの学者によって知られていた[ 18] 。ファビアン・ステッドマン (英語版 ) は1677年にチェンジリンギング (英語版 ) への応用として階乗を記述した[ 注釈 5] 。再帰的な手法による記述の後、Stedman は(独自の言葉を用いて)階乗に関しての記述を与えている:
Now the nature of these methods is such, that the changes on one number comprehends [includes] the changes on all lesser numbers, ... insomuch that a compleat Peal of changes on one number seemeth to be formed by uniting of the compleat Peals on all lesser numbers into one entire body;
感嘆符 (!)を用いた、この "n ! " という表記は1808年 にクリスチャン・クランプ によって発明された[ 21] 。
注
注釈
^ 空集合 から空集合への全単射は空写像 ただ1つ存在する。
^ このような (n , m ) を、ブラウン数 (英 : Brown numbers ) と呼ぶ。
^ a b 両者は全く同値でない
^ 指数階乗[ 16] 、中国語 : 阶幂
^ The publisher is given as "W.S." who may have been William Smith, possibly acting as agent for the Society of College Youths , to which society the "Dedicatory" is addressed.[ 19]
出典
^ Graham, Knuth & Patashnik , p. 111
^ Guy 2004 , p. 346
^ Ramanujan 1988 , p. 339
^ Hadamard 1894
^ Peter Luschny, Hadamard versus Euler - Who found the better Gamma function? .
^ Digital Library of Mathematical Functions, http://dlmf.nist.gov/5.10
^ Hadamard 1894
^ Peter Luschny, On Stieltjes' Continued Fraction for the Gamma Function. .
^ The Factorial Function and Generalizations
^ Weisstein, Eric W. "Double Factorial" . mathworld.wolfram.com (英語).
^ Weisstein, Eric W. "Primorial" . mathworld.wolfram.com (英語).
^ Pickover, Clifford A. (1995). Keys to Infinity . New York: John Wiley & Sons. doi :10.2307/2687608 . JSTOR 2687608
^ Sloane, Neil J. A. ; Plouffe, Simon (1995). The Encyclopedia of Integer Sequences . San Diego: Academic Press. ISBN 0-12-558630-2 . https://oeis.org/book.html
^ オンライン整数列大辞典 の数列 A002109
^ 巨大数研究 Wiki 指数階乗
^ Sondow, Jonathan. "Exponential Factorial" . mathworld.wolfram.com (英語).
^ Biggs , pp. 109–136
^ Stedman 1677 , pp. 6–9
^ Higgins , p. 12
参考文献
ドナルド・E・クヌース 、ロナルド・L・グレアム・オーレン・パタシュニク 『コンピュータの数学』 有澤誠・ほか訳、共立出版、1993年8月。ISBN 4-320-02668-3 : 原著 Graham, Ronald L.; Knuth, Donald E.; Patashnik, Oren (1988), Concrete Mathematics , Addison-Wesley, Reading MA, ISBN 0-201-14236-8
Keith B. Oldham他 『関数事典(CD-ROM付)』 河村哲也監訳、朝倉書店、2013年12月、ISBN 978-4-254-11136-1 。
Biggs, N. L. (1979), The roots of combinatorics , Historia Math. 6
Stedman, Fabian (1677), Campanalogia , London
Higgins, Peter (2008), Number Story: From Counting to Cryptography , New York: Copernicus, ISBN 978-1-84800-000-1
Guy, Richard K. (2004), “E24 Irrationality sequences” , Unsolved problems in number theory (3rd ed.), Springer-Verlag , ISBN 0-387-20860-7 , Zbl 1058.11001 , http://books.google.com/books?id=1AP2CEGxTkgC&pg=PA346
Ramanujan, Srinivasa (1988), The lost notebook and other unpublished papers , Springer Berlin, ISBN 3-540-18726-X
Hadamard, M. J. (1894) (French), Sur L’Expression Du Produit 1·2·3· · · · ·(n−1) Par Une Fonction Entière , OEuvres de Jacques Hadamard , Centre National de la Recherche Scientifiques, Paris, 1968, http://www.luschny.de/math/factorial/hadamard/HadamardFactorial.pdf
関連項目
外部リンク
ウィキメディア・コモンズには、
階乗 に関連するカテゴリがあります。