圆周率π的计算方法.doc_第1页
圆周率π的计算方法.doc_第2页
圆周率π的计算方法.doc_第3页
圆周率π的计算方法.doc_第4页
圆周率π的计算方法.doc_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

圆周率的计算方法圆周率的计算方法古人计算圆周率,一般是用割圆法。即用圆的内接或外切正多边形来逼近圆的周长。Archimedes用正96边形得到圆周率小数点后3位的精度;刘徽用正3072边形得到5位精度;Ludolph Van Ceulen用正262边形得到了35位精度。这种基于几何的算法计算量大,速度慢,吃力不讨好。随着数学的发展,数学家们在进行数学研究时有意无意地发现了许多计算圆周率的公式。1、Machin公式 这个公式由英国天文学教授John Machin于1706年发现。他利用这个公式计算到了100位的圆周率。Machin公式每计算一项可以得到1.4位的十进制精度。因为它的计算过程中被乘数和被除数都不大于长整数,所以可以很容易地在计算机上编程实现。用马青公式计算Pi至小数点后100位程序program Pi_Value;$APPTYPE CONSOLE/将Pi计算精确小数点后100位/Machin公式/Pi=16arctan(1/5)-4arctan(1/239)usesSysUtils;constN=100;S=2*N+50;aNum=5;bNum=239;typeNum=array 1.S of byte;/初始化数组procedure AZero(var arr:Num);vari:smallint;beginfor i:=1 to S doarr:=0;end;/除法procedure Division(var arr:Num;const b:smallint);varc,y,i:smallint;beginc:=0;for i:=1 to S dobeginy:=arr+c*10;c:=y mod b;arr:=y div b;end;end;/加法procedure Addition(var arr:Num;const b:Num);vari,y,c:smallint;beginc:=0;for i:=S downto 1 dobeginy:=arr+b+c;if y=10 thenbeginc:=1;arr:=y-10;endelsebeginc:=0;arr:=y;end;end;end;/减法procedure Minus(var arr:Num;const b:Num);vari,y,c:smallint;beginc:=0;for i:=S downto 1 dobeginy:=arr-b-c;if y0 thenbeginc:=1;arr:=10+y;endelsebeginc:=0;arr:=y;end;end;end;vartag:boolean;a,b,Ra,Rb,t:Num;i,j:smallint;beginAZero(t);Ra:=t;Rb:=t;tag:=true;writeln(计算中,请等待.);for i:=1 to N dobegina:=t;b:=t;a1:=16;b1:=4;for j:=1 to i*2-1 dobeginDivision(a,aNum);DiVision(b,bNum);end;Division(a,i*2-1);Division(b,i*2-1);if tag thenbegintag:=false;Addition(Ra,a);Addition(Rb,b);endelsebegintag:=true;Minus(Ra,a);Minus(Rb,b);end;end;Minus(Ra,Rb);writeln(计算结果如下:);writeln(Ra1,.);for i:=2 to N+1 dowrite(Ra);readln;End.还有很多类似于Machin公式的反正切公式。在所有这些公式中,Machin公式似乎是最快的了。虽然如此,如果要计算更多的位数,比如几千万位,Machin公式就力不从心了。下面介绍的算法,在PC机上计算大约一天时间,就可以得到圆周率的过亿位的精度。这些算法用程序实现起来比较复杂。因为计算过程中涉及两个大数的乘除运算,要用FFT(Fast Fourier Transform)算法。FFT可以将两个大数的乘除运算时间由O(n2)缩短为O(nlog(n)。2、Ramanujan公式1914年,印度数学家Srinivasa Ramanujan在他的论文里发表了一系列共14条圆周率的计算公式,这是其中之一。这个公式每计算一项可以得到8位的十进制精度。1985年Gosper用这个公式计算到了圆周率的17,500,000位。1989年,David & Gregory Chudnovsky兄弟将Ramanujan公式改良成为:这个公式被称为Chudnovsky公式,每计算一项可以得到15位的十进制精度。1994年Chudnovsky兄弟利用这个公式计算到了4,044,000,000位。Chudnovsky公式的另一个更方便于计算机编程的形式是:3、AGM(Arithmetic-Geometric Mean)算法 Gauss-Legendre公式:初值:重复计算:最后计算:这个公式每迭代一次将得到双倍的十进制精度,比如要计算100万位,迭代20次就够了。1999年9月Takahashi和Kanada用这个算法计算到了圆周率的206,158,430,000位,创出新的世界纪录。4、Borwein四次迭代式:初值:重复计算:最后计算:这个公式由Jonathan Borwein和Peter Borwein于1985年发表,它四次收敛于圆周率。5、Bailey-Borwein-Plouffe算法这个公式简称BBP公式,由David Bailey, Peter Borwein和Simon Plouffe

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论