左图:Domenico Fetti 于 1620 年创作的 Archimedes Thoughtful(又名:Portrait of a Scholar)。图片属于公有领域,通过 Wikimedia Commons 共享。右图:Leonardo Fibonacci 的肖像。图片属于公有领域,通过 Wikimedia Commons 共享。
蒙特卡罗方法是一种依靠随机抽样来估计数值结果的计算技术,特别适用于包含大量变量的问题。对于这种问题,可以利用内在的随机性来解决确定性问题。想象这样一个场景,你正在为一场聚会计算需要订购多少个披萨。这里的确定性问题是计算每个人要吃多少片披萨。与其询问每个人要吃多少片披萨,然后求和得出结果(这对一个大型聚会来说可能相当麻烦),不如随机挑选几个朋友,询问他们要吃多少片披萨,然后求平均值来解决问题。这有点像蒙特卡罗方法,即使用随机样本来估计一个值。蒙特卡洛法被广泛用于模拟各种复杂现象,如流体、统计力学、生物化学、密码学、社会学和心理学。
这种思维可以扩展到现在流行的一种有趣的估计圆周率的方法。这种方法是在一个正方形内随机放置一些点,然后计算有多少点位于正方形内切圆内。圆内的点数与总点数之比可以用来近似计算圆周率。由于内嵌在边长为 2r 的正方形中的圆的面积为 πr,而正方形的面积为 (2r)= 4r,因此它们的面积之比为 π/4。也就是说一个点落在圆内的概率是 π/4。因此,如果将圆内点数与总点数之比乘以 4,就可以得到 π 的估计值。这是因为随着点数的增加,比率会趋近于实际值 π/4。
现在,我们来举例说明。一些粒子被随机释放到一个正方形区域并保持静止。对位于正方形内切圆区域内的粒子数量进行追踪,以获取圆周率的实时估计值。可以看到,随着点数的增加,估计值(蓝色实线)逐渐接近真实值(绿色虚线)。值得注意的是,估计值的度并不随点的数量呈线性变化。蒙特卡罗近似的统计误差通常与 1/sqrt(n) 成正比。这意味着,要将误差减少 10 倍,通常需要将点数增加 100 倍。
在随机放置的点数不断增加的情况下,圆周率的实时估计值(蓝色实线)与真实值(绿色虚线)的对比。接下来,我们使用 COMSOL Multiphysics? 中的 App 开发器创建了一个基于仿真模型的仿真 App。在这个 App 中,我们可以使用一个滑块改变点的数量,并获得圆周率在不同点数下的估计值及其与真实值的误差。该 App 还将随机放置的点可视化,并通过颜色协调来识别位于圆内的点。
免责声明: 凡注明来源本网的所有作品,均为本网合法拥有版权或有权使用的作品,欢迎转载,注明出处。非本网作品均来自互联网,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。