圆周率在C语言中的应用,圆周率π在c语言课程中的应用.doc

圆周率π在c语言课程中的应用

圆周率π在c语言课程中的应用

科技信息 高校理科研究 圆周率钉在C语言课程巾昀应用 厦门理工学院软件学院 王晓峰 【摘要]本文循序渐进地介绍四种用C语言实现的近似计算圆周率叮r的算法,几个小程序涵盖C语言课程的重要章节.同时引出

对高校实验课教法的思考与探索。 .

[关键词]圆周率 订 蒙特卡洛算法 Macl1in公式 混乱代码大赛 从小学开始,我们就非常清楚圆周率叮r这个概念。这个常数具有非

常大的魅力,它一直吸引着众多的爱好者。国内外的许多数学家都对圆

周率的各种问题进行了多方面的探讨。那么,在大学一年级c语言这门

基础编程课上,能否将圆周率的近似计算问题引入实验课,从而一方面

提高学生的学习c语言的兴趣,提高编写算法的能力;另一方面,通过

证明部分圆周率的计算公式,也促进学生学习高等数学的兴趣呢?本文

作者从实际教学的经验出发,由简入深地给出几个圆周率计算算法及 源码;这些源代码除有明确说明出处外,均具有原创性.在VC++6.0和

TC2.0两种环境下进行过运行测试,本文的运行结果均来自VC++6.0环

境,TC环境下的结果有细微差别。 1.简单级数公式计算圆周率——掌握C语言的循环

c语言课程到了循环章节,它的魅力就逐渐显现了出来,许多小程

序和算法都可以让学生去尝试实现。而我们在高等数学泰勒公式章节

学习的圆周率公式这个时候就派上了用场。 中学时我们就已经知道:tan孚=1,从而 ̄----4arctan1,如果我们应用 4 泰勒公式将aretanx展开,就可以得到 酬Bnx ̄x- 一 +..…+(-1) …__ 把x=l代人,就得到 孚 1一丁1 1一 1+..… +(一1) 【_+¨… 这个简单的公式就可以用循环实现来实现圆周率的近似计算(虽 然它并不真正适用于计算圆周率),下面来分析一下。

我们用c语言中的double类型的变量来存放最终的结果,而上面

公式中的n作循环变量再适合不过了,在实际编码中我们取n从l变

化到30000。由于double类型本身的精度限制,n其实也没有必要取太 大的值。本文从基础人手,这里暂不讨论逼近速度和计算误差等计算方

法的问题。在循环中,n每次增加2,而要注意类型转换和在循环累加中 项的符号变化,这里为了清楚起见,我们增加了变量s,由它产生正负符 子= +}号一寺+古+古…’。 一}+争一 +古一 +..… 手= +}+ +..… = + +}+..… 作者提倡数学能力较强的专业一方面通过上面的各个公式练习C 语言循环的编写.另外同时对谈 公式给出推导过程:这样既锻炼了C —l12一 语言能力,同时也加深了数学能力的培养,一举两得。

2.圆周率的概率算法——掌握C语言的函数 对于程序员来说,自己编程领域中库函数的掌握程度是编程经验

的一个重要指标。在c语言学到函数章节的时候(通常为循环的下一章 节),作为rand()这个随机取数函数,因为它重要的作用,很多大学的教 师都会给学生进行讲解。那么,圆周率的计算过程中是否有与这个函数

相关的内容呢?答案是肯定的。随机模拟方法就是这样一种计算圆周率 的方法。虽然这种方法并不能“非常好”的逼近圆周率,但是在其它领

域,随机模拟具有非常大的作用,所以,计算机系的学生了解这种方法

也就显得非常必要。这种算法也称蒙特卡洛算法。 蒙特卡洛算法简单描述:在数值积分法中,利用求单位圆的}的面 4 积来求得孚,从而得到盯。单位圆的了1面积是一个扇形,它是边长为l 斗 斗 单位正方形的一部分。只要能求出扇形面积s 在正方形面积s中占的

比例K= 就立即能得到s.,从而得到百的值。办法是在正方形中随机

投入很多点,使所投的点落在正方形中每一个位置的机会相等看其中

有多少个点落在扇形内。将落在扇形内的点数m与所投点的总数n的 比 作为k的近似值。P落在扇形内的充要条件是x2+y ̄l。以上内容 n 属于数学概率中的古典概型章节,对计算机专业的学生来说并不难理 解 运行结果:pi=3.126167

由于没初始化随机数种子,所以该函数在执行过程中并不具有“随 机性”,由于在Tc和在VC++6.0中初始化随机数种子的函数并不相同, 本程序为保持兼容性,未加入那些内容。

3.Machin公式计算圆周率——掌握C语言的数组 上面两种计算圆周率的方法由于受double类型精度的影响,使得

圆周率的计算精确位数非常低,是否能够计算出较高精度的圆周率近似

值呢?在学习了数组章节之后,这一切也都不再是梦想。不过,要实现大 数运算,需要自己实现整数的加、减、乘.、除运算。对于计算机专业或者 数学专业的学生来说,这一点并不算太难。好了,下面我们来分析Machin 公式(国内经常翻译成马青公式) =16arctan1

..4ar

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值