伯努利数
伯努利数与自然数幂和
众所周知
\[1 + 1 + ... + (n-1)^0 = n
\]
\[1 + 2 + ... + (n-1) = \dfrac{n(n-1)}{2} = \dfrac{1}{2}n^2-\dfrac{n}{2}
\]
\[1^2+2^2+...+(n-1)^2=\dfrac{(n-1)n(2n-1)}{6}=\dfrac{1}{3}n^3 - \dfrac{1}{2}n^2 + \dfrac{1}{6}n
\]
查阅资料知:
\[1^3+2^3+...+(n-1)^3 = \dfrac{1}{4}n^4 - \dfrac{1}{2}n^3 + \dfrac{1}{4}n^2
\]
我们设自然数幂和:
\[S_m(n)=\sum_{i=0}^{n-1}i^m
\]
将其用关于 \(n\) 的 \(m+1\) 次多项式表示,并在其中定义伯努利数 \(B_i\):(证明见最后)
\[\Large S_m(n)=\dfrac{1}{m+1} \sum_{i=0}^{m} {m+1 \choose i} B_in^{m+1-i}
\]
将 \(n=1\) 代入得:
\[B_0 = 1
\]
\[\sum_{i=0}^{m} {m+1 \choose i} B_i = 0,m>0
\]
(其中 \(B_0 = 1\) 是因为 \(S_0(1) = 0^0 = 1\))
即:
\[\Large \sum_{i=0}^{m} {m+1 \choose i} B_i = [m=0]
\]
这是伯努利数的递归定义式。
伯努利数的快速求法
做一些转化:
\[\sum_{i=0}^{m-1} {m \choose i} B_i = [m-1=0]
\]
\[\sum_{i=0}^{m} {m \choose i} B_i = B_m + [m=1]
\]
\[\sum_{i=0}^{m} \dfrac{B_i}{i!} * \dfrac{1}{(m-i)!} = \dfrac{B_m}{m!} + \dfrac{[m=1]}{m!}
\]
发现左边是一个 \(\{B_i\}\) 的 EGF 和 \(\{1,1,1,...\}\) 的 EGF 的卷积的 \(x^m\) 的系数,右边是 \(\{B_i\}\) 的EGF 再加上 \(x\) 的 \(x^m\) 系数。
即:
\[B(x)e^x=B(x)+x
\]
\[\Large B(x)=\frac{x}{e^x-1}
\]
这是伯努利数的生成函数定义式。可以多项式求逆加速递推 \(B(x)\),进而可以快速求 \(S_m(n)\)
用伯努利数计算自然数幂和的正确性
考虑证明:
\[S_m(n)=\dfrac{1}{m+1} \sum_{i=0}^{m} {m+1 \choose i} B_in^{m+1-i}
\]
对于一个数 \(n\) 固定的情况,我们设 \(F(x)\) 表示 \(S_k(n)\) 的指数生成函数,即 \(\sum\dfrac{S_i(n)}{i!}x^i\),那么有:
\[\begin{aligned}
F(x)&=\sum_{i}\frac{S_i(n)}{i!}x^i\\
&= \sum_{j < n,i}\frac{j^ix^i}{i!}\\
&= \sum_{j < n}e^{jx}\\
&= \frac{1-e^{nx}}{1-e^x}\\
&= \frac{x}{e^x-1} * \frac{e^{nx}-1}{x}\\
&= B(x) * \sum_{i > 0}\frac{(nx)^i}{x * i!}\\
&= B(x) * \sum_{i}\frac{n^{i+1}}{(i+1)!}x^i
\end{aligned}\]
设 \(G(x)=\sum_{i}\dfrac{n^{i+1}}{(i+1)!}x^i\),则 \([x^i]G(x)=\dfrac{n^{i+1}}{(i+1)!}\)。于是有:
\[\begin{aligned}
\
[x^k]F(x)&=[x^k](B(x)G(x))\\
S_k(n)/k!&=\sum_{i=0}^k\frac{B_i}{i!} * \frac{n^{k-i+1}}{(k-i+1)!}\\
S_k(n)&=\sum_{i=0}^k\frac{k!}{i!(k-i+1)!}B_in^{k-i+1}\\
S_k(n)&= \sum_{i=0}^k \frac{{k + 1 \choose i}}{k+1}B_in^{k-i+1}\\
S_k(n)&= \frac{1}{k+1} \sum_{i=0}^k{k + 1 \choose i}B_in^{k-i+1}
\end{aligned}\]
即开头的那个式子。
参考博客:伯努利数