「階乗」の版間の差分
imported>Tyutyanya 細 →階冪: {{要出典|date=2024年9月}} |
(相違点なし)
|
2024年9月26日 (木) 01:31時点における最新版
数学において自然数 テンプレート:Mvar の階乗(かいじょう、テンプレート:Lang-en-short)テンプレート:Math とは、1 から テンプレート:Mvar までの全ての整数の積のことである[1]。例えば、
である。空積の規約の下 テンプレート:Math2 と定義する[2]。
階乗は数学の様々な場面に出現するが、特に組合せ論、代数学、解析学などが著しい。階乗の最も基本的な出自は テンプレート:Mvar 個の相異なる対象を1列に並べる方法(対象の置換)の総数が テンプレート:Math 通りであるという事実である。
| 0! | 1 |
|---|---|
| 1! | 1 |
| 2! | 2 |
| 3! | 6 |
| 4! | 24 |
| 5! | 120 |
| 6! | 720 |
| 7! | テンプレート:Val |
| 8! | テンプレート:Val |
| 9! | テンプレート:Val |
| 10! | テンプレート:Val |
| 11! | テンプレート:Val |
| 12! | テンプレート:Val |
| 13! | テンプレート:Val |
| 14! | テンプレート:Val |
| 15! | テンプレート:Val |
| 16! | テンプレート:Val |
| 17! | テンプレート:Val |
| 18! | テンプレート:Val |
| 19! | テンプレート:Val |
| 20! | テンプレート:Val |
| 21! | テンプレート:Val |
| 22! | テンプレート:Val |
| 23! | テンプレート:Val |
階乗の定義は、最も重要な性質を残したまま、非整数を引数とする函数に拡張することができる。そうすれば解析学における著しい手法などの進んだ数学を利用できるようになる。
定義
いくつか同値な条件により定義することが可能である。
- 再帰的な定義
- 微分に関する「テンプレート:仮リンク」を用いた定義
- n! = ( n 元集合の置換の総数 )
上記の何れの定義においても、
となることが織り込み済みである(最初の定義では「 0 項の積は 1 と定める」という規約によって)テンプレート:Efn。このように定義する理由は: テンプレート:Ordered list など様々に挙げることができる。
より進んだ数学においては、引数が非整数の場合にも階乗函数を定義することができる(後述)。そういった一般化された定義のもとでの階乗は関数電卓や、Maple や Mathematica などの数学ソフトウェアで利用できる。
プログラミング言語における階乗
多くのプログラミング言語において、再帰的な定義を利用し、プロシージャの再帰呼び出しを用いた階乗の実装が可能である。
以下はC言語での例である。例示するコードではunsigned long long型を使用しているが、unsigned long long型では小さな階乗(21!)でもオーバーフローしてしまうため、大きな階乗については任意精度演算による実装を検討すべきである[3]。
テンプレート:See also
unsigned long long factorial(unsigned int n)
{
if (n > 0)
return n * factorial(n - 1);
return 1; // 0! == 1
}
組合せ論
テンプレート:出典の明記 階乗を含む公式は数学の多くの分野に現れるが、階乗のおおもとの出自は組合せ論にある。相異なる テンプレート:Mvar 個の対象の順列(テンプレート:Mvar-順列)の総数は テンプレート:Math 通りである。
階乗はしばしば「順番を無視する」という事実を反映するものとして分母に現れる。古典的な例としては テンプレート:Mvar 個の元から テンプレート:Mvar 個の元を選ぶ組合せ(テンプレート:Mvar-組合せ)の総数が挙げられる。このような組合せは順列から得ることができる。実際、テンプレート:Mvar-順列の総数
において、順番のみが違う(テンプレート:Mvar-組合せでは違いが無視される)テンプレート:Mvar-順列が テンプレート:Math 通りずつ存在するから、テンプレート:Mvar-組合せの総数は
となる。この数は、二項冪 テンプレート:Math2 における テンプレート:Mvar の係数となることから、二項係数 とも呼ばれる。
代数学に現れる階乗にはいくつも理由があるが、既述の如く二項展開の係数として現れたり、ある種の演算のテンプレート:仮リンク において置換による平均化を行うなど、組合せ論的な理由で現れるものもある。
微分積分学においても階乗は例えばテイラー級数の分母として現れるが、これは冪函数 テンプレート:Mvar の テンプレート:Mvar 階導函数が テンプレート:Math であることを補正する定数である。確率論でも階乗は用いられる。
階乗は数式操作にも有効である。例えば テンプレート:Mvar の テンプレート:Mvar-順列の総数を
と書けば、(この数値を計算することを考えれば効率が悪くなるが)二項係数の対称性
を見るには都合がよい。
数論における階乗
テンプレート:出典の明記 階乗は数論にも多くの応用を持つ。特に テンプレート:Math は テンプレート:Mvar 以下の全ての素数で整除されねばならない。このことの帰結として、テンプレート:Math が合成数となる必要十分条件は
が満たされることである。より強い結果としてウィルソンの定理は
が テンプレート:Mvar が素数であるための必要十分条件であることを述べる。
ルジャンドルの公式は テンプレート:Math の素因数分解に現れる テンプレート:Mvar の重複度が
であることを示す。これは
に等しくなる。ただし、テンプレート:Math は テンプレート:Mvar の テンプレート:Mvar進展開の係数の和である。
テンプレート:Math が素数となる テンプレート:Mvar は テンプレート:Math のみである。テンプレート:Math2 の形の素数は階乗素数と呼ばれる。
テンプレート:Math より大きな階乗は全て偶数である(これらは明らかに因数 テンプレート:Math を持ち、テンプレート:Math の倍数である)。同様に、テンプレート:Math より後の階乗は テンプレート:Math の倍数(テンプレート:Math と テンプレート:Math を因数に持つ)であり、十進展開のテンプレート:仮リンク。
ブロカールの問題
テンプレート:Main ブロカールの問題とは、
を満たす テンプレート:Math2 は存在するか、という問題である。2015年9月現在、これを満たす テンプレート:Math2 の組テンプレート:Efnは
- (4, 5), (5, 11), (7, 71)
しか見つかっていない。ABC予想が真であれば、解は有限個しかないことが、Marius Overholt により示されている。
階乗の解析学
階乗の逆数和
を与える(ネイピア数を参照)。この和は無理数となるけれども、階乗に適当な正整数を掛けて和が有理数となるようにすることができる。例えば、
この級数の値が 1 となることを見るには、その部分和が 1 − 1/(n+2)! であることを確認すればよい。したがって、階乗数の全体はテンプレート:仮リンクを成さない[4]。
階乗の増大度

