我的老师给了这个作业,要求估算不同的" 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
感谢任何帮助,请原谅我无法在这里格式化(我是新的)
答案 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))