分割数の閉じた公式だよ♪

分割数の閉じた公式は発見されていない、という話を知って、どうにか作れないかと思って苦戦した結果、公式を作ることに成功しちゃった自分。
これは大変だ。一大事だ。もしかしたら歴史に名前が残るかも!などと喜び勇んだわけですが、よくよく考えてみると段々と全く大したことのないことのように思えてきて、恥ずかしくなってしまったのでした。
そんなわけで、今日は自分が発見した分割数の閉じた公式の作り方を述べます。
例によって、何の役にも立たないけど!
最初に、便利な関数を色々と用意しておきます。
単位階段関数:
\rm{U}(x) = \frac{1}{2}\left(\frac{2x+1}{|2x+1|}+1\right) = \left\{ \begin{array} 1 & (x \geq 0)\\ 0 & (x < 0) \end{array}\right.
イコール(クロネッカーのデルタ):
(x=y)=1-\rm{U}(|x-y|-1) = \left\{ \begin{array} 1 & (x = y)\\ 0 & (x \neq y) \end{array}\right.
x を y で割った商:
\rm{Quotient}(x,y)=\sum_{k=1}^x\rm{U}(x-ky)
x を y で割った余り:
\rm{Mod}(x,y)=x-y\rm{Quotient}(x,y)
{1,2,…,n} から {1,2,…,n} への関数のうち k 番目の関数 f_{n,k} に i を代入したときの値:
\rm{F}(n,k,i) = \rm{Mod}(\rm{Quotient}(k,n^{i-1}),n)+1
1 \leq j \leq m かつ f_{n,k}(j)=i となる j の個数:
\rm{L}(n,m,k,i) = \sum_{j=1}^m(\rm{F}(n,k,j)=i)
さて、ここから関数を構成していきます。
まず、自然数 n を順序を考慮して m 個の自然数の和として表す分割を考えてみると、これは
\sum_{i=1}^n i \cdot \rm{L}(n,m,k,i) = n
となるとき、かつそのときにかぎり、\sigma = f_{n,k} の定義域を {1,2,…,m} に制限することによって得られます。
実際、
\sigma(1),\sigma(2),\cdots,\sigma(m)
という並びが分割に対応します。
ただし、n 以下の任意の自然数の並び a_1, a_2, \cdots, a_m に対し、任意の 1 \leq i \leq m について \sigma(i) = a_i となる \sigman^{n-m} 個あります。
\sigma(1), \sigma(2), \cdots, \sigma(m), \underbrace{\sigma(m+1), \cdots, \sigma(n)}_{n-m}
したがって、各分割に対し、それを実現する関数は n^{n-m} 個あることが分かります。
次に、自然数 n を順序を考慮せずに m 個の自然数の和として表す分割の総数 P(n,m) を考えます。
これは、上で考えた分割のうち、並び方を変えれば互いに移り合うものを一つに数えればよく、そのような分割は、分割に現れる各自然数の個数による多項係数分あります。
ゆえに、各分割に多項係数の逆数をかけることにより、次の公式が得られます。
\rm{P}(n,m) = \frac{1}{n^{n-m}}\sum_{k=1}^{n^n}\left(\sum_{i=1}^n i \cdot \rm{L}(n,m,k,i) = n \right) \frac{\prod_{i=1}^n \rm{L}(n,m,k,i)!}{\left(\sum_{i=1}^n \rm{L}(n,m,k,i)\right)!}
これで準備完了です。
n の分割数を P(n) とおくと、これは m=1 から m=n まで P(n,m) の和を取ればよいので
\rm{P}(n) = \sum_{m=1}^n\frac{1}{n^{n-m}}\sum_{k=1}^{n^n}\left(\sum_{i=1}^n i \cdot \rm{L}(n,m,k,i) = n \right) \frac{\prod_{i=1}^n \rm{L}(n,m,k,i)!}{\left(\sum_{i=1}^n \rm{L}(n,m,k,i)\right)!}
となります。
これが簡単な関数の組み合わせで得られることは、その構成法から明らかです。
よって、構成に使われた各関数を定義に戻って全て具体的に書き下せば、P(n) の閉じた式が得られる、ということになります。
めでたす。