テンプレート:Mvar が増えるにつれて、階乗 テンプレート:Math は テンプレート:Mvar を変数とする任意の多項式函数あるいは指数函数よりも早く増加する(ただし、二重指数関数よりは遅い)。
テンプレート:Math の近似式の多くは自然対数
であることを利用する。最も単純に得られる テンプレート:Math の近似値を評価する式は、上記の式と以下の積分:
によって与えられる。積分を評価すれば
を得る。これは、ランダウの記号を用いれば テンプレート:Math のオーダーは テンプレート:Math であることを言っているのであり、この結果はソートアルゴリズムの計算量を測るのに重要な役割を果たす。さて上記の テンプレート:Math の評価から
が分かる。実用上はより弱い結果だがより評価のしやすいものを用いることもある。上記の式から簡単な評価をしてみると、任意の テンプレート:Mvar に対して テンプレート:Math2 であり、また テンプレート:Math2 のとき テンプレート:Math2 であることなどが分かる。
大きな テンプレート:Mvar に対して テンプレート:Math をよりよく評価するにはスターリングの公式
を利用する。(ここで は両辺の比が テンプレート:Math に収束することを表す。)実は任意の テンプレート:Mvar に対して
であることが証明できるテンプレート:Sfn。
テンプレート:Math の別な近似はシュリニヴァーサ・ラマヌジャンにより
したがって
と与えられている[5]。この近似の誤差は、スターリングの公式よりも小さい。
連続変数への補間
ガンマ関数とパイ関数

