当前位置: 首页 > article >正文

蒙特卡洛方法试验的一般过程和经典例子

前言

蒙特卡洛方法是基于概率统计为基础的近似解求解方法,它是通过大量试验来使近似解逼近准确解,而大量的试验又是基于大数极限理论,试验越多,其解越精确,误差也就越小。下面分别讲述蒙特卡洛试验的解题步骤、实际使用中需要的注意点,最后给出一个最经典的例子(求 π \pi π 值)作为本文的结束点。

蒙特卡洛方法(或试验)解题的步骤

  1. 人为构造或描述问题的概率过程
  2. 从已知概率分布中进行抽样(随机变量抽样)
  3. 求各统计量的估计
  4. 使用统计量的估计最终求近似解

在实际使用中需要的注意点

  • 要列出所求问题相关的变量
  • 把变量进行分类:随机变量和非随机变量,非随机变量又分为自变量和因变量
  • 随机变量涉及了概率分布
  • 通过随机变量和非随机变量构造所要求解的统计量
  • 通过随机变量的抽样求统计量的估计值
  • 使用估计值来替代统计量,从而求得问题的近似解
  • 说明:蒙特卡洛方法中,必有随机变量和概率

实例(最经典pi值求解过程-浦丰氏问题)

在十九世纪后期,曾有很多人以任意投掷一根针到地面上,将针与地面上两条平行线相交的频率作为与该
两条平行线相交概率的近似值,然后根据这一概率的理论值求出圆周率 pi 的近似值。

说明:这里的相交不是延长线的相交,而是针与平行线接触,有交点。

首先我们来正确的描述和模拟这个问题

这里我借用了文献上的图片:

变量说明: 2 a 2a 2a 表示两条平行线的距离,图中虚线是在两平行线的中间,即 a a a 的位置, 2 l 2l 2l 是这根针的长度, l l l 是这个针的半长, x x x 表示针中心位置到平行线的 y 轴坐标值, θ \theta θ 是针与平行线交叉角度

从图中所示,我们可以知道,平面上针的位置是由针中心的坐标位置 和 针与平行线的夹角 θ \theta θ 决定的。任意投针,意味着 x x x 和  θ \theta θ 都是任意的(它们是随机变量)。 θ \theta θ的范围为 [ 0 , π ] \left [ 0, \pi \right ] [0,π] x x x 的范围为 [ 0 , a ] \left [ 0, a \right ] [0,a]

此时相交的条件为:

x ≤ l sin ⁡ θ , 0 ≤ x ≤ a , 0 ≤ θ ≤ π x\le l\sin \theta,0\le x\le a,0\le \theta \le \pi xlsinθ,0xa,0θπ

随机变量 x x x 和  θ \theta θ 取值的随意性,说明它们是随机数,是在范围内的随机数,所以它们的分布密度分别为:

