在进行组合数的计算时,如果数值比较大,则计算起来很麻烦的,用斯特林公式逼近也需要很多步骤。
特别的,如果在组合数的总元素的取出元素有一个是未知数时,计算就没法用公式了。
所以我在这里公布一个近似算法给大家:
1.对于方程C(n,x)=a,求取出元素x,近似算法是:x=ln(a)*ln(a)/n
举例:求C(10,x)=250,我们知道C(10,5)=252,也就是x=5,套用公式:x=ln(250)*ln(250)/10=3.05
求C(33,x)=1000000,我们知道C(33,6)=1107568,也就是x=6,套用公式:x=ln(1000000)*ln(1000000)/33=5.78
在数值很小时误差大,在数值很大时误差很小;
2.对于方程C(x,n)=a,求总元素x,近似算法是:x=(a*n!)^(1/m)+m/2
举例:求C(x,5)=250,我们知道C(10,5)=252,也就是x=10,套用公式:x=(250*120)^(1/5)+5/2=10.36
求C(x,6)=1000000,我们知道C(33,6)=1107568,也就是x=33,套用公式:x=(1000000*720)^(1/6)+6/2=32.93
3.对于组合数C(m,n)=m!/(n!(m-n)!)
使用斯特林近似公式进行化简后得到公式如下: