pi的无穷级数算法

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

3π的计算模型—π的无穷级数算法思想:利用一些特殊函数的幂级数展开式计算圆周率。根据幂级数展开的相关知识,易知:24122211(1)1nnxxxx………因为21(arctan)'1xx,故可以求得arctanx的幂级数展开式为:35211arctan(1)3521nnxxxxxn………当x=1时,-11111--(-1)4352-1nn用Matlab计算:创建m文件calpi1.m,内容如下:functiony=calpi1(k)forn=1:ka(n)=(-1).^(n-1)./(2*n-1);end;4*sum(a)在命令窗口中输入如下命令:它是一个与π有关的无穷级数,实际计算时,我们只能使用有限项。如果取级数前n项之和作为π的近似值,其误差为||≤为了保证误差不超过,就要取级数的前20000项进行计算,计算量之大可想而知。现在看来,计算π的级数有明显的缺点:级数收敛太慢,计算量过大。其原因是|x|偏大。如果想要精确计算π的数值的话,非常有必要寻找改进以后的方法,这就引出了两个能够提高计算效率的公式——(1)欧拉公式:11=arctanarctan423现取,令α=,显见0<α<,记β=,而==,所以β=,就是11=arctanarctan423(2)马庭公式:11=4arctanarctan45239可取,令,则,,故4α≈,再令,即,而,就有11=4arctanarctan45239将欧拉公式和马庭公式与arctanx的泰勒级数相结合,会加快该级数的收敛速度,具有很强的实用性。用Matlab计算:创建m文件calpi2.m,内容如下:functiony=calpi2(k)forn=1:ka(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幂级数展开。在得到相同精度的条件下,马庭公式所需要的叠加步数要明显少于欧拉公式,并且在计算精度越高的情况下,优势越明显。道理很简单,因为马庭公式计算的收敛速度要显著快于普通公式。欧拉公式决定收敛速度的是12n,而马庭公式决定收敛速度的是15n,因为15n的收敛速度快于12n,故马庭公式计算π的时候收敛速度要快于普通公示。所以马庭公式比普通公式更加精确,并且在计算高精度的时候有很大优势。误差及算法速度分析:设定精确到小数点后100位的π值。如果采用常见的求和公式,则要使截断误差不大于,即,则n≥2×。显然这一算法不现实,因此,我们选用收敛速度快的马庭公式计算:由于该公式第一部分的收敛速度远小于第二部分,因此将其分为两部分计算。如果要使截断误差不大于,则有,即可以估算n>70时就可以满足要求,而且各项的计算误差引起的精度损失之和最多只影响到小数点后末两位(因为每一项只有作除法运算时才有一次精度损失)。对于第二部分,同理可以分析得出n>20即可。程序运行后得到的结果是通过求arctan项得到一万位的精确值,然后加和而得到的,因此在计算结果的最后几位由于arctan项的舍入误差以及加和时的舍入误差影响了计算结果的准确度,但是这种舍入误差只能影响最后几位。计算的结果可信并且是准确的。

1 / 6
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功