我在编码方面的经验很少,并且正在学习 Python 类(class)。我被要求在某个所需的 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
。
最佳答案
对于无休止的 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 += 加法
都涉及 float ),如果您正在寻找更高的精度(例如小数点后第 20 位等),请使用 decimals
模块。
关于python - 近似某个 epsilon 内的无限和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28469616/