课 计算圆周率π的近似值.ppt

上传人:小飞机 文档编号:6345291 上传时间:2023-10-19 格式:PPT 页数:28 大小:280KB
返回 下载 相关 举报
课 计算圆周率π的近似值.ppt_第1页
第1页 / 共28页
课 计算圆周率π的近似值.ppt_第2页
第2页 / 共28页
课 计算圆周率π的近似值.ppt_第3页
第3页 / 共28页
课 计算圆周率π的近似值.ppt_第4页
第4页 / 共28页
课 计算圆周率π的近似值.ppt_第5页
第5页 / 共28页
点击查看更多>>
资源描述

《课 计算圆周率π的近似值.ppt》由会员分享,可在线阅读,更多相关《课 计算圆周率π的近似值.ppt(28页珍藏版)》请在三一办公上搜索。

1、第24课 计算圆周率的近似值,1.用迭代法 求的近似值。2.用蒙特卡洛法求的值。3.设计一个算法计算1900年1月1日之后的任何一天是星期几?用VB程序实现这一算法。,复习引入,解析算法基本思想:用解析的方法找出表示问题的前提条件与所求结果之间关系的数学表达式,并通过表达式的计算来实现问题求解。在设计解析算法时,必须注意保证计算过程描述的正确性。,问题提出,圆周率=3.1415926有无穷多位,历史上 有很多科学家计算过这个数,古希腊学者阿基米德、我国杰出的数学家和天文学家祖冲之等,都提出许多求解的方法。公元前3世纪,古希腊学者阿基米德用圆内接或外切正多边形来近似代替圆,得到近似圆周率。到了公

2、元5世纪,我国杰出的数学家和天文学家祖冲之在刘徽“割圆术”的基础上,使用更加精密的方法,精确到小数点后七位,求出结果在3.14159263.1415927间,这个的圆周率,在当时是非常了不起的成就。直到16世纪,才由中亚人计算出精确度为小数16位。随着计算机的出现,的计算取得了新的突破。利用计算机技术将值计算到小数点后20多亿位,甚至到上千亿位。,古今中外的数学家们计算的近似值主要有三类方法:1.利用“正多边形逼近”的方法。2.使用迭代法。可利用下列式子计算。3.使用蒙特卡洛法(Monte-Carlo method)。蒙特卡洛法是使用随机模拟实验结果进行统计来求得的近似值的方法。,实践活动,用

3、级数公式,计算圆周率的近似值。,1.算法分析 按照级数公式,由若干项 求和得到,第1项为,第2项为,第3项为,第4项为 分析可得第n项为an与前一项an-1的关系是。,2.算法流程图:,变量n:输入计算的项数变量pi:计算的结果变量an:第n项的值,3.程序界面设计:,控件属性值的设置参考如下表:,4.分析算法流程,编写代码,Private Sub Command1_Click()Dim Pi As Double,an As Double Dim m,n As Integer n=Val(Text1.Text)Pi=1 an=1 For m=2 To n an=an*(m-1)/(2*m-1)

4、计算第n项的值 Pi=Pi+an 进行累加Next Text2.Text=Str(Pi*2)End Sub,5.运行调试程序;,课堂练习,1.使用蒙特卡洛法求的近似值。利用求单位正方形与内接圆面积的比例关系来求得的近似值。单位圆的1/4面积是一个扇形,它是边长为1单位正方形的一部分。如果能求出扇形面积s1在正方形面积s中占的比例k=s1/s,它的值也等于/4,从而就计算得到的值。怎样求出扇形面积在正方形面积中占的比例k呢?蒙特卡洛法是在正方形中随机投入很多点,使所投的点落在正方形中每一个位置的机会相等。有些点将落在扇形内,而另一些点将会落在扇形外,落在扇形内的点数m与所投点的总数n之间比m/n

