随机投点——用蒙特卡洛方法求π的近似值

展现独立思想 博采百家众长

汇集涓涓细流 共向辽阔海洋

在实际生活中,有大量问题难以用数学模型来描述,或者虽然可以建立数学模型,但其中存在很多随机因素,不易用解析法求解,这时,可以借助“计算机模拟”方法来解决。

计算机模拟是建立一个试验模型,在计算机上进行模拟试验,对真实现象进行“仿真”,获得结果。

蒙特卡罗方法是用计算机模拟随机事件、以概率论和统计方法为基础,通过不断产生随机数并求出概率来解决问题。

比如用程序模拟连续抛硬币,统计正面朝上的次数并计算其概率,就是蒙特卡洛方法的一种运用。

利用蒙特卡洛方法进行模拟,首先要建立模拟模型,其次要考虑如何模拟随机现象。在这个过程中,需要对客观事物有深刻认识和准确理解,对真实问题进行抽象和量化,转化成模拟模型,通过算法设计和编程,让计算机自动运算,得出结论。因此,可以训练学生抽象与界定问题的能力,量化与建模能力、算法设计与编程能力,以及对运算结果进行分析的能力等。

教学案例:用“随机投点”的方法求π的近似值。

设边长为1的正方形内有1/4内切圆

需要不断地向这个正方形内随机投点,统计落入圆内的点数。

怎样让计算机进行“随机投点”,并且自动判断投点是否落在圆内呢?

可以利用不断产生随机数的方法来模拟“投点”。每一次“投点”随机产生一个x值和一个y值,x、y的取值范围都限于[0, 1]。

将x、y值代入圆的标准方程

x2+ y2= 1

可得到坐标系上的一个点f(x,y),若f(x,y)

设总落点数为m,其中落在圆内的点数为n,则两者之比n/m可以近似地表示 1/4 圆面积,由于此圆的半径为1,因此可得到圆周率的近似值为π≈ 4*n/m。

n/m是投点落入圆内的概率。“多点成面”现象在生活中是真实存在的,比如下雨时,如果雨点足够多,地面就会湿成一片。

流程图和VB代码如下。由于需要不断计算表达式x2+ y2,可以将其设为自定义函数f(x,y)。

欢迎关注白珍名师工作室

  • 发表于:
  • 原文链接:https://kuaibao.qq.com/s/20180926G0CL3600?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券