2016-10-04 46 views
1

Leibniz summationPython的萊布尼茨總和

我試圖讓萊布尼茨總和與蟒蛇,但是,我的代碼,我得到稍微不同的值。我找不到爲什麼它不給我正確的答案。

import math 
def estimate_pi(iterations): 
    pi = 0.0 
    for n in range(0,iterations+1): 
     pi = pi + (math.pow(-1,n)/((2*n)+1)) 
    return pi 

print("How many iterations?") 
print(estimate_pi(int(input()))) 

回答

2

總和不估計pi,它估計pi/4。因此,代碼更改爲類似:

def estimate_pi(iterations): 
    sum = 0.0 
    for n in range(iterations): 
     sum += (math.pow(-1,n)/((2*n)+1)) 
    # sum now estimates pi/4, so return sum * 4 ~ (pi/4) * 4 ~ pi 
    return (sum * 4) 

print estimate_pi(100000) 

輸出:

3.14158265359 
+0

咋的,但仍然是讓我略有不同的值比其他的求和PI代碼:( – buq333

+0

我正想* 4得到一個pi值,但在此之前,我認爲我的方程在某個點上是錯誤的 – buq333

+0

@ buq333除了將返回值乘以4,我還修正了範圍以反映總和方程(即'範圍(迭代) '而不是'range(iterations + 1)'。 –