5、即为k的近似值。,蒙特卡洛(Monte Carlo)方法,或称计算机随机模拟方法,是一种基于“随机数”的计算方法。这一方法源于美国在第二次世界大战时研制原子弹的“曼哈顿计划”。该计划的主持人之一、数学家冯诺伊曼用驰名世界的赌城摩纳哥的Monte Carlo来命名这种方法,为它蒙上了一层神秘色彩。,使用随机函数Rnd随机产生两个小数x、y,可构成一个坐标点(x,y),判断是否落在扇形内的充要条件是x2+y2=1,总计投放n次,根据条件判断统计得到落在扇形内的次数m,再根据两者的比例m/n,求得=4*m/n的近似值。,1)参考程序代码:,Private Sub Command1_Click()Di

6、m Pi As Double,x As Double,y As Double Dim m As Long,n As Long Randomize Timer 随机数初始化 n=Val(Text1.Text)读入投放次数n If n=0 Then MsgBox 请输入投放次数n Exit Sub End If m=0 For I=1 To n x=Rnd()y=Rnd()If x 2+y 2=1 Then m=m+1 判断是否在扇形内 Next I Pi=4*m/n 计算出的近似值 Text2.Text=Str(Pi)End Sub,1.用迭代法 求的近似值。算法流程图 程序代码设计 示例程序,

7、2.用蒙特卡洛法求的近似值。算法流程图 程序代码设计 示例程序,3.设计一个算法计算1900年1月1日之后的任何一天是星期几?用VB程序实现这一算法。算法流程图 界面设计 程序代码 示例程序,星期计算问题,平时在日常生活中遇到这样的问题,忘记了几月几日是星期几,一般会采用这样的方法,从一个已知的某天开始推算,先计算已知星期几的这一天距要推算的那天共相差几天,然后将天数除以7取余数,最后就可以推算出星期几了。已知公元元年1月1日是星期一,再计算需推算的日子离元年1月1日相距多少天(W),再用天数W除以7的余数加上1就是星期几了,余0就是星期一,余1就是星期二.,但是在计算天数时会发现由于中间会经

8、历平年(365天)、闰年(366天),每年的不同月份天数也不相同,这样计算量是很大的,计算也十分困难。德国数学家克里斯蒂安蔡勒(Christian Zeller,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

9、*20+8+8/4+13*(13+1)/5+1-1=11,除以7的余数为4,所以推算是星期四,与事实一致。为方便口算,上式中的13*(M+1)/5也往往写成26*(M+1)/10。,算法流程框图下图所示:,参考程序界面如下:,星期几计算问题界面,程序需要使用到四个文本框,其中三个分别用于输入年、月、日,另一个用于输出计算结果,一个命令按钮,当按下按钮时开始计算,五个标签,分别说明文本框的作用。,各控件属性设置参考如下:,参考程序代码如下:,Public Function leap(y As Integer)As Integer 判断是否为闰年函数 If y Mod 100=0 Then 是返回

10、1,不是返回0If y Mod 400=0 Then leap=1 Else leap=0 函数说明见书4.4.2节ElseIf y Mod 4=0 Then leap=1 Else leap=0End IfEnd Function,Private Sub Command1_Click()Dim year as integer,month,day,w,c,y,m,d,ok As Integer year=Val(Text1.Text)month=Val(Text2.Text)day=Val(Text3.Text)ok=0判断输入的日期是否是有效的日期,根据平年、闰年,不同月份的不同情况来判断

11、If(month=1 Or month=3 Or month=5 Or month=7 Or month=8 Or month=10 Or month=12)And(day=1 And day=1 Or day=1 And day=1 And day=28)Then ok=1 If ok=0 Then Text4.Text=输入日期有错误,Else If month=1 Or month=2 Then year=year-1 month=month+12 End If c=year 100 y=year Mod 100 m=month d=day w=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)Mod 7+1 求除以7的余数,w加上700保证余数一定是整数 Text4.Text=WeekdayName(w)转换为星期形式 End IfEnd Sub,Private Sub Text1_Click()Text1.Text=Text2.Text=Text3.Text=“利用WeekdayName 函数可将值转换成星期形式:,程序运行结果参考如下:,星期计算问题测试数据表,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号