Mathematica >

組合せ関数

n!階乗 n (n-1) (n-2)...1
n!!2重階乗 n (n-2) (n-4)...
Binomial[n,m]2項係数
Multinomial[n1,n2,...]多項係数 (n1+n2+...)!/ (n1!n2!...)
CatalanNumber[n]カタラン数 cn
Subfactorial[n]n 個のオブジェクトの乱列の数
Fibonacci[n]フィボナッチ数 Fn
Fibonacci[n,x]フィボナッチ多項式 Fn (x)
LucasL[n]リュカ数 Ln
HarmonicNumber[n]調和数 Hn
HarmonicNumber[n,r]r 次の調和数
BernoulliB[n]ベルヌーイ数 Bn
BernoulliB[n,x]ベルヌーイ多項式 Bn (x)
NorlundB[n,a]Nörlund多項式
NorlundB[n,a,x]一般化されたベルヌーイ多項式
EulerE[n]オイラー数 En
EulerE[n,x]オイラーの多項式 En (x)
StirlingS1[n,m]第1種のスターリング数
StirlingS2[n,m]第2種のスターリング数
BellB[n]ベル数 Bn
BellB[n,x]ベル多項式 Bn (x)
PartitionsP[n]整数n を整数の和に分けるときの分け方の総数 p (n)
IntegerPartitions[n]整数の分け方
PartitionsQ[n]整数n を互いに異なる整数の和に分けるときの分け方の総数 q (n)
Signature[{i1,i2,...}]順列の符号

順列組合せの関数