負の整数を除けば、階乗関数は非整数の値に対しても定義することができるが、そのためには解析学の道具立てが必要である。そのように階乗の値を「補間」して得られるものの一つがガンマ函数 テンプレート:Math である(ただし引数が 1 だけずれる)。これは負の整数を除く任意の複素数 テンプレート:Mvar に対して定義される。テンプレート:Mvar の実部が正である場合には
で与えられる。ガンマ函数と階乗との関係は、任意の自然数 テンプレート:Mvar に対して
が成り立つことである。オイラーのもともとの定義式は
である。ガウスの導入した別表記として、負でない実数 テンプレート:Mvar に対するパイ函数 テンプレート:Math は
を満たす。ガンマ函数との関係は
である。非負整数 テンプレート:Mvar に対し
が成り立つことを思えば、こちらのほうが階乗を補完した函数としては適していると言えるかもしれない。さてパイ函数は階乗が満たすのと同じ漸化式
を、しかし定義される限り任意の複素数 テンプレート:Mvar に対して満たす。事実としてはこれはもう漸化式ではなくて函数等式と見るべきものであるが。この函数等式をガンマ函数に関するものに書き換えれば
となる。階乗を延長したものがパイ函数なのだから、定義可能な任意の複素数 テンプレート:Mvar に対して
と定めることは可能である。これらの補間函数を用いて半整数における階乗の値を定めるならば、例えば
が成り立ち、さらに自然数 テンプレート:Math2 に対して
が得られる。例えば
同様に テンプレート:Math2 に対して
が成り立ち、例えば
パイ函数が殆ど全ての複素数値に対して定義される階乗の延長として唯一のものでないことはもちろんである。それは定義域において解析的としても同じことである。しかし、普通はこれが階乗の複素函数への最も自然な延長であるものと考える。例えば、ボーア・モレルップの定理はガンマ函数が テンプレート:Math2 かつ函数等式 テンプレート:Math2 を満たす、ガウス平面の全域で有理型かつ実軸の正の部分でテンプレート:仮リンクとなるような唯一の函数であることを述べる。同様の主張はパイ函数に関しても、函数等式 テンプレート:Math2 に関して述べられる。
そうは言うものの、解析的函数論の意味で恐らくより簡明な、階乗の値を補間する複素函数は存在する。例えばアダマールの「ガンマ」函数[6]はガンマ函数とは異なり整函数になる[7]。
オイラーはまた非整数の階乗に対する近似無限乗積
についても考察している。これは上記のガンマ函数に関する公式と同じものと見做すことができる。しかしこの公式は収束が遅く、実用的な意味でパイ函数やガンマ函数の値を計算することに利用することはできない。
ガウス平面上での挙動

