您好,欢迎访问三七文档
当前位置:首页 > 幼儿/小学教育 > 小学教育 > 第24课 计算圆周率的近似值
高中信息技术必修2:算法与程序设计授课人:杨鹏1.用迭代法求π的近似值。2.用蒙特卡洛法求π的值。3.设计一个算法计算1900年1月1日之后的任何一天是星期几?用VB程序实现这一算法。高中信息技术必修2:算法与程序设计授课人:杨鹏复习引入解析算法基本思想:用解析的方法找出表示问题的前提条件与所求结果之间关系的数学表达式,并通过表达式的计算来实现问题求解。在设计解析算法时,必须注意保证计算过程描述的正确性。高中信息技术必修2:算法与程序设计授课人:杨鹏问题提出圆周率π=3.1415926……有无穷多位,历史上有很多科学家计算过这个数,古希腊学者阿基米德、我国杰出的数学家和天文学家祖冲之等,都提出许多求解的方法。公元前3世纪,古希腊学者阿基米德用圆内接或外切正多边形来近似代替圆,得到近似圆周率。到了公元5世纪,我国杰出的数学家和天文学家祖冲之在刘徽“割圆术”的基础上,使用更加精密的方法,精确到小数点后七位,求出结果在3.1415926~3.1415927间,这个的圆周率,在当时是非常了不起的成就。直到16世纪,才由中亚人计算出精确度为小数16位。随着计算机的出现,π的计算取得了新的突破。利用计算机技术将π值计算到小数点后20多亿位,甚至到上千亿位。高中信息技术必修2:算法与程序设计授课人:杨鹏古今中外的数学家们计算π的近似值主要有三类方法:1.利用“正多边形逼近”的方法。2.使用迭代法。可利用下列式子计算π。3.使用蒙特卡洛法(Monte-Carlomethod)。蒙特卡洛法是使用随机模拟实验结果进行统计来求得π的近似值的方法。高中信息技术必修2:算法与程序设计授课人:杨鹏实践活动用级数公式,计算圆周率π的近似值。高中信息技术必修2:算法与程序设计授课人:杨鹏1.算法分析按照级数公式,由若干项求和得到,第1项为,第2项为,第3项为,第4项为分析可得第n项为an与前一项an-1的关系是。2S11a312a52313a,7352314a1211nnaann高中信息技术必修2:算法与程序设计授课人:杨鹏2.算法流程图:变量n:输入计算的项数变量pi:计算的结果变量an:第n项的值高中信息技术必修2:算法与程序设计授课人:杨鹏3.程序界面设计:高中信息技术必修2:算法与程序设计授课人:杨鹏控件属性值的设置参考如下表:对象名属性名属性值说明Form1Caption计算π的近似值说明程序的功能Text2Text空串输出计算的结果(π的近似值)BackColor蓝色Text1Text空串输入各个电阻的阻值(每次输入一个)BackColor黄色Command1Caption计算说明命令按钮的作用Label1Caption输入项数n:说明文本框Text1的作用Label2Caption计算π的近似值说明文本框Text2的作用Image1Picturepi.jpg显示图片pi.jpg(级数公式)高中信息技术必修2:算法与程序设计授课人:杨鹏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高中信息技术必修2:算法与程序设计授课人:杨鹏5.运行调试程序;高中信息技术必修2:算法与程序设计授课人:杨鹏课堂练习1.使用蒙特卡洛法求π的近似值。利用求单位正方形与内接圆面积的比例关系来求得π的近似值。单位圆的1/4面积是一个扇形,它是边长为1单位正方形的一部分。如果能求出扇形面积s1在正方形面积s中占的比例k=s1/s,它的值也等于π/4,从而就计算得到π的值。怎样求出扇形面积在正方形面积中占的比例k呢?蒙特卡洛法是在正方形中随机投入很多点,使所投的点落在正方形中每一个位置的机会相等。有些点将落在扇形内,而另一些点将会落在扇形外,落在扇形内的点数m与所投点的总数n之间比m/n即为k的近似值。蒙特卡洛(MonteCarlo)方法,或称计算机随机模拟方法,是一种基于“随机数”的计算方法。这一方法源于美国在第二次世界大战时研制原子弹的“曼哈顿计划”。该计划的主持人之一、数学家冯·诺伊曼用驰名世界的赌城—摩纳哥的MonteCarlo—来命名这种方法,为它蒙上了一层神秘色彩。高中信息技术必修2:算法与程序设计授课人:杨鹏使用随机函数Rnd随机产生两个小数x、y,可构成一个坐标点(x,y),判断是否落在扇形内的充要条件是x2+y2=1,总计投放n次,根据条件判断统计得到落在扇形内的次数m,再根据两者的比例m/n,求得π=4*m/n的近似值。高中信息技术必修2:算法与程序设计授课人:杨鹏1)参考程序代码:PrivateSubCommand1_Click()DimPiAsDouble,xAsDouble,yAsDoubleDimmAsLong,nAsLongRandomizeTimer'随机数初始化n=Val(Text1.Text)'读入投放次数nIfn=0ThenMsgBox请输入投放次数nExitSubEndIfm=0ForI=1Tonx=Rnd()y=Rnd()Ifx^2+y^2=1Thenm=m+1'判断是否在扇形内NextIPi=4*m/n'计算出π的近似值Text2.Text=Str(Pi)EndSub高中信息技术必修2:算法与程序设计授课人:杨鹏1.用迭代法求π的近似值。算法流程图程序代码设计示例程序高中信息技术必修2:算法与程序设计授课人:杨鹏2.用蒙特卡洛法求π的近似值。算法流程图程序代码设计示例程序高中信息技术必修2:算法与程序设计授课人:杨鹏3.设计一个算法计算1900年1月1日之后的任何一天是星期几?用VB程序实现这一算法。算法流程图界面设计程序代码示例程序高中信息技术必修2:算法与程序设计授课人:杨鹏星期计算问题平时在日常生活中遇到这样的问题,忘记了几月几日是星期几,一般会采用这样的方法,从一个已知的某天开始推算,先计算已知星期几的这一天距要推算的那天共相差几天,然后将天数除以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均按上一年取值,[]表示取整。高中信息技术必修2:算法与程序设计授课人:杨鹏如:推算2009年1月1日是星期几?C=20,y=08(1月按上一年13月来算,同时y取上一年的年份),M=13(1月按上一年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]。高中信息技术必修2:算法与程序设计授课人:杨鹏算法流程框图下图所示:计算c,y,m,d。C是世纪数减一,y是年份后两位,M是月份,d是日数,1月和2月要按上一年的13月和14月来算,这时C和y均按上一年取值W←[C/4]–2*C+y+[y/4]+[13*(M+1)/5]+d-1w←wmod7输出结果星期几N开始输出“输入有误”结束输入年月日判断日期是否有效?Y高中信息技术必修2:算法与程序设计授课人:杨鹏参考程序界面如下:星期几计算问题界面程序需要使用到四个文本框,其中三个分别用于输入年、月、日,另一个用于输出计算结果,一个命令按钮,当按下按钮时开始计算,五个标签,分别说明文本框的作用。高中信息技术必修2:算法与程序设计授课人:杨鹏各控件属性设置参考如下:控件属性属性值说明Form1Caption星期几问题显示程序的功能Command1Caption计算说明命令按钮的作用Lable1Caption年说明文本框text1的作用Lable2Caption月说明文本框text2的作用Lable3Caption日说明文本框text3的作用Lable4Caption输入日期提示文本框的作用Lable5Caption结果说明文本框text4的作用Text1text空串输入“年”Text2text空串输入“月”Text3text空串输入“日”Text4text空串输出结果高中信息技术必修2:算法与程序设计授课人:杨鹏参考程序代码如下:PublicFunctionleap(yAsInteger)AsInteger‘判断是否为闰年函数IfyMod100=0Then‘是返回1,不是返回0IfyMod400=0Thenleap=1Elseleap=0‘函数说明见书4.4.2节ElseIfyMod4=0Thenleap=1Elseleap=0EndIfEndFunction高中信息技术必修2:算法与程序设计授课人:杨鹏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=31)Thenok=1If(month=4Ormonth=6Ormonth=9Ormonth=11)And(day=1Orday=30)Thenok=1Ifleap(year)=1Andmonth=2And(day=1Andday=29)Thenok=1Ifleap(year)=0Andmonth=2And(day=1Andday=28)Thenok=1Ifok=0ThenText4.Text=输入日期有错误高中信息技术必修2:算法与程序设计授课人:杨鹏ElseIfmonth=1Ormonth=2Thenyear=year-1month=month+12EndIfc=year\100y=yearMod100m=monthd=dayw=Int(c/4)-2*c+y+Int(y/4)+Int(13*(m+1)/5)+d–1‘蔡勒公式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高中信息技术必修2:算法与程序设计授课人:杨鹏PrivateSubText1_Click()Text1.Text=Text2.Text=Text3.Text=“利用WeekdayName函数可将值转换成星期形式:值1234567返回值星期日星期一星期二星期三星期四星期五星期六授课人:杨鹏精品课件!授课人:杨鹏精品课件!高中信息技术必修2:算法与程序设计授课人:杨鹏程序运行结果参考如下:星期计算问题测试数据表测试数据运行结果第一组1905年1月1日星期日第二组1988年8月8日星期一第三组2005年5月1日星期日第四组2005年1月54日输入有误第五组20
本文标题:第24课 计算圆周率的近似值
链接地址:https://www.777doc.com/doc-3225267 .html