祖冲之和圆周率的计算

发布时间:2011-01-30 18:30:17   来源:文档文库   
字号:

祖冲之和圆周率的计算

任务

通过对“圆周率”级数求法的一种算法的介绍,掌握运用“累加器”算法求解级数问题的一般方法。

所谓“圆周率”是指一个圆的周长与其直径的比值。古今中外,许多人致力于圆周率的研究与计算。为了计算出圆周率的越来越好的近似值,一代代的数学家为这个神秘的数贡献了无数的时间与心血。

一、计算圆周率的各种方法

早在我国的三国时代,数学家刘徽就用“割圆术”求出了比较精确的圆周率。他发现:当圆内接正多边形的边数不断增加后,多边形的周长会越来越逼近圆周长,而多边形的面积也会越来越逼近圆面积。于是,刘徽利用正多边形面积和圆面积之间的关系,从正六边形开始,逐步把边数加倍:正十二边形、正二十四边形,正四十八边形……,一直到正三七二边形,算出圆周率等于三点一四一六,将圆周率的精度提高到小数点后第四位。

祖冲之(公元429500年),是中国南北朝时期著名的数学家、天文学家。他在刘徽研究的基础上,进一步地发展,经过既漫长又烦琐的计算,一直算到圆内接正二四五七六边形,而得到一个结论:圆周率的值介于三点一四一五九二六和三点一四一五九二七之间,成为世界上最早把圆周率推算出七位数字的科学家,直到一千年以后,才有西方的数学家达到和超过祖冲之的成就。同时,他还找到了圆周率的约率:227、密率:355113

以前人们计算圆周率,是要探究圆周率是否循环小数。自从1761Lambert证明了圆周率是无理数,1882Lindemann证明了圆周率是超越数后,圆周率的神秘面纱就被揭开了。现在人们计算圆周率,多是为了验证计算机的计算能力。

古人计算圆周率,一般是用割圆法。但这种基于几何的算法计算量大,速度慢,吃力不讨好。随着数学的发展,数学家们在进行数学研究时有意无意地发现了许多计算圆周率的公式。我们选取其中的一个公式,用VB编程来实现这个公式。

英国天文学教授John Machin1706年发现了一个计算圆周率的公式,称为Machin公式,他利用这个公式计算到了100位的圆周率。

还有很多类似于Machin公式的反正切公式。

以下即为Machin公式:

分析其中的arctgx公式可以知道,这是一个级数公式,而在程序设计中则可以用一个“累加器”算法来实现。

用流程图来表现,则在流程图中,必定有判别框,并根据判别条件成立与否分别设置了重复部分操作内容的分支流程。

二、算法的程序实现

为了实现这个算法,则需要编制相应的程序,在程序中除了需要用到赋值语句、输入输出语句、其它计算语句外,还必须用到循环语句。

范例:我使用VB来编写程序实现这个算法。

算法中用到了一条输入语句、两个循环语句、一个输出语句以及多个赋值语句。

1)建立窗体和输入、输出、命令按钮组件对象。

2)编写“Command1”触发的程序代码。

在“Private Sub command1_click()”和“End Sub”之间输入以下的程序代码。

Dim i As Integer, n As Integer, pi As Double, arc1 As Double, arc2 As Double, x As Single

i = Text1.Text

x = 1 / 5

arc1 = 0

For n = 1 To I

arc1 = arc1 + (-1) ^ (n - 1) * x ^ (2 * n - 1) / (2 * n - 1)

Next

x = 1 / 239

arc2 = 0

For n = 1 To I

arc2 = arc2 + (-1) ^ (n - 1) * x ^ (2 * n - 1) / (2 * n - 1)

Next

pi = 16 * arc1 - 4 * arc2

Label1.Caption = pi

第一行,定义了两个整数类型的数值变量In,一个单精度浮点数变量x,以及三个双精度浮点数变量piarc1arc2。其中pi用于表示圆周率的值。

第二行,将text1文本框中的数据转换为整型数值并赋值给整型变量i.

第三行,将x赋值为“1/5”。

第四行,将arc1赋值为“0”。因为arc1是一个乘加器,所以其初值应该是0

第五行,表示开始一个循环,循环变量n1开始,步长为1,依次取值到I,一共循环I次。

第六行,arc1 = arc1 + (-1) ^ (n - 1) * x ^ (2 * n - 1) / (2 * n - 1)

这是一个累加器的算法,它将变量arc1的原值加上表达式的值,然后将加法运算的结果重新赋值给变量arc1作为arc1的新值。

Machin公式中的级数代数式,转换成表达式则为:

(-1) ^ (n - 1) * x ^ (2 * n - 1) / (2 * n - 1)

第七行。NEXT,表示循环变量n增加一个步长的值1,然后判断“n<=I”是否成立,如果成立则继续循环,否则不再循环直接执行下一个语句。

第八行,将x赋值为“1/239”。“Loop While I<=n”表示当I<=n成立时继续循环,从第五行“Do”的下面一行继续执行。如果I<=n不成立,即In大时,则不再循环,直接执行下一行即第九行的语句,从而结束循环。

第九行,将arc2赋值为“0”。Arc2也是一个乘加器。

第十~十二行,通过循环计算arc2的值。

第十三行,pi = 16 * arc1 - 4 * arc2。通过Machin公式计算圆周率的值。

第十四行,将表示圆周率的变量pi的值赋值给“Label1组件对象的“Caption”属性,输出圆周率。

3)运行程序。

将第一个文本框中的“Text1”删除,重新输入“9”;然后单击“Command1”,就能在原来“Label1”的位置上输出pi的值“31415926998682”。输入“10”时,输出pi的值“3.14159269986815”。输入“1000”时,输出pi的值仍为“3.14159269986815”。说明,应该这个程序,当n大于10时,在双精度浮点数的数值范围内,圆周率的精度至少可以达到小数点后的14位。

本文来源:https://www.2haoxitong.net/k/doc/d1b47f0e76c66137ee06194d.html

《祖冲之和圆周率的计算.doc》
将本文的Word文档下载到电脑,方便收藏和打印
推荐度:
点击下载文档

文档为doc格式