階乗関数n!は,n 個のものの並べ方の総数を与える.n が整数でないとき,n!の数値は「特殊関数」で説明するガンマ関数から求められる.
2項係数の関数Binomial[n, m]は,と書ける.この関数は,並び順を考慮しないとき,n 個のものの中からのm 個のものの取出し方の数を与える.また,各種の木の枚挙問題に現れるカタラン(Catalan)数は,2項係数により,の関係式で与えられる.
かく乱順列Subfactorial[n]は,オブジェクトがひとつも固定されないn 個のオブジェクトの置換の数を与える.このような置換は乱列と呼ばれる.かく乱順列はn! (-1)k/k!で与えられる.
多項係数Multinomial[n1, n2, ...]は, (N;n1, n2, ..., nm)=N!/ (n1!n2!... nm!)と書け,N 個の異なるものを大きさnim 個の集合に分ける方法の総数を表す(N=ni).
Mathematica は,整数の階乗に対しては厳密な整数で結果を返す.
In[1]:=
Click for copyable input
Out[1]=
非整数の階乗は,ガンマ関数で評価される.
In[2]:=
Click for copyable input
Out[2]=
Mathematica は,2項係数によっては,シンボル的な結果を返すこともできる.
In[3]:=
Click for copyable input
Out[3]=
6+5=11個のものを6個と5個のものからなる組に分けるとき,分け方が何通りあるかを調べる.
In[4]:=
Click for copyable input
Out[4]=
この結果は,と同じである.
In[5]:=
Click for copyable input
Out[5]=
フィボナッチの数Fibonacci[n]は,F1=F2=1のときに漸化式Fn=Fn-1+Fn-2を満たす.この数は離散数学で広く使われる.n を増加させると,Fn/Fn-1は黄金比に近付く.リュカ数LucasL[n]は,初期値がL1=1L2=3の,フィボナッチ数と同じ循環関係を満足する.
フィボナッチの多項式Fibonacci[n, x]は,式t/ (1-xt-t2)=Fn (x)tn の展開で得られる項tn の係数に当たる.
調和数HarmonicNumber[n]Hn=1/i で与えられる.r 次の調和数HarmonicNumber[n, r] で与えられる.調和数は多くの組合せ論の推定問題で現れ,しばしば離散化された対数に相当する役割を演じる.
ベルヌーイの多項式BernoulliB[n, x]は,母関数の関係式tex t/ (et-1)=Bn (x)tn/n! を満たす.また,ベルヌーイ数BernoulliB[n]は,Bn=Bn (0)で与えられる.Bn は,近似積分で使われるオイラー・マクローリン(Euler-Maclaurin)総和の式における項の係数に当たる.ベルヌーイ数はジェノッチ数とGn=2 (1-2n)Bn.の関係にある.
ベルヌーイ数の近似値はさまざまな数値計算アルゴリズムで使われる.ベルヌーイ数の数値は,まずBernoulliB[n]を使い厳密な有理値として求めておき,それにNを適用することで求められる.
オイラーの多項式EulerE[n, x]は,母関数の関係式2ex t/ (et+1)=En (x)tn/n! を満たす.また,オイラー数EulerE[n]は,で与えられる.
Nörlund多項式NorlundB[n, a]は母関数の関係式を満足する.Nörlundは,a=1のときベルヌーイ数を返す.a が他の正の整数値である場合,Nörlund多項式は高次のベルヌーイ数を返す.一般化されたベルヌーイ多項式NorlundB[n, a, x] は,簿関数の関係式を満足する.
ベルヌーイの多項式の第2項B2 (x)を求める.
In[6]:=
Click for copyable input
Out[6]=
また,実際に母関数に対してベキ級数を計算してもベルヌーイの項は求めることができる.
In[7]:=
Click for copyable input
Out[7]=
BernoulliB[n]は,ベルヌーイ数を厳密な有理数として返す.
In[8]:=
Click for copyable input
Out[8]=
スターリング数は組合せ理論の枚挙問題によく現れる.第1種のスターリング数StirlingS1[n, m]に対して,は,ちょうどm 回循環するn 個の要素の順列の個数を返す.スターリング数は,母関数の関係式を満たす.注意点として, の定義によっては, (-1)n-m の係数が付くためMathematica の定義と異なる場合がある.
第2種のスターリング数StirlingS2[n, m]と記述されることもあるが,n 個の要素を空でないm 組の部分集合に分ける上で何通りの分け方があるかを返す.第2種のスターリング数は,の関係式を満たす.
ベル数BellB[n]は,要素数n 個の集合を空ではない部分集合分割する方法の総数を与える.ベル多項式BellB[n, x]は,生成関数関係を満足する.
分割関数PartitionsP[n]は,整数n を正整数の和として順不同で組み合すとき,組合せ方が何通りあるかを返す.PartitionsQ[n]は,和を構成する整数成分が相異するとき,整数n の組合せ方が何通りあるかを返す.
IntegerPartitions[n]は,長さがPartitionsP[n]n の分割のリストを与える.
第1種のスターリング数の表を作る.
In[9]:=
Click for copyable input
Out[9]=
積の展開項の係数がスターリング数に当たる.
In[10]:=
Click for copyable input
Out[10]=
これは,4の分割である.
In[11]:=
Click for copyable input
Out[11]=
分割数はPartitionsP[4]で与えられる.
In[12]:=
Click for copyable input
Out[12]=
100を何通りに分割できるかを調べる.最初は,項が相異なるとし,次は,制約を外した場合である.
In[13]:=
Click for copyable input
Out[13]=
分割関数p (n)に似た形で増加する.注意点として,PartitionsPのような整数だけを引数とする関数は,Plotでは直接プロットすることができない.
In[14]:=
Click for copyable input
Out[14]=
ここで説明してきた関数のほとんどは,各種の組合せの数を数えるのに使われる.これらとは違って,IntegerPartitionsPermutationsのような関数は,要素の組合せそのもののリストを生成するために使われる.
符号関数Signature[{i1, i2, ...}]は順列の符号を返す.偶順列なら+1を返し,奇順列なら-1を返す.偶順列(もしくは,奇順列)とは順列が偶数回(奇数回)の互換(2つの要素の入れ替え)で得られることを指す.符号関数は,交代テンソルであるレビー・チビタ(Levi-Civita)の記号,または,イプシロン記号としてとらえることができる.
ClebschGordan[{j1,m1},{j2,m2},{j,m}]クレプシュ・ゴルダンの係数
ThreeJSymbol[{j1,m1},{j2,m2},{j3,m3}]ウィグナーの 3-j 記号
SixJSymbol[{j1,j2,j3},{j4,j5,j6}]ラカーの 6-j 記号

角運動量の合成に関する係数

クレプシュ・ゴルダン(Clebsch-Gordan)の係数とn-j記号は,量子力学における角運動量の解析や,その他の回転群の応用の問題で使われる.クレプシュ・ゴルダンの係数ClebschGordan[{j1, m1}, {j2, m2}, {j, m}]は,量子化された角運動量の状態j, mを展開したとき得られる項の係数を状態j1, m1 j2, m2の積で与える.
3-j記号あるいはウィグナー(Wigner)係数のThreeJSymbol[{j1, m1}, {j2, m2}, {j3, m3}]は,クレプシュ・ゴルダンの係数より高い対称性を持つ.Mathematica における定義では,クレプシュ・ゴルダンの係数は,3-j記号に基づいたの関係式で与えられる.
ラカー(Racah)の6-j記号SixJSymbol[{j1, j2, j3}, {j4, j5, j6}]は,3つの量子論的な角運動量の取る結合状態を与える.ラカーの係数と6-j記号は1位相を介し関連している.
3-j記号でシンボル的なパラメータを使っても構わない.
In[15]:=
Click for copyable input
Out[15]=