f 1 ( x ) = { 1 a , 0 ≤ x ≤ a 0 , 其他 , f 2 ( θ ) = { 1 π , 0 ≤ θ ≤ π 0 , 其他 . \begin{align} f_1\left ( x \right ) & = \begin{cases} \frac{1}{a},0\le x\le a \\ 0,其他, \end{cases} \notag\\ f_2\left ( \theta \right ) & = \begin{cases} \frac{1}{\pi },0\le \theta\le \pi \\ 0,其他. \end{cases} \notag \end{align} f1(x)f2(θ)={a1,0xa0,其他,={π1,0θπ0,其他.

细心的读者可能已经发现, x x x 和  θ \theta θ 是相互独立的,并且都是服从各自区间上的均匀分布的随机变量。所以这二维随机变量的概率密度为

f ( x , θ ) = f 1 ( x ) f 2 ( θ ) f\left ( x,\theta \right ) =f_1\left ( x \right ) f_2\left ( \theta \right ) f(x,θ)=f1(x)f2(θ)

最后定义一个综合随机变量(用于计算概率的)
s ( x i , θ i ) = { 1 , x i ≤ l sin ⁡ θ i 0 , 其他 s\left ( x_i,\theta_i \right ) =\begin{cases} 1,x_i\le l\sin \theta_i \\ 0,其他 \end{cases} s(xi,θi)={1,xilsinθi0,其他

意思是相交则为 1,否则为 0

开始抽样和求估计值

如果投掷 N 次,那么相交的频率为

s ˉ N = 1 N ∑ i = 1 N s ( x i , θ i ) \bar{s}_N=\frac{1}{N}\sum_{i=1}^{N} s\left ( x_i,\theta_i \right ) sˉN=N1i=1Ns(xi,θi)

是相交概率的估计值。

而根据二维随机变量的概率计算公式来求相交概率是

p = ∬ s ( x , θ ) f ( x , θ ) d x d θ = ∫ 0 π 1 π d θ ∫ 0 l sin ⁡ θ 1 a d x = 2 l a π p=\iint s\left ( x,\theta \right ) f\left ( x,\theta \right ) dxd\theta =\int_{0}^{\pi } \frac{1}{\pi} d\theta\int_{0}^{l\sin \theta }\frac{1}{a}dx=\frac{2l}{a\pi} p=s(x,θ)f(x,θ)dxdθ=0ππ1dθ0lsinθa1dx=2l

通过估计值求解的近似值

于是就有

π = 2 l a p ≈ 2 l a s ˉ N \pi=\frac{2l}{ap} \approx \frac{2l}{a\bar{s}_N } π=ap2lasˉN2l

计算机模拟计算的结果

结论

蒙特卡洛试验的本质是用概率过程来描述问题,并且使得概率(或某个统计量)是这个解的某个参数,最后通过概率或统计量的估计值来计算这个解的近似值。最好的方式就是概率或统计量本身就是解的值。根据上述过程,我们注意到:用正确的概率模型来描述问题非常重要(就是用概率方式来描述),其次,分清随机变量其及服从的分布也是至关重要的一步,基本的关键点就是这些了。


http://www.kler.cn/a/461290.html

相关文章:

  • 【可实战】需求分析-测试计划↓-测试设计-测试执行-测试总结↓(包含测试计划、测试总结模板,以公司要求为准)
  • STM32 拓展 RTC(实时时钟)
  • overleaf写学术论文常用语法+注意事项+审阅修订
  • Cause: java.sql.SQLException: sql injection violation, comment not allow异常问题处理
  • Linux Shell 脚本编程基础知识篇—awk的条件判断(3)
  • 【C语言的小角落】--- 深度理解取余/取模运算
  • Qanything 2.0源码解析系列6 PDF解析逻辑
  • 计算机网络•自顶向下方法:IP编址
  • 【每日学点鸿蒙知识】监听输入框删除键、进入页面前网络请求、同层渲染、GridCol左对齐、自定义弹窗禁止手势
  • 语音合成芯片:让净水机更智能、更便捷
  • 练习题:29
  • naive ui 使用地址记录
  • 人工智能知识分享第二天-机器学习之KNN算法
  • 2024终章---愿昭昭如愿,愿岁岁安澜
  • 大模型的实践应用34-大模型LLama3的预训练的全流程介绍,包括:数据收集处理、模型架构与初始化,训练策略等
  • STM32G0B1 can Error_Handler 解决方法
  • tcpdump指南(1)
  • KMP 2024 年总结,Kotlin 崛起的一年
  • 【题解】—— LeetCode一周小结52
  • Node.js详细安装教程
  • CPT203 Software Engineering 软件工程 Pt.6 软件管理(中英双语)
  • LabVIEW冷却风机性能测试系统
  • LeetCode3045.统计前后缀下标对II
  • 003:如何理解 CNN 中的 RGB 图像和通道?
  • C++:单例模式
  • DevOps与自动化运维的深度结合实践