任务描述
本关任务:编写一个无穷级数法计算圆周率的小程序。
相关知识
为了完成本关任务,你需要掌握:
- 无穷级数法
无穷级数法
π
是个超越数,圆周率的超越性否定了化圆为方这种尺规作图精确求解问题的可能性。有趣的是,π
可以用无穷级数表示:
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 = 0
fenmu = 1
l = 1
f = -1
while abs(l) > threshold:
pi += l
fenmu += 2
l = f / fenmu
f = -f
return pi * 4
if __name__ == '__main__':
threshold = float(input())
print("{:.8f}".format( leibniz_of_pi(threshold) ) ) #保留小数点后八位
估计有Bug,而且目前没时间Debug...实在抱歉