古人计算圆周率,一般是用割圆法。
即用圆的内接或外切正多边形来逼近圆的周长。
Archimedes用正96边形得到圆周率小数点后3位的精度;刘徽用正3072边形得到5位精度;Ludolph Van Ceulen用正262边形得到了35位精度。
这种基于几何的算法计算量大,速度慢,吃力不讨好。
随着数学的发展,数学家们在进行数学研究时有意无意地发现了许多计算圆周率的公式。
下面挑选一些经典的常用公式加以介绍。
除了这些经典公式外,还有很多其它公式和由这些经典公式衍生出来的公式,就不一一列举了。
1、 Machin公式[这个公式由英国天文学教授John Machin于1706年发现。
他利用这个公式计算到了100位的圆周率。
Machin公式每计算一项可以得到1.4位的十进制精度。
因为它的计算过程中被乘数和被除数都不大于长整数,所以可以很容易地在计算机上编程实现。
Machin.c 源程序还有很多类似于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年发表,它四次收敛于圆周率。
这个公式简称BBP公式,由David Bailey, Peter Borwein和Simon Plouffe于1995年共同发表。
它打破了传统的圆周率的算法,可以计算圆周率的任意第n位,而不用计算前面的n-1位。
这为圆周率的分布式计算提供了可行性。
1997年,Fabrice Bellard找到了一个比BBP快40%的公式:【与π有关的等式】(π^2)/6 = 1/1^2 + 1/2^2 + 1/3^2 + ······ + 1/n^2 + ······e^(πi) + 1 = 0e^(-x^2) 在-∞到+∞上的积分是√πsinx/x 在0到∞上的积分是π/2[瓦里斯公式] π/2 = lim (n→∞) [ (2n)!! / (2n-1)!! ]^2 / (2n+1)古人计算圆周率π,一般是用割圆法。
即用圆的内接或外切正多边形来逼近圆的周长。
阿基米德(Archimedes)用正96边形得到圆周率小数点后3位的精度;刘徽用正3072边形得到5位精度;Ludolph Van Ceulen用正262边形得到了35位精度。
这种基于几何的算法计算量大,速度慢。
随着数学的发展,数学家们在进行数学研究时有意无意地发现了许多计算圆周率的公式。
下面介绍一些经典的公式。
Machin公式这个公式由英国天文学教授John Machin于1706年发现。
他利用这个公式计算到了100位的圆周率。
Machin公式每计算一项可以得到1.4位的十进制精度。
因为它的计算过程中被乘数和被除数都不大于长整数,所以很容易在计算机上编程实现。
还有很多类似于Machin公式的反正切公式。
在所有这些公式中,Machin公式似乎是最快的了。
虽然如此,如果要计算更多的位数,比如几千万位,Machin 公式就力不从心了。
下面介绍的算法,在PC机上计算大约一天时间,就可以得到圆周率的过亿位的精度。
这些算法用程序实现起来比较复杂。
因为计算过程中涉及两个大数的乘除运算,要用快速傅利叶变换(FFT,Fast Fourier Transform)算法。
FFT可以将两个大数的乘除运算时间由O(n2)缩短为O(nlog(n))。
拉马努安(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 公式的另一个更方便于计算机编程的形式是:AGM(Arithmetic-Geometric Mean)算法高斯-勒让德(Gauss-Legendre)公式:初值:重复计算:最后计算:这个公式每迭代一次将得到双倍的十进制精度,比如要计算100万位,迭代20次就够了。
1999年9月Takahashi和Kanada用这个算法计算到了圆周率的206,158,430,000位,创出新的世界纪录。
Borwein四次迭代式:初值:重复计算:最后计算:这个公式由Jonathan Borwein和Peter Borwein于1985年发表,它四次收敛于圆周率。
Bailey-Borwein-Plouffe算法这个公式简称BBP公式,由David Bailey, Peter Borwein和Simon Plouffe 于1995年共同发表。
它打破了传统的圆周率的算法,可以计算圆周率的任意第n位,而不用计算前面的n-1位。
这为圆周率的分布式计算提供了可行性。
1997年,Fabrice Bellard找到了一个比BBP快40%的公式:圆周率π小数点后1000位:π=3.圆周率,一般以π来表示,是一个在数学及物理学普遍存在的数学常数。
它定义为圆形之周长与直径之比。
它也等于圆形之面积与半径平方之比。
是精确计算圆周长、圆面积、球体积等几何形状的关键值。
在分析学上,π可以严格地定义为满足sin(x) = 0的最小正实数x,这里的sin是正弦函数(采用分析学的定义)。
[编辑本段]【圆周率的历史】π=Pài(π=Pi)古希腊欧几里德《几何原本》(约公元前3世纪初)中提到圆周率是常数,中国古算书《周髀算经》(约公元前2世纪)中有“径一而周三”的记载,也认为圆周率是常数。
历史上曾采用过圆周率的多种近似值,早期大都是通过实验而得到的结果,如古埃及纸草书(约公元前1700)中取pi=(4/3)^4≒3.1604 。
第一个用科学方法寻求圆周率数值的人是阿基米德,他在《圆的度量》(公元前3世纪)中用圆内接和外切正多边形的周长确定圆周长的上下界,从正六边形开始,逐次加倍计算到正96边形,得到(3+(10/71))<π<(3+(1/7)) ,开创了圆周率计算的几何方法(亦称古典方法,或阿基米德方法),得出精确到小数点后两位的π值。
中国数学家刘徽在注释《九章算术》(263年)时只用圆内接正多边形就求得π的近似值,也得出精确到两位小数的π值,他的方法被后人称为割圆术。
他用割圆术一直算到圆内接正192边形。
南北朝时代数学家祖冲之进一步得出精确到小数点后7位的π值(约5世纪下半叶),给出不足近似值3.1415926和过剩近似值3.1415927,还得到两个近似分数值,密率355/113和约率22/7。
其中的密率在西方直到1573才由德国人奥托得到,1625年发表于荷兰工程师安托尼斯的著作中,欧洲称之为安托尼斯率。
阿拉伯数学家卡西在15世纪初求得圆周率17位精确小数值,打破祖冲之保持近千年的纪录。
德国数学家柯伦于1596年将π值算到20位小数值,后投入毕生精力,于1610年算到小数后35位数,该数值被用他的名字称为鲁道夫数。
无穷乘积式、无穷连分数、无穷级数等各种π值表达式纷纷出现,π值计算精度也迅速增加。
1706年英国数学家梅钦计算π值突破100位小数大关。
1873 年另一位英国数学家尚可斯将π值计算到小数点后707位,可惜他的结果从528位起是错的。
到1948年英国的弗格森和美国的伦奇共同发表了π的808位小数值,成为人工计算圆周率值的最高纪录。
电子计算机的出现使π值计算有了突飞猛进的发展。
1949年美国马里兰州阿伯丁的军队弹道研究实验室首次用计算机(ENIAC)计算π值,一下子就算到2037位小数,突破了千位数。
1989年美国哥伦比亚大学研究人员用克雷-2型和IBM-VF型巨型电子计算机计算出π值小数点后4.8亿位数,后又继续算到小数点后10.1亿位数,创下最新的纪录。
至今,最新纪录是小数点后25769.8037亿位。
[编辑本段]【圆周率的计算】余古今中外,许多人致力于圆周率的研究与计算。
为了计算出圆周率的越来越好的近似值,一代代的数学家为这个神秘的数贡献了无数的时间与心血。
十九世纪前,圆周率的计算进展相当缓慢,十九世纪后,计算圆周率的世界纪录频频创新。
整个十九世纪,可以说是圆周率的手工计算量最大的世纪。
进入二十世纪,随着计算机的发明,圆周率的计算有了突飞猛进。
借助于超级计算机,人们已经得到了圆周率的2061亿位精度。
历史上最马拉松式的计算,其一是德国的Ludolph Van Ceulen,他几乎耗尽了一生的时间,计算到圆的内接正262边形,于1609年得到了圆周率的35位精度值,以至于圆周率在德国被称为Ludolph数;其二是英国的威廉·山克斯,他耗费了15年的光阴,在1874年算出了圆周率的小数点后707位,并将其刻在了墓碑上作为一生的荣誉。