作者:周竞文(jwzhou@nudt.edu.cn)
来源:-
领域:数学
难度:★★★
任务描述
背景
任务
相关知识
编程要求
测试说明
任务描述
背景
上关利用泰勒级数计算圆周率,测试结果如下(蓝色表示精确位数):
可以看到,该方法的收敛速度很慢,也就是说,随着 n 的增加,结果的精确度提升很小,n 每增加一个数量级,精确度大概提升 1 位,n 增加到 1000000 时才能精确到小数点后 5 位。而 n 反映了要累加的项数,或者说 n 越大,运算量就越大。所以,要利用这种方法计算足够精确的圆周率(比如精确到小数点后 100 位),似乎不太现实。
在 1706 年,英国数学家马青(也叫马辛、梅钦等)提出一个圆周率的快速计算公式,其收敛速度比泰勒级数快很多(n 为 4 时就可精确到小数点后 5 位),他利用这个公式将圆周率精确到了小数点后 100 位,在圆周率计算的历史中留下了不可磨灭的贡献。
任务
马青公式的形式为:
本实训的任务就是利用马青公式计算圆周率。
注:因 Python 浮点数支持的精度有限,本关最终程序只能精确到小数点后 14 位,若要计算更高精度的圆周率,需要使用一些技巧。
相关知识
参考之前关卡。
编程要求
补全 Begin-End 区间的代码,其功能是根据给定的 n(用变量n表示)&#x