直接在方程上使用python sum?

时间:2014-02-24 21:37:51

标签: python math

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函数。可以像上面那样使用它吗?

2 个答案:

答案 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位,那么你可能没有问题 - 不知道。