首先看看
上面这个问题。
这个问题是我
在一个
MATLAB 交
流群里碰到的
提问,计算阴
影部分面积。
什么是蒙
特卡罗在这里
我就不多做介绍了,感兴趣的朋友可以自己去查阅相关资料,相信可以得到全面的解释,在这里我只介
绍如果用蒙特卡罗方法来计算上图中阴影部分的面积,注意这只是蒙特卡罗方法的一个应用而已。
记得第一次接触到蒙特卡罗是在一次数学建模培训中。当时我们老师给我们讲了一个故事,故事的全
部我已经记不清了,大概内容是:
一个古人要求一个图形的面积,他把图形画在一块方形布上,然后找来一袋豆子,然后将所有豆子洒
在布上,落在图形内豆子的重量比上那块布上所有豆子的重量再乘以布的面积就是他所要求的图形的面
积。
这确实是一个求面积的好方法,这是我听到这个故事后的第一反应。从此我就记住了这个方法,记得
很深刻。所以当群里有人问如何求上面这个图形的面积的时候我马上就回想起用蒙特卡罗方法来计算。
仔细思考后,以我的知识面我能找到两种编程思路来计算这个面积:
方法一:将整个坐标轴看成一个边长为 12 的正方形,然后均匀的这个正方形分成 N(N 的大小取决于
划分的步长)个点,然后找出 N 个点中有多少个点是属于阴影部分中,假设这个值为 k,则阴影部分的
面积为:k/N*12^2
方法二:将整个坐标轴看成一个边长为 12 的正方形,然后在(-6,6)中随机出 N(N 越大越好,至少
超过 1000)个点,然后找出这 N 个点中有多少个点在阴影区域内,假设这个值为 k,则阴影部分的面
积为:k/N*12^2。然后重复这个过程 100 次,求出 100 次面积计算结果的均值,这个均值为阴影部
分面积。
评论3