更改变量时公式无法正确转换

时间:2017-09-02 18:30:25

标签: python algorithm math

我正在对这个Python公式进行反向工程,以找到一个数字乘以pi平方的总和,但它只适用于变量" 3"插入,我似乎无法弄清楚为什么......

对于3的范围,算法与蟒蛇和函数匹配:

>>> sum(math.pow(i*pi,2) for i in range(1,3+1))
138.174461615251
>>> ((3*pi)*(3*pi) + (4*pi)*(4*pi)+(3*pi*pi))/2
138.174461615251

但是任何其他变量都会产生截然不同的结果:

>>> sum(math.pow(i*pi,2) for i in range(1,10+1))
3799.797694419403
>>> ((10*pi)*(10*pi) + (11*pi)*(11*pi)+(10*pi*pi))/2
1139.9393083258208

请原谅我的数学文盲,但有人可以帮我理解为什么我会得到这些结果吗?

1 个答案:

答案 0 :(得分:1)

你使用的公式没有任何意义:

sum (i * pi) ^ 2 for i = 1 to n       =
(pi ^ 2) * (sum i ^ 2 for i = 1 to n)

sum i ^ 2 for i = 1 to n等于:

enter image description here

你不要使用类似的东西。

这是我的代码:

import math

def slow(n):
    return sum((i * math.pi) ** 2 for i in range(1, n + 1))

def fast(n):
    return math.pi ** 2 * n * (n + 1) * (2 * n + 1) / 6

print(slow(10)) #=> 3799.79769442
print(fast(10)) #=> 3799.79769442