複素変数の階乗の値をガンマ函数による表現を通して評価することができる。絶対値 テンプレート:Math と偏角 テンプレート:Math を用いて
と書けば、絶対値一定曲線 テンプレート:Math2 と偏角一定曲線 テンプレート:Math2 を等値線として格子を描くことができる。一定間隔で引いた等値線の間にさらに細かく等値線を引けば、それが補間で得られる値である。極である負の整数においては絶対値と偏角が定義できず、またその周辺で等値線は密になる。 テンプレート:-
テンプレート:Math2 に対してはテイラー展開
が利用できる。この展開のより多くの項は、Sageのような計算機代数システムで計算できる。 テンプレート:-
階乗の近似
大きな値に対する階乗の値の近似をディガンマ函数の積分を通じて連分数表示を用いて記述できる。この方法はスティルチェスによる[6]もので、テンプレート:Math2 と書けば テンプレート:Math は
で、スティルチェスはこの第一項 テンプレート:Math の連分数展開
を与えた。
さて、任意の複素数 テンプレート:Math に対して テンプレート:Math2 あるいは テンプレート:Math2 とするのは誤りでありテンプレート:Cn、実際には実軸の近くの特定の範囲の テンプレート:Mvar でしか成り立たない(一方 テンプレート:Math2 である。引数の実部は大きいほど、虚部はより小さくなければならない。しかし逆の関係式 テンプレート:Math2 は原点を除くガウス平面の全域で有効である。ただし実軸の負の部分では収束性は弱くなるテンプレート:Cn(特異点の周辺ではどのような近似もよい収束性を得ることが難しい)。一方、テンプレート:Math2 または テンプレート:Math の範囲では上記の六つの係数は テンプレート:Code 精度の複素数に対してその階乗の近似値を得るのに十分である。より高い精度でより多くの係数を計算するには rational QD-scheme (H. Rutishauser's QD algorithm)[9]を用いる。
負の整数に対する拡張不能性
関係式 テンプレート:Math2 を使えばある整数に対する階乗をそれより「小さい」整数の階乗から計算できる。この関係式を逆に使えば、「大きい」整数に対して与えられた階乗から
と計算することも可能である。しかし注意すべきは、これでは負の整数に関する階乗を計算することはできないということである(この式に従って テンプレート:Math を計算するには零除算が必要となりこれ以下の負の整数における階乗の値の計算は不可能となる)。このことはガンマ函数においても同じことで、ガンマ函数は負の整数を除くガウス平面の全域において定義できるにも拘らず、負の整数における値だけは定義することができない。
一般化
多重指数記法
多重指数 に対し階乗は、
と定義できる。これは例えば、多変数関数の展開に使われる。
デデキント環への拡張
マンジュル・バルガヴァは階乗を一般のデデキント環上で定義し、いくつかの古典的な問題を解決するために用いた[10]。それらの階乗は整数ではなく、イデアルとなる。
階乗に類似する概念
二重階乗
テンプレート:Main 階乗の類似として、二重階乗 テンプレート:Math は自然数 テンプレート:Mvar に対し一つ飛ばしに積を取る。二重階乗 テンプレート:Math は階乗 テンプレート:Math の二回反復合成 テンプレート:Math とは異なる。
奇数 テンプレート:Math2 に対する二重階乗の最初の方の値は
偶数 テンプレート:Math2 に対する二重階乗の値の最初の方は
で与えられる。
負の奇数にも拡張される( )。また、複素数値への拡張として、以下が知られている[11]。
多重階乗
より一般に多重階乗 (multifactorial) は、連続した整数の積である通常の階乗 テンプレート:Math、一つ飛ばしの積である二重階乗 テンプレート:Math、二つ飛ばしの積である三重階乗 テンプレート:Math または テンプレート:Math、三つ飛ばしの四重階乗 テンプレート:Math または テンプレート:Math などを総称して言う。
- 四重階乗の例
- テンプレート:Math2(テンプレート:OEIS2C)
- テンプレート:Math2(テンプレート:OEIS2C)
- テンプレート:Math2(テンプレート:OEIS2C)
- テンプレート:Math2(テンプレート:OEIS2C)
- 定義
- 一般の テンプレート:Mvar-重階乗 テンプレート:Math は正整数 テンプレート:Mvar に関して帰納的に
と定義できる。これと異なる定義として
- 定義
-
とするものもある。
階乗冪
テンプレート:Main 自然数 テンプレート:Math2 に対して、テンプレート:Mvar の テンプレート:Mvar-順列の総数 テンプレート:Math は テンプレート:Mvar から始めて上から テンプレート:Mvar 個の連続する整数の積を取る(ある意味で不完全な階乗とも呼べる)階乗の類似物であった。これを下降階乗冪と呼ぶ。その反対に テンプレート:Mvar から始めて下から テンプレート:Mvar 個の連続する整数の積をとったもの テンプレート:Math を上昇階乗冪といい、これら二つを総称して階乗冪と呼ぶ。ただし一般に自然数に限らず(実数や複素数などに値をとる)テンプレート:Mvar を変数として
を考えることが多い。明らかに自然数 テンプレート:Mvar に対して
また一般に実数 テンプレート:Math2 に対して
と定義する(空積も参照)が テンプレート:Math2 のときもそうであるかは規約による(例えば上記の関係式 テンプレート:Math2 は テンプレート:Math2 のとき テンプレート:Math で矛盾しない。0^0も参照)。
素数階乗
テンプレート:Main 素数階乗 (Primorial) テンプレート:Math は最初の テンプレート:Mvar-個の素数の総乗
である[12]。(テンプレート:OEIS)
これは、素数が無限に存在するという命題の証明に用いられることがある。
超階乗
テンプレート:Anchors テンプレート:Main テンプレート:Harvtxt[13] の超階乗(superfactorial)は、階乗を入れ子に拡張したものである。ドル記号$を用いて書かれる。またLawrence Hollom氏が開発した超階乗配列表記は階乗をベースとした配列表記で従来の階乗や超階乗より遥かに大きな増加速度を持つ。
nが3以上になると、非常に大きい値になる。
これとは異なる種類の超階乗の定義がある。テンプレート:Harvs テンプレート:Lang[14] は、超階乗(superfactorial)を定義した。例として、4の超階乗は次のようになる。
一般的にこの定義における超階乗は下の式で定義される。
これは以下と同値:
最初のいくつかの値は、次のようになる:
超階乗は、複素数値にも拡張できる。その結果はバーンズのG関数と呼ばれる。定義は次のようになる。
自然数に対しては、以下が成り立っている。
hyperfactorial
テンプレート:See also ハイパー階乗 (hyperfactorial) は、以下で定義される。
これはとても大きくなっていく。最初のいくつかの値はつぎの通りである[15]。
ハイパー階乗は定義域を複素数にまで拡張できる。それはK函数と呼ばれ、以下で定義される。
自然数 テンプレート:Mvar に対し、次が成り立つ。
階冪
テンプレート:Main テンプレート:Anchors以下、↑をクヌースの矢印表記とする。
階乗が連続する整数を順に「乗」じるのに対し、連続する整数を順に冪にする演算として階「冪」 (exponential factorial) テンプレート:Efn テンプレート:Math(感嘆符は右肩に添字として書く)テンプレート:要出典は
で与えられる。つまり、自然数 テンプレート:Mvar に対して
であり、最初の5つの値は次のようになる。
テンプレート:Math の値は十進展開で183231桁にも及ぶきわめて大きな自然数である。
これ以降は、グーゴルプレックス より遥かに大きくなる(テンプレート:Math を計算すると、およそ 6テンプレート:Sup ≒ 10テンプレート:Sup となる)。
全ての自然数の exponential factorial の逆数の総和は、
となる。この数は、超越数であり、リウヴィル数である[16]。
また、高次 exponential factorial が定義される。例として、二次 exponential factorial は、
となる。一般の テンプレート:Mvar-次 exponential factorial は
で与えられる。ただし、テンプレート:Math2 は自然数である。
歴史
テンプレート:Mvar 個の相異なる対象を1列に並べる方法の総数が テンプレート:Math 通りであるということは、少なくとも12世紀にはインドの学者によって知られていた[17]。テンプレート:仮リンクは1677年にテンプレート:仮リンクへの応用として階乗を記述したテンプレート:Efn。再帰的な手法による記述の後、Stedman は(独自の言葉を用いて)階乗に関しての記述を与えている: テンプレート:Quotation
感嘆符(!)を用いた、この "テンプレート:Math" という表記は1808年にクリスチャン・クランプによって発明された[18]。
注
注釈
出典
参考文献
- ドナルド・E・クヌース、ロナルド・L・グレアム・オーレン・パタシュニク 『コンピュータの数学』 有澤誠・ほか訳、共立出版、1993年8月。ISBN 4-320-02668-3 : 原著 テンプレート:Citation
- Keith B. Oldham他 『関数事典(CD-ROM付)』 河村哲也監訳、朝倉書店、2013年12月、ISBN 978-4-254-11136-1。
- テンプレート:Citation
- テンプレート:Citation
- テンプレート:Citation
- テンプレート:Citation
- テンプレート:Citation
- テンプレート:Citation
関連項目
- 巨大数
- 総乗
- 交互階乗
- マンジュル・バルガヴァ
- 完全順列 (subfactorial function)
- 階乗の交代和
- ファクトリオン
- テンプレート:仮リンク
- 三角数:階乗の加法的な対応物(テンプレート:Math から テンプレート:Mvar までの自然数の和)
- 階乗進法
外部リンク
テンプレート:Commonscat テンプレート:ウィキプロジェクトリンク テンプレート:ウィキポータルリンク
- ↑ テンプレート:Cite Kotobank
- ↑ テンプレート:Harvnb
- ↑ この記事のテンプレート:Oldidで「大きな階乗については
double型のような浮動小数点数型を用いるなどの工夫が必要となる」との記述があったが、2021年時点の典型的な64ビットマイクロプロセッサでは、整数型のビット長 > 浮動種数点型の仮数部のビット長 なのでこれは当たらない。 - ↑ テンプレート:Harvnb
- ↑ テンプレート:Harvnb
- ↑ 6.0 6.1 テンプレート:Harvnb
- ↑ Peter Luschny, Hadamard versus Euler - Who found the better Gamma function?.
- ↑ Digital Library of Mathematical Functions, http://dlmf.nist.gov/5.10
- ↑ Peter Luschny, On Stieltjes' Continued Fraction for the Gamma Function..
- ↑ The Factorial Function and Generalizations
- ↑ テンプレート:MathWorld
- ↑ テンプレート:Mathworld
- ↑ テンプレート:Cite book
- ↑ テンプレート:Cite book
- ↑ テンプレート:OEIS
- ↑ テンプレート:MathWorld
- ↑ テンプレート:Harvnb
- ↑ テンプレート:Harvnb