2011-11-04 117 views
0

我刚开始学习Python,并且遇到了编写该函数的问题。查找误差范围内的常数Pi的近似值[PYTHON]

下面是一个在无限系列计算π的近似值: π= 4/1 - 4/3 4/5 + - + 4/7 4/9 - 4/11 ...

我正在尝试编写一个函数,该函数将浮点值误差作为参数,并通过计算上述和,逐项地计算误差内的常量π,直到当前总和与先前总和之差的绝对值为止(少一个条件)不会大于错误。一旦函数发现差异小于错误,它应该返回新的和。

下面显示这个功能对一些例子执行:

>>> aprPi(0.01) 
3.1465677471829556 
>>> aprPi(0.0000001) 
3.1415927035898146 

我仍然不知道如何计算它。有人能帮我吗?

这是我到目前为止有:

def aprPi(err): 
    first = 4/test(0) - 4/test(1) 
    second = first + 4/test(2) - 4/test(3) 
    n=4 
    while abs(first - second) > err: 
     first = second 
     second = second + test(n) 
     n +=1 
    return second 


def test(n): 
    sum = 1 
    for i in range(n): 
     sum += 2 

    return sum 

谢谢

+2

能否请您解决您的缩进? – yasar

+0

这也听起来不像一个Python问题,更像是一般编程。 – samb8s

+4

微积分说明:PI的这个系列是一个缓慢地收敛一个。 – Avaris

回答

1

你可以做这样的事情:

mypie = 0 
denominator = 1 
sign = 1 

while denominator < 100: 
    mypie = mypie + (4.0/denominator) * sign 
    sign = -sign 
    denominator = denominator + 2 
+0

我想这取决于python的版本,但你可能需要把它作为一个浮动部分,例如4.0 – samb8s

+0

你是对的,我编辑了我的文章。我也不应该使用sum作为变量名称,因为它是一个内置的函数名称。 – yasar