用python输出pi的近似值_Python-Pi近似

重要编辑:

无论谁希望这个近似值产生π——引自Wikipedia:It converges quite slowly, though – after 500,000 terms, it produces

only five correct decimal digits of π

原始答案:

这是一个教育性的例子。您尝试使用快捷方式,并尝试通过在同一次迭代中处理k的两个步骤来实现总和的“振荡”符号。但是,每次迭代只调整一步k。

通常,至少在数学中,振荡符号是用(-1)**i实现的。所以,我选择这个是为了实现更可读的功能:def pi_approx(num_iterations):

k = 3.0

s = 1.0

for i in range(num_iterations):

s = s-((1/k) * (-1)**i)

k += 2

return 4 * s

如你所见,我改变了你的方法,以提高可读性。不需要在while循环中检查num,也不需要特别检查pi变量。你的est实际上是一个逐步增长的和,所以为什么不称它为s(“sum”是Python中的内置关键字)。根据你的公式,最后用4乘以和。

测试:>>> pi_approx(100)

3.1514934010709914

然而,这种趋同并不是特别好:>>> pi_approx(100) - math.pi

0.009900747481198291

你的预期输出是不稳定的,因为你的piApprox(300)(应该是3.13825932952,根据你的)离PI太远了。你怎么想到的?这可能受到累积数值误差的影响吗?

编辑

在函数经过10次和300次迭代后应该返回什么方面,我不会太相信这本书。中间结果,经过10步,应该是相当没有数字误差,确实。在这里,您是否同时执行两个步骤k实际上是有区别的。所以这很可能是我的pi_approx(10)和书之间的区别。在300次迭代中,数值误差可能会严重影响书中的结果。如果这是一本旧书,他们已经用C语言实现了他们的示例,可能使用了单精度,那么结果的很大一部分可能是由于数值误差的累积(注意:这是一个很好的例子,说明数值误差会对你造成多大的影响:大小值的重复和,不会更糟的。

重要的是,您已经研究了数学(PI的公式),并且实现了一个Python版本的近似公式。这是本书的学习目标,所以继续解决下一个问题。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值