欢迎来到天天文库
浏览记录
ID:21393602
大小:71.00 KB
页数:3页
时间:2018-10-21
《祖冲之和圆周率计算》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、祖冲之和圆周率的计算任务通过对“圆周率”级数求法的一种算法的介绍,掌握运用“累加器”算法求解级数问题的一般方法。所谓“圆周率”是指一个圆的周长与其直径的比值。古今中外,许多人致力于圆周率的研究与计算。为了计算出圆周率的越来越好的近似值,一代代的数学家为这个神秘的数贡献了无数的时间与心血。一、计算圆周率的各种方法早在我国的三国时代,数学家刘徽就用“割圆术”求出了比较精确的圆周率。他发现:当圆内接正多边形的边数不断增加后,多边形的周长会越来越逼近圆周长,而多边形的面积也会越来越逼近圆面积。于是,刘徽利
2、用正多边形面积和圆面积之间的关系,从正六边形开始,逐步把边数加倍:正十二边形、正二十四边形,正四十八边形……,一直到正三○七二边形,算出圆周率等于三点一四一六,将圆周率的精度提高到小数点后第四位。祖冲之(公元429-500年),是中国南北朝时期著名的数学家、天文学家。他在刘徽研究的基础上,进一步地发展,经过既漫长又烦琐的计算,一直算到圆内接正二四五七六边形,而得到一个结论:圆周率的值介于三点一四一五九二六和三点一四一五九二七之间,成为世界上最早把圆周率推算出七位数字的科学家,直到一千年以后,才有西
3、方的数学家达到和超过祖冲之的成就。同时,他还找到了圆周率的约率:22∕7、密率:355∕113。以前人们计算圆周率,是要探究圆周率是否循环小数。自从1761年Lambert证明了圆周率是无理数,1882年Lindemann证明了圆周率是超越数后,圆周率的神秘面纱就被揭开了。现在人们计算圆周率,多是为了验证计算机的计算能力。古人计算圆周率,一般是用割圆法。但这种基于几何的算法计算量大,速度慢,吃力不讨好。随着数学的发展,数学家们在进行数学研究时有意无意地发现了许多计算圆周率的公式。我们选取其中的一个
4、公式,用VB编程来实现这个公式。英国天文学教授JohnMachin于1706年发现了一个计算圆周率的公式,称为Machin公式,他利用这个公式计算到了100位的圆周率。还有很多类似于Machin公式的反正切公式。以下即为Machin公式:活动建议你能直接画出这个算法的流程图吗?分析其中的arctgx公式可以知道,这是一个级数公式,而在程序设计中则可以用一个“累加器”算法来实现。用流程图来表现,则在流程图中,必定有判别框,并根据判别条件成立与否分别设置了重复部分操作内容的分支流程。二、算法的程序实现
5、为了实现这个算法,则需要编制相应的程序,在程序中除了需要用到赋值语句、输入输出语句、其它计算语句外,还必须用到循环语句。范例:我使用VB来编写程序实现这个算法。算法中用到了一条输入语句、两个循环语句、一个输出语句以及多个赋值语句。(1)建立窗体和输入、输出、命令按钮组件对象。(2)编写“Command1”触发的程序代码。在“PrivateSubcommand1_click()”和“EndSub”之间输入以下的程序代码。DimiAsInteger,nAsInteger,piAsDouble,arc1
6、AsDouble,arc2AsDouble,xAsSinglei=Text1.Textx=1/5arc1=0Forn=1ToIarc1=arc1+(-1)^(n-1)*x^(2*n-1)/(2*n-1)Nextx=1/239arc2=0Forn=1ToIarc2=arc2+(-1)^(n-1)*x^(2*n-1)/(2*n-1)Nextpi=16*arc1-4*arc2Label1.Caption=pi第一行,定义了两个整数类型的数值变量I和n,一个单精度浮点数变量x,以及三个双精度浮点数变量pi
7、、arc1和arc2。其中pi用于表示圆周率的值。第二行,将text1文本框中的数据转换为整型数值并赋值给整型变量i.。第三行,将x赋值为“1/5”。第四行,将arc1赋值为“0”。因为arc1是一个乘加器,所以其初值应该是0。活动建议想一想:能否根据VB源程序,画出相对应的实现machin公式流程图呢?第五行,表示开始一个循环,循环变量n从1开始,步长为1,依次取值到I,一共循环I次。第六行,arc1=arc1+(-1)^(n-1)*x^(2*n-1)/(2*n-1),这是一个累加器的算法,它将
8、变量arc1的原值加上表达式的值,然后将加法运算的结果重新赋值给变量arc1作为arc1的新值。Machin公式中的级数代数式,转换成表达式则为:(-1)^(n-1)*x^(2*n-1)/(2*n-1)第七行。NEXT,表示循环变量n增加一个步长的值1,然后判断“n<=I”是否成立,如果成立则继续循环,否则不再循环直接执行下一个语句。第八行,将x赋值为“1/239”。“LoopWhileI<=n”表示当I<=n成立时继续循环,从第五行“Do”的下面一行继续执行。如果I<=n不成立,
此文档下载收益归作者所有