任務描述
本關任務:編寫一個無窮級數法計算圓周率的小程序。
相關知識
為了完成本關任務,你需要掌握:
- 無窮級數法
無窮級數法
π
是個超越數,圓周率的超越性否定了化圓為方這種尺規作圖精確求解問題的可能性。有趣的是,π
可以用無窮級數表示:
1/1-1/3+1/5-1/7 = Π/4
左邊的展式是一個無窮級數,被稱為萊布尼茨級數(Leibniz
),這個級數收斂到 π/4
,它通常也被稱為格雷戈里-萊布尼茨級數,用以紀念萊布尼茨同時代的天文學家兼數學家詹姆斯·格雷戈里。
編程要求
根據提示,在右側編輯器補充代碼,編程用這個公式計算 π
值,輸入一個小數作為閾值,當最后一項的絕對值小于給定閾值時停止計算并輸出得到的 π
值。
測試說明
平臺會對你編寫的代碼進行測試:
輸入格式 一個正浮點數 threshold
,限定級數法求解 pi
值時,迭代累加只加絕對值大于 threshold
的項。
輸出格式 輸出為一個浮點數,是程序使用級數法求解的 pi
值,要求保留小數點后八位。
輸入輸出示例 示例 1
輸入: 0.000002
輸出: 3.14158865
示例 2
輸入: 1e-6
輸出: 3.14159065
'''
使用無窮級數這個公式計算π值,輸入一個小數作為閾值,當最后一項的絕對值小于給定閾值時停止計算并輸出得到的π值
'''def leibniz_of_pi(error):"""接收用戶輸入的浮點數閾值為參數,返回圓周率值"""# 補充你的代碼pi = 0fenmu = 1l = 1f = -1while abs(l) > threshold:pi += l fenmu += 2l = f / fenmu f = -freturn pi * 4if __name__ == '__main__':threshold = float(input())print("{:.8f}".format( leibniz_of_pi(threshold) ) ) #保留小數點后八位
估計有Bug,而且目前沒時間Debug...實在抱歉