- 1、本文档共28页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第24课 计算圆周率π的近似值 1.用迭代法 求π的近似值。 2.用蒙特卡洛法求π的值。 3.设计一个算法计算1900年1月1日之后的任何一天是星期几?用VB程序实现这一算法。 复习引入 解析算法基本思想: 用解析的方法找出表示问题的前提条件与所求结果之间关系的数学表达式,并通过表达式的计算来实现问题求解。??? 在设计解析算法时,必须注意保证计算过程描述的正确性。 问题提出 圆周率π=3.1415926……有无穷多位,历史上 有很多科学家计算过这个数,古希腊学者阿基米德、我国杰出的数学家和天文学家祖冲之等,都提出许多求解的方法。??? 公元前3世纪,古希腊学者阿基米德用圆内接或外切正多边形来近似代替圆,得到近似圆周率。到了公元5世纪,我国杰出的数学家和天文学家祖冲之在刘徽“割圆术”的基础上,使用更加精密的方法,精确到小数点后七位,求出结果在3.1415926~3.1415927间,这个的圆周率,在当时是非常了不起的成就。直到16世纪,才由中亚人计算出精确度为小数16位。随着计算机的出现,π的计算取得了新的突破。利用计算机技术将π值计算到小数点后20多亿位,甚至到上千亿位。 古今中外的数学家们计算π的近似值主要有三类方法:??? 1.利用“正多边形逼近”的方法。??? 2.使用迭代法。可利用下列式子计算π。??????? ??????? ??? 3.使用蒙特卡洛法(Monte-Carlo method)。蒙特卡洛法是使用随机模拟实验结果进行统计来求得π的近似值的方法。 实践活动 用级数公式 , 计算圆周率π的近似值。 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)?????? 计算第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即为k的近似值。 1)参考程序代码:??? 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 判断是否在扇形内
文档评论(0)