找出几何级数的总和

时间:2017-10-19 22:41:14

标签: python sum sequence

我被要求在序列中添加前100个术语(1 + 1/2 + 1/4 + 1/8 ......等)

我一直在尝试的是喜欢的东西

for x in range(101): 
    n = ((1)/(2**x))        
    sum(n) 

给了我一个错误,猜你不能把范围放到权力

print(n) 

会给我一个所有值的列表,但我需要将它们相加在一起

是谁能帮我一把?

如果有任何相关性,请使用qtconsole,如果您还没有猜到,我会对此感到陌生

4 个答案:

答案 0 :(得分:2)

您一次只能保留一个值。如果你想要总和,你需要汇总结果,为此你需要一个初始值,你可以每一轮添加当前值术语

n = 0  # initial value
for x in range(100):
    n += 1 / 2**x # add current term
print(n)

答案 1 :(得分:1)

将sum_n初始化为零非常重要。每次迭代时,从序列/序列中添加(1/2 ** x)到sum_n,直到达到n_range。

n_range = 101
sum_n = 0  # initialize sum_n to zero

for x in range(n_range):
    sum_n +=  (1/(2**x))

print(sum_n)

答案 2 :(得分:0)

你得到一个错误,因为sum需要一个可迭代的并且你传递一个浮点数:

sum(iterable [,start])

为了解决您的问题,正如其他人所建议的那样,您需要初始化累加器并在每次迭代时添加电源。

如果你绝对必须使用sum函数:

>>> import math
>>> sum(map(lambda x:math.pow(2,-x),range(100)))
2.0

答案 3 :(得分:0)

嗯,其实有一个几何级数和的公式:

Sum of GS

在您的问题中,a 为 1,r 为 0.5,n 为 100

所以我们可以这样做

a = 1
r = 0.5
n = 100

print(a * (1 - r ** n) / (1 - r))