我想计算以下总和。问题是我认为二项式系数太大,因此失败了。
from __future__ import division
import numpy as np
from scipy.special import binom
print [sum(binom(n,2*k)*np.sqrt(np.pi*k)**(-n/10) for k in xrange(1,int(n/2)+1)) for n in xrange(100000)]
有什么办法可以近似答案吗?
最佳答案
好吧,binom相当早就达到了顶峰:
from scipy.special import binom
binom(1019, 509) # => 1.40313388415e+305
binom(1020, 510) # => inf
您要执行的计算到底是什么?
这是一个重新格式化的版本,它将值稍微偏移一点;我们可以找到每个n的二项式序列的连续值,而不必每次都从头开始进行重新计算,而且我已经将平方幂进行了一次运算。
from math import pi
for n in xrange(100000):
total = 0.
binom = 1
binom_mul = n
binom_div = 1
power = -0.05 * n
for k in xrange(1, n // 2 + 1):
binom = binom * binom_mul / binom_div
binom_mul -= 1
binom_div += 1
total += binom * (pi * k) ** power
print(total)
关于python - 计算大二项式系数的和,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22965774/