利用泰勒级数计算圆周率

作者:周竞文(jwzhou@nudt.edu.cn)
来源:-
领域:数学
难度:★★★

任务描述
背景
任务
相关知识
编程要求
测试说明
任务描述
背景
  上关利用泰勒级数计算圆周率,测试结果如下(蓝色表示精确位数):

可以看到,该方法的收敛速度很慢,也就是说,随着 n 的增加,结果的精确度提升很小,n 每增加一个数量级,精确度大概提升 1 位,n 增加到 1000000 时才能精确到小数点后 5 位。而 n 反映了要累加的项数,或者说 n 越大,运算量就越大。所以,要利用这种方法计算足够精确的圆周率(比如精确到小数点后 100 位),似乎不太现实。
  在 1706 年,英国数学家马青(也叫马辛、梅钦等)提出一个圆周率的快速计算公式,其收敛速度比泰勒级数快很多(n 为 4 时就可精确到小数点后 5 位),他利用这个公式将圆周率精确到了小数点后 100 位,在圆周率计算的历史中留下了不可磨灭的贡献。

任务
  马青公式的形式为:

本实训的任务就是利用马青公式计算圆周率。
  注:因 Python 浮点数支持的精度有限,本关最终程序只能精确到小数点后 14 位,若要计算更高精度的圆周率,需要使用一些技巧。

相关知识
  参考之前关卡。

编程要求
  补全 Begin-End 区间的代码,其功能是根据给定的 n(用变量n表示),利用马青公式计算圆周率的近似值(用变量pi表示),说明如下:
  1)n的值在程序运行时由系统自动设置(初始代码第 1 行),不要再额外设置,编程时假设其已知即可;
  2)初始代码最后一行是打印计算结果,不要再额外添加打印语句,按要求算出变量pi的值即可;
  3)不要改动 Begin-End 区间之外的代码。

测试说明
 本关共有若干测试集,在每个测试集中,系统会自动设置变量n的值,程序的功能是据此计算圆周率近似值pi。例如,测试集 1 的输入是:

1
  测试集 1 的运行结果为:

3.18326359832636
开始你的任务吧,祝你成功!

n = int(input())
########## Begin ##########
i, a, b = 1, 0, 0
while i<=n:
    sn_a = (-1)**(i-1)/((2*i-1)*5**(2*i-1))
    sn_b = (-1)**(i-1)/((2*i-1)*239**(2*i-1))
    a = a+sn_a
    b = b+sn_b
    i += 1
pi = 16*a-4*b
########## End ##########
print('%.14f' % pi) #圆周率= 3.141592653589793…

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值