java pi无穷级数_pi的无穷级数算法.doc

WORD格式可编辑

专业知识分享

3π的计算模型—

π的无穷级数算法

思想:利用一些特殊函数的幂级数展开式计算圆周率。

根据幂级数展开的相关知识,易知:

因为,故可以求得的幂级数展开式为:

当x=1时,

用Matlab计算:

创建m文件calpi1.m,内容如下:

function y=calpi1(k)

for n=1:k

a(n)=(-1).^(n-1)./(2*n-1);

end;

4*sum(a)

在命令窗口中输入如下命令:

它是一个与π有关的无穷级数,实际计算时,我们只能使用有限项。如果取级数前n项之和作为π的近似值,其误差为

|rn|≤

为了保证误差不超过10-4,就要取级数的前20000项进行计算,计算量之大可想而知。现在看来,计算π的级数有明显的缺点:级数收敛太慢,计算量过大。其原因是|x|偏大。如果想要精确计算π的数值的话,非常有必要寻找改进以后的方法,这就引出了两个能够提高计算效率的公式

(1)欧拉公式:

现取x=12,令α=arctan12,显见0<

记β=π4-α,而tanβ=

所以β=arctan13

(2)马庭公式:

可取x=15,令α=arctan

tan4α=120119≈1

即π4=4α-

将欧拉公式和马庭公式与arctanx的泰勒级数相结合,会加快该级数的收敛速度,具有很强的实用性。

用Matlab计算:

创建m文件calpi2.m,内容如下:

function y=calpi2(k)

for n=1:k

a(n)=(-1).^(n-1)*(1/2).^(2*n-1)./(2*n-1)+(-1).^(n-1)*(1/3).^(2*n-1)./(2*n-1);

end;

vpa(4*sum(a))

在命令窗口中输入如下命令:

从结果上可以看出,改进后的算法优于不用公式的arctan幂级数展开。在得到相同精度的条件下,马庭公式所需要的叠加步数要明显少于欧拉公式,并且在计算精度越高的情况下,优势越明显。道理很简单,因为马庭公式计算的收敛速度要显著快于普通公式。欧拉公式决定收敛速度的是,而马庭公式决定收敛速度的是,因为的收敛速度快于,故马庭公式计算π的时候收敛速度要快于普通公示。所以马庭公式比普通公式更加精确,并且在计算高精度的时候有很大优势。

误差及算法速度分析:

设定精确到小数点后100位的π值。如果采用常见的求和公式π=n=0∞((-1)n42n+1),则要使截断误差不大于10

π

由于该公式第一部分的收敛速度远小于第二部分,因此将其分为两部分计算。如果要使截断误差不大于10-100,则有162n+1·52n+1

程序运行后得到的结果是通过求arctan项得到一万位的精确值,然后加和而得到的,因此在计算结果的最后几位由于arctan项的舍入误差以及加和时的舍入误差影响了计算结果的准确度,但是这种舍入误差只能影响最后几位。计算的结果可信并且是准确的。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值