第24课 计算圆周率的近似值
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1 a2 3
,第3项为
授课人:杨鹏
2.算法流程图:
变量n: 输入计算的项数 变量pi: 计算的结果 变量an: 第n项的值
高中信息技术必修2:算法与程序设计
授课人:杨鹏
3.程序界面设计:
高中信息技术必修2:算法与程序设计
授课人:杨鹏
控件属性值的设置参考如下表:
对象名 Form1 Text2 属性名 Caption 属性值
‘判断是否为闰年函数 ‘是返回1,不是返回0 ‘函数说明见书4.4.2节
授课人:杨鹏
高中信息技术必修2:算法与程序设计
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
高中信息技术必修2:算法与程序设计
Private Sub Command1_Click() Dim 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
授课人:杨鹏
实践活动
用级数公式 , 计算圆周率π 的近似值。
高中信息技术必修2:算法与程序设计
授课人:杨鹏
高中信息技术必修2:算法与程序设计
1.算法分析 按照级数公式, S 项为
2
由若干项 求和得到,第1
a1 1
,第2项为
1 2 ,第4项为 a 1 2 3 , 分析可 a3 4 3 5 7 3 5 n 1 得第n项为an与前一项an-1的关系是 an an 1 。 2n 1
授课人:杨鹏
问题提出
高中信息技术必修2:算法与程序设计
圆周率π =3.1415926……有无穷多位,历史
上 有很多科学家计算过这个数,古希腊学者阿基 米德、我国杰出的数学家和天文学家祖冲之等,都 提出许多求解的方法。 公元前3世纪,古希腊学者阿基米德用圆内接 或外切正多边形来近似代替圆,得到近似圆周率。 到了公元5世纪,我国杰出的数学家和天文学家祖 冲之在刘徽“割圆术”的基础上,使用更加精密的 方法,精确到小数点后七位,求出结果在 3.1415926~3.1415927间,这个的圆周率,在当时 是非常了不起的成就。直到16世纪,才由中亚人计 算出精确度为小数16位。随着计算机的出现,π 的 计算取得了新的突破。利用计算机技术将π 值计算 到小数点后20多亿位,甚至到上千亿位。
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,
W ← [C/4] – 2*C + y + [y/4] + [13 * (M+1) / 5] + d - 1
输出“输入有 误”
w←w mod 7
输出结果星期几
结束
授课人:杨鹏
参考程序界面如下:
高中信息技术必修2:算法与程序设计
星期几计算问题界面
程序需要使用到四个文本框,其中三个分别用于输入年、月、日,另一个用于 输出计算结果,一个命令按钮,当按下按钮时开始计算,五个标签,分别说明 文本框的作用。
授课人:杨鹏
高中信息技术必修2:算法与程序设计
5.运行调试程序;
授课人:杨鹏
课堂练习
1.使用蒙特卡洛法求π的近似值。 利用求单位正方形与内接圆 面积的比例关系来求得π的近似 值 。单位圆的1/4面积是一个扇 形,它是边长为1单位正方形的 一部分。 如果能求出扇形面积 s1在正方形面积s中占的比例 k=s1/s,它的值也等于π/4,从 而就计算得到π的值。 怎样求出扇形面积在正方形 面积中占的比例k呢?蒙特卡洛 法是在正方形中随机投入很多点, 使所投的点落在正方形中每一个 位置的机会相等。有些点将落在 扇形内,而另一些点将会落在扇 形外,落在扇形内的点数m与所 投点的总数n之间比m/n即为k的 近似值。
Image1
说明文本框Text1的作 Caption 输入项数n: 用 说明文本框Text2的作 计算 π 的近似值 Caption 用
Picture pi.jpg
显示图片pi.jpg(级数公式)
授课人:杨鹏
4.分析算法流程,编写代码
高中信息技术必修2:算法与程序设计
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) '计算第n项的值 Pi = Pi + an '进行累加 Next Text2.Text = Str(Pi * 2) End Sub
参考程序代码如下:
高中信息技术必修2:算法与程序设计
Public Function leap(y As Integer) As Integer If y Mod 100 = 0 Then If y Mod 400 = 0 Then leap = 1 Else leap = 0 Else If y Mod 4 = 0 Then leap = 1 Else leap = 0 End If End Function
属性值 星期几问题 计算 年 月 日 输入日期 结果 空串 空串 空串 空串
说明
显示程序的功能 说明命令按钮的作用 说明文本框text1的作用 说明文本框text2的作用 说明文本框text3的作用 提示文本框的作用 说明文本框text4的作用 输入“年” 输入“月” 输入“日” 输出结果
授课人:杨鹏
计算π的近似值
高中信息技术必修2:算法与程序设计
说明
说明程序的功能 输出计算的结果(π 的近似值) 输入各个电阻的阻值 (每次输入一个) 说明命令按钮的作用
Text
BackColor
Text1
Command 1 Label1
Text
BackColor
空串 蓝色 空串 黄色
计算
Caption
Label2
‘判断输入的日期是否是有效的日期,根据平年、闰年,不同月份的不同情况来判断
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 <= 31) Then ok = 1 If (month = 4 Or month = 6 Or month = 9 Or month = 11) And (day >= 1 Or day <= 30) Then ok = 1 If leap(year) = 1 And month = 2 And (day >= 1 And day <= 29) Then ok = 1 If leap(year) = 0 And month = 2 And (day >= 1 And day <= 28) Then ok = 1 If ok = 0 Then Text4.Text = "输入日期有错误"
高中信息技术必修2:算法与程序设计
1.用迭代法
求π 的近似值。 2.用蒙特卡洛法求π 的值。
3.设计一个算法计算1900 年1月1日之后的任何一 天是星期几?用VB程序 实现这一算法。
授课人:杨鹏
复习引入
高中信息技术必修2:算法与程序设计
解析算法基本思想: 用解析的方法找出表示问题的前提条件 与所求结果之间关系的数学表达式,并通过 表达式的计算来实现问题求解。 在设计解析算法时,必须注意保证计算 过程描述的正确性。
除以7的余数为4,所以推算是星期 四,与事实一致。为方便口算,上式中 的[13 * (M+1) / 5]也往往写成[26 * (M+1) / 10]。
授课人:杨鹏
算法流程框图下图所示:
开始 输入年月 日
N
高中信息技术必修2:算法与程序设计
判断日期是否有效?
Y
计算c, y, m,d。 C是世纪数减一,y是年份 后两位,M是月份,d是日数,1月和2月要按 上一年的13月和 14月来算,这时C和y均按上 一年取值
授课人:杨鹏
Biblioteka Baidu
星期计算问题
高中信息技术必修2:算法与程序设计
平时在日常生活中遇到这样的问题,忘记了几月几日是星期几,一 般会采用这样的方法,从一个已知的某天开始推算,先计算已知星期几 的这一天距要推算的那天共相差几天,然后将天数除以7取余数,最后 就可以推算出星期几了。 已知公元元年1月1日是星期一,再计算需推算的日子离元年1月1日 相距多少天(W),再用天数W除以7的余数加上1就是星期几了,余0 就是星期一,余1就是星期二.……,但是在计算天数时会发现由于中间 会经历平年(365天)、闰年(366天),每年的不同月份天数也不相 同,这样计算量是很大的,计算也十分困难。 德国数学家克里斯蒂安•蔡勒(Christian Zeller,1822-1899)在 1886年推导出了一个解决此问题的著名的蔡勒公式,
授课人:杨鹏
高中信息技术必修2:算法与程序设计
1.用迭代法 求π的近似值 。 算法流程图 程序代码设计 示例程序
授课人:杨鹏
高中信息技术必修2:算法与程序设计
2.用蒙特卡洛法求π的近似值。 算法流程图 程序代码设计 示例程序
授课人:杨鹏
高中信息技术必修2:算法与程序设计
3.设计一个算法计算1900年1月1日之后的任何 一天是星期几?用VB程序实现这一算法。 算法流程图 界面设计 程序代码 示例程序
授课人:杨鹏
高中信息技术必修2:算法与程序设计
古今中外的数学家们计算π 的近似值主要有三类方法: 1.利用“正多边形逼近”的方法。 2.使用迭代法。可利用下列式子计算π 。
3.使用蒙特卡洛法(Monte-Carlo method)。蒙特卡 洛法是使用随机模拟实验结果进行统计来求得π 的 近似值的方法。
高中信息技术必修2:算法与程序设计
蒙特卡洛(Monte
Carlo)方法,或称计算 机随机模拟方法,是一 种基于“随机数”的计 算方法。这一方法源于 美国在第二次世界大战 时研制原子弹的“曼哈 顿计划”。该计划的主 持人之一、数学家冯· 诺 伊曼用驰名世界的赌 城—摩纳哥的Monte Carlo—来命名这种方法, 为它蒙上了一层神秘色 彩。
授课人:杨鹏
高中信息技术必修2:算法与程序设计
使用随机函数Rnd随机产生两个小数x、y,可构成一个坐 标点(x,y),判断是否落在扇形内的充要条件是x2+y2<=1, 总计投放n次,根据条件判断统计得到落在扇形内的次数m, 再根据两者的比例m/n,求得π=4*m/n的近似值。
授课人:杨鹏
1)参考程序代码:
授课人:杨鹏
各控件属性设置参考如下:
控件
Form1 Command1 Lable1 Lable2 Lable3 Lable4 Lable5 Text1 Text2 Text3 Text4
高中信息技术必修2:算法与程序设计
属性 Caption Caption Caption Caption Caption Caption Caption text text text text