使用python估计pi

时间:2015-03-25 23:56:49

标签: python pi

我的老师给了这个作业,要求估算不同的" i"的pi。 我可以获得4.0000的第一个值,但是当我尝试101时,我得到0.5024。老实说,我在这里画了一个空白,本网站上的其他问题使用了略微不同的估算公式

这是我的代码:

num = 1

def m(i):  
    answer = 0  
    for k in range(num):   
        answer+=((-1)**(i+1)/(2*i-1))  
    return answer  

和问题:

m(i) = 4*(1-1/3+1/5-1/7+1/9-1/11+⋯+〖(-1)〗^(i+1)/(2*i-1))

您的任务:编写一个函数,返回给定i的m(i)并编写显示下表的测试程序

i    m(i)
1    4.0000 
101  3.1515  
201  3.1466  
301  3.1449  
401  3.1441  
501  3.1436  
601  3.1433  
701  3.1430  
801  3.1428  
901  3.1427  

感谢任何帮助,请原谅我无法在这里格式化(我是新的)

3 个答案:

答案 0 :(得分:3)

仔细观察你的迭代:

for k in range(num):   
    answer+=((-1)**(i+1)/(2*i-1))  

您正在迭代k,但k在循环体中无处可见。这不可能是正确的。

答案 1 :(得分:1)

要添加到雅各布的答案,你的for循环从k = 0开始,估计你必须从k = 1开始。

即。将for k in range(num):更改为for k in range(1,num + 1)

答案 2 :(得分:0)

这似乎产生了正确的结果:

def m(num):  
    answer = 0          
    for i in range(num):
        answer+=(-1)**i*1/(2.0*i+1.0)       
    return answer  

for i in [1,101,201,301,401,501,601,701,801,901]:
    print i,"%.4f" % (4*m(i))