定义:(B(x)=sum_nfrac{B_nx^n}{n!}=frac{x}{e^x-1})
易得递推式:(B_0=1,sum_{i=0}^ninom{n+1}{i}B_i=0)。
自然数幂和:(f(n,k)=sum_{i=1}^{n} i^k)。
定义(n)相同的自然数幂和的EGF:(F_n(x)=sum_{k} f(n,k)frac{x^k}{k!})
[F_n(x)=sum_{k} f(n,k)frac{x^k}{k!}\
=sum_{k} frac{x^k}{k!} sum_{i=1}^n i^k\
=sum_{i=1}^n sum_k frac{(ix)^k}{k!}\
=sum_{i=1}^n e^{ix}\
=frac{e^{(n+1)x}-e^x}{e^x-1}
]
[=B(x)e^x(e^{nx}-1)frac{1}{x}\
令:B'(x)=B(x)e^x=x+B(x)\
(B'只是个符号和求导无关)\
F_n(x)=B'(x)(e^{nx}-1)frac{1}{x}\
f(n,k)=k!sum_{i=0}^{k}frac{n^{k+1-i}}{(k+1-i)!}frac{B'_i}{i!}\
=frac{1}{k+1}sum_{i=0}^{k}inom{k+1}{i}n^{k+1-i}B'_{i}
]
注意这里最后用的(B'):实际上伯努利数分(B^+)和(B^-),前面讲的是(B^-),这里的(B')就是(B^+),两者的区别在于(B_1=pmfrac{1}{2})。
另外,如果把自然数下标从(0)开始(即(f(n,k)=sum_{i=0}^{n} i^k)),类似地推,可以得到(f(n,k)=frac{1}{k+1}sum_{i=0}^kinom{k+1}{i}(n+1)^{k+1-i}B_i)。
总结:
和另外几个常用的推自然数幂和的方法比较:
- 第二类斯特林数:
- 优点:容易通过组合意义考虑,即使忘记式子也容易重新推出;可以不用除法。
- 缺点:朴素方法需要(O(k^2))预处理斯特林数,如果(k)相同做到(O(klg k))要写复杂的多项式做法求出;式子中含有下降幂,并不直接是多项式形式,不方便扩展。
- 拉格朗日插值:
- 优点:预处理速度快。
- 缺点:一般是直接将(n)带入拉格朗日插值的式子中,不是直接生成多项式,若要生成多项式要多点插值(?),扩展性弱。
- 伯努利数:
- 优点:可以直接生成关于(n)的多项式形式;某种程度上统一了对于不同的(k),自然数幂和关于(n)的函数,扩展性强。
- 缺点:相对而言不是那么容易考场推出。