我在编码方面经验很少,而且我正在为一堂课学习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
。
答案 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
模块。