import math
(2*math.sqrt(2)/9801)*math.fsum((math.factorial(4*k)(1103+26390*k))/(math.factorial(k)**4396**4*k) for k in range(1,100))
上面的等式应该是下面右边的图像得到的1 /饼here
但是,我得到一个“TypeError:'int'对象不可调用”
我查看了stackoverflow,似乎他们将每个等式转换为一个集合然后使用sum函数。可以像上面那样使用它吗?
答案 0 :(得分:2)
你的问题在这里
math.factorial(4*k)(1103+26390*k)
评估math.factorial(4 * k)
,然后尝试使用参数1103 + 26390 * k
调用它。
为了避免类似的错误,在运算符周围包含空格并将复杂的操作分成几行代码是有帮助的。这也会使调试变得更容易,因为错误发生的地方会更清楚(这里你关于sum
的问题是红鲱鱼)。
答案 1 :(得分:0)
看起来你只是有一个简单的错误 - 我应该注意到,一个让我一直都有这个错误的错误。你不能用括号乘以,例如,(2x)(y 2 )= 2xy 2 。这就是给你TypeError: 'int' object is not callable
的东西。它应该是
(2*math.sqrt(2)/9801)*math.fsum((math.factorial(4*k)*(1103+26390*k))/(math.factorial(k)**4396**4*k) for k in range(1,100))
*
与(math.factorial(4*k)
之间的所有遗失(1103+26390*k))
。
然而,这是评价的庞然大物。我有MemoryError
试图运行它。我的猜测是你需要某种特殊的数字 - chugging库来运行这样的东西(或者至少以某种方式允许python使用超过默认的内存量)。不幸的是,我也没有经验。
编辑:绝对关注NumPy / SciPy。但我正在运行32位python。所以,如果你是64位,那么你可能没有问题 - 不知道。