2015-02-08 35 views
-1

通過評估方程pi = arctan(1/5) - arctan(1/239),寫出一個將返回pi的近似值的函數,其中arctan是從數學庫。即時通訊使用Python 3.4.1python中的arctan(x)函數

我使用的功能是:

def wallis(pairs): 
    acc = 1 
    num = 2 
    for apair in range(pairs): 
     leftterm = math.atan(0.2) 
     rightterm = math.atan(0.0041) 

     acc = leftterm - rightterm 

     return pi 

,但沒有奏效。這很混亂。

+1

你能否闡述一下「但它沒有工作」 ...要的是什麼,你有什麼已經有了等等? - 還有在那個函數中定義的'pi'的位置...... – 2015-02-08 04:39:22

+0

你不會在任何地方計算pi。你說「返回pi」,但你永遠不會有像「pi = ...」這樣的表達式,所以它不是一個變量。 – 2015-02-08 04:40:32

+0

@AdamHughes由於OP沒有包含* exact *錯誤或合適的回溯 - 它在全球範圍內確實存在(似乎不太可能)......但是在這裏 - 說,沒有進一步的信息,不可能得出結論:) – 2015-02-08 04:42:07

回答

1

我不知道你在哪裏得到那個公式;

它看起來像你試圖做瓦利斯的公式,pi = (2/1) * (2/3) * (4/3) * (4/5) * ...和切換到Machin的公式,pi == 16 * atan(1/5) - 4 * atan(1/239)中游。

from math import atan 

def approx_pi(): 
    return 16 * atan(1/5) - 4 * atan(1/239) 

然後

>>> approx_pi() 
3.1415926535897936 
+0

看到的東西是我做了完全相同的事情,但我導入錯誤的數學庫。我從我的python教科書中得到了這個公式。這是沃利斯公式。 – Cb173 2015-02-08 21:41:36

+0

@CassandraBrown:「完全相同」? _真的嗎?我計算了六個關鍵性的錯誤,而不是涉及你如何輸入atan ......而這是不是Wallis的公式。 – 2015-02-08 22:29:28