用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版本的近似公式。這是本書的學習目標,所以繼續解決下一個問題。
總結
以上是生活随笔為你收集整理的用python输出pi的近似值_Python-Pi近似的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: vMotion 操作失败进度卡在14%
- 下一篇: python中1到100怎么表示_pyt