第24课-计算圆周率π的近似值.ppt
- 文档编号:192520
- 上传时间:2022-10-06
- 格式:PPT
- 页数:28
- 大小:349.50KB
第24课-计算圆周率π的近似值.ppt
《第24课-计算圆周率π的近似值.ppt》由会员分享,可在线阅读,更多相关《第24课-计算圆周率π的近似值.ppt(28页珍藏版)》请在冰豆网上搜索。
第24课计算圆周率的近似值,1.用迭代法求的近似值。
2.用蒙特卡洛法求的值。
3.设计一个算法计算1900年1月1日之后的任何一天是星期几?
用VB程序实现这一算法。
复习引入,解析算法基本思想:
用解析的方法找出表示问题的前提条件与所求结果之间关系的数学表达式,并通过表达式的计算来实现问题求解。
在设计解析算法时,必须注意保证计算过程描述的正确性。
问题提出,圆周率=3.1415926有无穷多位,历史上有很多科学家计算过这个数,古希腊学者阿基米德、我国杰出的数学家和天文学家祖冲之等,都提出许多求解的方法。
公元前3世纪,古希腊学者阿基米德用圆内接或外切正多边形来近似代替圆,得到近似圆周率。
到了公元5世纪,我国杰出的数学家和天文学家祖冲之在刘徽“割圆术”的基础上,使用更加精密的方法,精确到小数点后七位,求出结果在3.14159263.1415927间,这个的圆周率,在当时是非常了不起的成就。
直到16世纪,才由中亚人计算出精确度为小数16位。
随着计算机的出现,的计算取得了新的突破。
利用计算机技术将值计算到小数点后20多亿位,甚至到上千亿位。
古今中外的数学家们计算的近似值主要有三类方法:
1.利用“正多边形逼近”的方法。
2.使用迭代法。
可利用下列式子计算。
3.使用蒙特卡洛法(Monte-Carlomethod)。
蒙特卡洛法是使用随机模拟实验结果进行统计来求得的近似值的方法。
实践活动,用级数公式,计算圆周率的近似值。
1.算法分析按照级数公式,由若干项求和得到,第1项为,第2项为,第3项为,第4项为分析可得第n项为an与前一项an-1的关系是。
2.算法流程图:
变量n:
输入计算的项数变量pi:
计算的结果变量an:
第n项的值,3.程序界面设计:
控件属性值的设置参考如下表:
4.分析算法流程,编写代码,PrivateSubCommand1_Click()DimPiAsDouble,anAsDoubleDimm,nAsIntegern=Val(Text1.Text)Pi=1an=1Form=2Tonan=an*(m-1)/(2*m-1)计算第n项的值Pi=Pi+an进行累加NextText2.Text=Str(Pi*2)EndSub,5.运行调试程序;,课堂练习,1.使用蒙特卡洛法求的近似值。
利用求单位正方形与内接圆面积的比例关系来求得的近似值。
单位圆的1/4面积是一个扇形,它是边长为1单位正方形的一部分。
如果能求出扇形面积s1在正方形面积s中占的比例k=s1/s,它的值也等于/4,从而就计算得到的值。
怎样求出扇形面积在正方形面积中占的比例k呢?
蒙特卡洛法是在正方形中随机投入很多点,使所投的点落在正方形中每一个位置的机会相等。
有些点将落在扇形内,而另一些点将会落在扇形外,落在扇形内的点数m与所投点的总数n之间比m/n即为k的近似值。
蒙特卡洛(MonteCarlo)方法,或称计算机随机模拟方法,是一种基于“随机数”的计算方法。
这一方法源于美国在第二次世界大战时研制原子弹的“曼哈顿计划”。
该计划的主持人之一、数学家冯诺伊曼用驰名世界的赌城摩纳哥的MonteCarlo来命名这种方法,为它蒙上了一层神秘色彩。
使用随机函数Rnd随机产生两个小数x、y,可构成一个坐标点(x,y),判断是否落在扇形内的充要条件是x2+y2=1,总计投放n次,根据条件判断统计得到落在扇形内的次数m,再根据两者的比例m/n,求得=4*m/n的近似值。
1)参考程序代码:
PrivateSubCommand1_Click()DimPiAsDouble,xAsDouble,yAsDoubleDimmAsLong,nAsLongRandomizeTimer随机数初始化n=Val(Text1.Text)读入投放次数nIfn=0ThenMsgBox请输入投放次数nExitSubEndIfm=0ForI=1Tonx=Rnd()y=Rnd()Ifx2+y2=1Thenm=m+1判断是否在扇形内NextIPi=4*m/n计算出的近似值Text2.Text=Str(Pi)EndSub,1.用迭代法求的近似值。
算法流程图程序代码设计示例程序,2.用蒙特卡洛法求的近似值。
算法流程图程序代码设计示例程序,3.设计一个算法计算1900年1月1日之后的任何一天是星期几?
用VB程序实现这一算法。
算法流程图界面设计程序代码示例程序,星期计算问题,平时在日常生活中遇到这样的问题,忘记了几月几日是星期几,一般会采用这样的方法,从一个已知的某天开始推算,先计算已知星期几的这一天距要推算的那天共相差几天,然后将天数除以7取余数,最后就可以推算出星期几了。
已知公元元年1月1日是星期一,再计算需推算的日子离元年1月1日相距多少天(W),再用天数W除以7的余数加上1就是星期几了,余0就是星期一,余1就是星期二.,但是在计算天数时会发现由于中间会经历平年(365天)、闰年(366天),每年的不同月份天数也不相同,这样计算量是很大的,计算也十分困难。
德国数学家克里斯蒂安蔡勒(ChristianZeller,1822-1899)在1886年推导出了一个解决此问题的著名的蔡勒公式,w=c/4-2*c+y+y/4+13*(m+1)/5+d-1其中,c是年份的前2位,y是年份的后两位,m是月份,d是日数。
1月和2月要按上一年的13月和14月来算,这时c和y均按上一年取值,表示取整。
如:
推算2009年1月1日是星期几?
C=20,y=08(月按上一年13月来算,同时y取上一年的年份),M=13(月按上一年13月来算),d=1,w=20/4-2*20+8+8/4+13*(13+1)/5+1-1=11,除以7的余数为4,所以推算是星期四,与事实一致。
为方便口算,上式中的13*(M+1)/5也往往写成26*(M+1)/10。
算法流程框图下图所示:
参考程序界面如下:
星期几计算问题界面,程序需要使用到四个文本框,其中三个分别用于输入年、月、日,另一个用于输出计算结果,一个命令按钮,当按下按钮时开始计算,五个标签,分别说明文本框的作用。
各控件属性设置参考如下:
参考程序代码如下:
PublicFunctionleap(yAsInteger)AsInteger判断是否为闰年函数IfyMod100=0Then是返回1,不是返回0IfyMod400=0Thenleap=1Elseleap=0函数说明见书4.4.2节ElseIfyMod4=0Thenleap=1Elseleap=0EndIfEndFunction,PrivateSubCommand1_Click()Dimyearasinteger,month,day,w,c,y,m,d,okAsIntegeryear=Val(Text1.Text)month=Val(Text2.Text)day=Val(Text3.Text)ok=0判断输入的日期是否是有效的日期,根据平年、闰年,不同月份的不同情况来判断If(month=1Ormonth=3Ormonth=5Ormonth=7Ormonth=8Ormonth=10Ormonth=12)And(day=1Andday=1Orday=1Andday=1Andday=28)Thenok=1Ifok=0ThenText4.Text=输入日期有错误,ElseIfmonth=1Ormonth=2Thenyear=year-1month=month+12EndIfc=year100y=yearMod100m=monthd=dayw=Int(c/4)-2*c+y+Int(y/4)+Int(13*(m+1)/5)+d1蔡勒公式Text4.Text=Str(c)+Str(y)+Str(m)+Str(d)+Str(w)w=(w+700)Mod7+1求除以7的余数,w加上700保证余数一定是整数Text4.Text=WeekdayName(w)转换为星期形式EndIfEndSub,PrivateSubText1_Click()Text1.Text=Text2.Text=Text3.Text=“利用WeekdayName函数可将值转换成星期形式:
程序运行结果参考如下:
星期计算问题测试数据表,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 24 计算 圆周率 近似值