在某个epsilon中近似无限和

时间:2015-02-12 04:58:24

标签: python

我在编码方面经验很少,而且我正在为一堂课学习Python。我被要求在某个期望的epsilon中近似无穷和,使得该系列中两个连续项之间的差异小于epsilon。

我搜索了一下,发现了'while',我的理解可以用来创建一个无限循环。我试图了解它是如何工作的并写下以下内容:

def S(eps):
    z = 1
    S = 0
    while z == 1:
        S = S + (?)
        if S[i] - S[i-1] < eps:
            z = 2
     return z

假设这会破坏循环,我正在坚持的部分是试图定义将进行实际求和的循环。每当我做一个有限的循环时,我通常都会做一些事情:

for i in range(n):
    S = S + whatever[i] 

其中n是某种有限值,我已经以某种方式定义了。在我的问题中,我不知道n对应于我需要的epsilon,因此我无法分配n。我不知道任何其他方式来制作循环。

有人可以说明我能在这做什么吗?

如果重要,我要做的总和是(1/k)^3

1 个答案:

答案 0 :(得分:2)

对于无休止的while循环,使用while True(永远运行)并在满足某些条件时突破。

在下面的示例中,我将epsilon定义为10 ^ -10:

sigma, epsilon, k = 0, 10**-10, 1
while True:
    addition = 1.0/(k**3)
    if addition < epsilon:
        break
    else:
        sigma += addition
    k += 1

结果是:

>>> print sigma, k
1.20205679544 2155

请注意,浮点运算对于高精度(1.0/(k**3)sigma += addition涉及浮点数)都不可靠,并且如果您正在寻找更高的精度,(比如直到十进制后的第20位)等等),使用decimals模块。