📅  最后修改于: 2023-12-03 15:28:20.301000             🧑  作者: Mango
连续二项式系数的乘积和是指在n次连续二项式的系数之间相乘并求和的结果,即:
$\sum_{k=0}^{n-1} {n \choose k}{n \choose k+1} = {2n \choose n} - n$
其中,n为非负整数,$0 \leq k \leq n-1$,${n \choose k}$表示从n个元素中取k个元素的组合数。
连续二项式系数的乘积和的求解方法有多种,以下是其中两种比较常见的方法。
考虑将系数展开并化简,可以得到以下式子:
$\sum_{k=0}^{n-1} {n \choose k}{n \choose k+1} = \sum_{k=0}^{n-1} {n \choose k}^2 - {n \choose n-1}^2$
而连续二项式系数的和可以用套路的二项式定理来求解:
$(1+1)^{2n} = \sum_{i=0}^{2n} {2n \choose i}$
$(1-1)^{2n} = \sum_{i=0}^{2n} (-1)^i{2n \choose i}$
将上述两个式子相加减得到以下式子:
$\sum_{i=0}^{2n} (-1)^i{i+n-1 \choose 2n-1} = 0$
将上式中的i=n-1带入可以得到:
$\sum_{k=0}^{n-1} {n \choose k}^2 = {2n \choose n}$
因此,将上式带入之前的式子,即可得到连续二项式系数的乘积和的另一个表达式:
$\sum_{k=0}^{n-1} {n \choose k}{n \choose k+1} = {2n \choose n} - n$
对于连续二项式系数求和的问题,还可以采用封闭形式的解法,即使用伯努利数。
定义n次连续二项式的系数为$b_{n,k} = {n \choose k}$,则其生成函数为:
$F(x) = (1+x)^n$
根据牛顿二项式定理,可以将其展开为:
$F(x) = \sum_{k=0}^n b_{n,k}x^k = \sum_{k=0}^n {n \choose k}x^k = \sum_{k=0}^n (-1)^{n-k}{-n-1 \choose k}x^k$
因此,$b_{n,k}$可以表示为:
$b_{n,k} = (-1)^{n-k}{-n-1 \choose k}$
考虑将连续二项式系数的乘积转化为伯努利数的形式。对于相邻的两个系数:
$b_{n,k} b_{n,k+1} = (-1)^{n-k-k-1}{-n-1 \choose k}{-n-1 \choose k+1}$
利用伯努利数和二项式反演的性质,可以得到以下式子:
$\sum_{k=0}^{n-1} b_{n,k} b_{n,k+1} = \sum_{k=0}^{n-1} (-1)^{n-k-k-1}B_{n-k}{-n-1 \choose k}$
其中,$B_n$为伯努利数。
将其带入之前推导出的式子,即可得到:
$\sum_{k=0}^{n-1} {n \choose k}{n \choose k+1} = {2n \choose n} - n$
def binomial_sum(n):
res = 0
for k in range(n):
res += comb(n, k) * comb(n, k+1)
return comb(2*n, n) - n
def bernoulli_binomial_sum(n):
res = 0
for k in range(n):
res += (-1)**(n-k-k-1) * bernoulli(n-k) * comb(-n-1, k)
return comb(2*n, n) - n