lzj226
幼苗
共回答了16个问题采纳率:93.8% 举报
这类问题称为整数分拆,有相当长的历史.
分拆中不应出现0,否则拆法有无穷多:4 = 4+0 = 4+0+0 =...
直接认为4 = 4也是一种分拆.
设p(n)表示n的拆法总数,并补充定义p(0) = 1,p(n) = 0对任意整数n < 0.
p(n)还没有闭形式的通项公式,个人认为也不会有.
容易得到以p(n)为系数的形式幂级数(生成函数):
∑{n ≥ 0} p(n)x^n = П{n ≥ 1} (1+x^n+x^(2n)+x^(3n)+...) = П{n ≥ 1} 1/(1-x^n).
结合Euler的五边形数定理,可得到p(n)的一个递推公式:
p(n) = ∑{k为非零整数} (-1)^(k-1)·p(n-k(3k-1)/2)
= ∑{k ≥ 1} (-1)^(k-1)·p(n-k(3k-1)/2)+∑{k ≥ 1} (-1)^(k-1)·p(n-k(3k+1)/2).
注意k为非零整数时k(3k-1)/2 > 0,此外只有有限个整数k使k(3k-1)/2 ≤ n.
因此求和中只出现小于n的整数,且只有有限项非零.
另外,p(n)还有一个渐进公式(当n→∞时两边比值趋于1):
p(n) e^(π√(2n/3))/(4n√3).
1年前
追问
8
cnrobinxu
举报
我做的是统计热力学中分布数的计算,所以是需要0的,不过把4+0、4+0+0看成一种,1+1+1+1和1+1+1+1+0也是一样的。 比如体系总能量为4e,12个粒子组成,许可能级是0、e2e、3e、4e、5e…那么就有5种可能的分布:4个能量为e的粒子和8个能量为0的,表示成分拆就是1+1+1+1+8*0,剩下四种是2*2e+10*0,1*e+1*3e+10*0,2*e+1*2e+9*0,1*4e+11*0。 所以大神的回答还没解决我的问题啊。。。。。。。。。。。。。。
举报
lzj226
可以认为你这里的0是用来填补粒子数的空缺的. 所以一旦能量非零的粒子数确定, 那么0的个数也就确定了. 因此最终还是求分拆成非零整数的方法数. 你可以验算p(1) = 1, p(2) = 2, p(3) = 3, p(4) = 5, p(5) = 7,... 都和你想求的一样. 不过看你的问题背景, 稍有问题的是粒子数 < 总能量的情形. 此时需要另外的计算公式(与粒子数和总能量相关).