2015-02-12 38 views
1

我在編碼方面的經驗很少,我正在爲一個班級學習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

回答

2

對於一個無止境的while循環,使用while True(永遠運行)並在遇到一些條件時突然出現。

在下面的例子中,我定義的ε-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模塊。

+0

謝謝!花了我一些時間來了解發生了什麼,並將其作爲函數編寫,但我現在知道如何去做。我會研究小數模塊。 – BRamses 2015-02-12 05:18:44

+0

@BRAMES高興幫助:) – 2015-02-12 05:19:39