数学理论—— 蒙特卡洛近似

  • 1. 圆周率估算
    • 1.1 理论
    • 1.2 代码实现
  • 2. 近似积分
    • 2.1 一元积分(univariate)
    • 2.2 多元积分(multivariate)
  • 3 期望估计(Estimate of Expection)

1. 圆周率估算

1.1 理论

  • 边长为2的正方形的横坐标范围为[-1,1],纵坐标为[-1,1]。
  • 数据点(x,y)的横坐标从[-1,1]中均匀抽样得到,纵坐标从[-1,1]中均匀抽样得到,则数据点落在圆内的概率为:p=A2A1=π4p=\frac{A_2}{A_1}=\frac{\pi}{4}p=A1​A2​​=4π​
  • 计算误差为:o(1n)o(\frac{1}{\sqrt{n}})o(n​1​)

    则计算圆周率的流程为:
  1. 设定一个大数n,计数器m。
  2. for i = 1 to n:x←[−1,1]y←[−1,1]m←m+1(当x2+y2≤1时)x\gets[-1,1]\\y\gets[-1,1]\\ \\m\gets m+1(当x^2+y^2≤1时)x←[−1,1]y←[−1,1]m←m+1(当x2+y2≤1时)
  3. π←4mn\pi \gets \frac{4m}{n}π←n4m​

1.2 代码实现

import random
n = 10000000
m = 0
for i in range(n):x = random.uniform(-1,1)y = random.uniform(-1,1)if x**2 + y**2 <= 1:m += 1
print(4*m/n)
3.1415656

2. 近似积分

2.1 一元积分(univariate)

  • 计算如下积分:I=∫abf(x)dxI=\int_a^b{f(x)}d_xI=∫ab​f(x)dx​
  1. 从[a,b]中进行n次抽样,得到:x1,x2,...,xnx_1,x_2,...,x_nx1​,x2​,...,xn​
  2. 计算:Qn=(b−a)⋅1n⋅∑i=1nf(xi)Q_n=(b-a)\cdot \frac{1}{n}\cdot \sum_{i=1}^n f(x_i)Qn​=(b−a)⋅n1​⋅i=1∑n​f(xi​)
  3. 可用Qn去近似积分I,因为大数定律可以保证其误差反比于:n\sqrt nn​
    代码为:
import random
def f(x):return x**2
a = -1
b = 1
n = 100000000
sum_num = 0
for i in range(n):x = random.uniform(a,b)sum_num += f(x)
Q = (b-a)* sum_num / n
print(Q)

结果为:

0.6666073503023225

2.2 多元积分(multivariate)

求取积分:I=∫Ωf(X)dXI=\int_{\Omega}f(X)d_XI=∫Ω​f(X)dX​

  1. 从Ω\OmegaΩ中进行n次抽样,得到:X1,X2,...,XnX_1,X_2,...,X_nX1​,X2​,...,Xn​
  2. 计算:V=∫ΩdXV=\int_\Omega d_XV=∫Ω​dX​
  3. 计算:Qn=V⋅1n⋅∑i=1nf(Xi)Q_n=V\cdot \frac{1}{n}\cdot \sum_{i=1}^n f(X_i)Qn​=V⋅n1​⋅i=1∑n​f(Xi​)
  4. 可用Qn去近似积分I,因为大数定律可以保证其误差反比于:n\sqrt nn​
    求取下式积分:f(x,y)={1,x2+y2≤10,otherwiseΩ=[−1,1]⋅[−1,1]I=∫Ωf(x,y)dxdyf(x,y)=\left\{ \begin{aligned} 1&, x^2+y^2≤1 \\ 0&,otherwise \end{aligned} \right.\\ \Omega=[-1,1]\cdot[-1,1]\\I=\int_{\Omega}f(x,y)d_xd_yf(x,y)={10​,x2+y2≤1,otherwise​Ω=[−1,1]⋅[−1,1]I=∫Ω​f(x,y)dx​dy​
    代码为:
def f(x,y):if x**2 + y**2 <= 1:return 1return 0
a1 = -1
a2 = -1
b1 = 1
b2 = 1
n = 10000000
sum_num = 0
for i in range(n):x = random.uniform(a1,b1)y = random.uniform(a2,b2)sum_num += f(x,y)
V = 2*2
Q = V*sum_num / n
print(Q)
3.1415416

3 期望估计(Estimate of Expection)

  • X为d维随机变量
  • P(X)为X的概率密度函数:P(X)←probabilitydensityfunctionP(X)\gets probability\quad density\quad functionP(X)←probabilitydensityfunction
  • ∫RP(X)dX=1\int_RP(X)d_X=1∫R​P(X)dX​=1
    计算f(X)的期望:
  1. 依据P(X)进行随机抽样,得到:X1,X2,...,XnX_1,X_2,...,X_nX1​,X2​,...,Xn​
  2. 计算:Qn=1n⋅∑i=1nf(Xi)Q_n=\frac{1}{n}\cdot \sum_{i=1}^n f(X_i)Qn​=n1​⋅i=1∑n​f(Xi​)
  3. Qn≈EX∼P[f(X)]Q_n\approx E_{X\sim P}[f(X)]Qn​≈EX∼P​[f(X)]

代码为:

n = 10000000
sum_num = 0
for i in range(n):x = random.normalvariate(2,1)sum_num += x
print(sum_num/n)
2.000336379227587

本文部分内容为参考此视频。

by CyrusMay 2022 04 04

生命是华丽错觉
时间是贼偷走一切
————五月天(如烟)————

数学理论—— 蒙特卡洛近似相关推荐

  1. 计算机科学数学理论浅谈 (转载)

    [来源:TSTC文档中心] 计算机自从其诞生之日起,它的主要任务就是进行各种各样的科学计算.文档处理,数据处理,图像处理,硬件设计, 软件设计等等,都可以抽象为两大类:数值计算与非数值计算.作为研究计 ...

  2. 【信息科学技术与创新】数据压缩的理论方法与现实意义 信息论 压缩编码 通信的数学理论 Huffman编码 LZ算法 虚幻引擎与数据压缩

    数据压缩的理论方法与现实意义 摘要 首先通过信息论引出数据压缩编码的理论方法 接着结合目前技术发展分析压缩编码的现实意义 最后总结思考未来通信与存储的压缩方法 Navigator 数据压缩的理论方法与 ...

  3. 计算机科学数学理论浅谈

    计算科学数学理论浅谈 以前,总是对于数学的学习嗤之以鼻,认为没有很大的实用性,这也是为何后来跨专业考研的一个重要动机,但是随着后续学习的深入,逐渐体 会到了数学在现实工作中的分量,而这种对思考的能力的 ...

  4. 菲尔兹奖数学家丘成桐:人工智能中的数学理论尚无很大突破

    来源:机器人 10月17日,在2019中关村论坛上,菲尔兹奖首位华人获得者.美国国家科学院院士.哈佛大学教授丘成桐发表主旨演讲.他呼吁国家应重视基础科学和数学的发展.一个国家的强大和长治久安,离不开强 ...

  5. 深入理解张正友相机标定法:数学理论详细推导

    最近在项目中需要在激光雷达(Lidar)和相机(Camera)之间进行标定,即需要标定出相机内参和外参,使用的标定方法是张正友标定法,这里给出其数学理论推导过程. 论文原文:<A Flexibl ...

  6. 从文本分类问题中的特征词选择算法追踪如何将数学知识,数学理论迁移到实际工程中去...

    博文转载请注明作者和出处(作者:finallyliuyu :出处博客园) 附:<卡方特征词选择算法> <DF特征词选择算法> 一.数学背景 将数学知识.数学理论以及数学思想迁移 ...

  7. 计算数学与数学理论专栏【简介】

    计算数学与数学理论专栏 (简介) 文章目录 计算数学与数学理论专栏 (简介) 一.离散(discrete)与计算数学 二.现代数学理论 2.0 概述与杂论 2.1 代数 2.2 分析 2.3 几何 2 ...

  8. 蒙特卡洛算法_MCMC、蒙特卡洛近似和Metropolis算法简介

    MCMC 是Markov Chain Monte Carlo 的简称,但在传统模拟中有一个很重要的假设是样本是独立的(independent samples),这一点在贝叶斯统计尤其是高纬度的模型中很 ...

  9. 一文读懂APS系统的核心算法和数学理论

    APS系统拥有以数学模型为基础的最强算法,可以满足更高难度.更广泛的需求.但它不是可以直观理解的方法,真正的难点不在于把算法变成软件,而是在于寻找和证明这个算法.因此,各APS公司对其核心算法和数学理 ...

最新文章

  1. 《javascript语言精粹》读书笔记(一)
  2. 项目管理概述学习记录(二)
  3. 【NLP】哈工大|NLP数据增强方法?我有15种
  4. oracle 建表字段设置,Oracle创建表、删除表、修改表(添加字段、修改字段、删除字段)语句总结...
  5. Unity 日志管理系统
  6. 线性表——顺序表——时间复杂度计算
  7. Javascript判断是否是ipad的浏览器
  8. layui设置请求加载旋转等待
  9. 奖励补贴有点多!武汉市大健康和生物技术产业发展奖励措施解读
  10. 物流服务器维护,物流企业网络维护与管理 Email邮件服务器的基本配置 任务3-3 创建电子邮件服务器.doc...
  11. Maven传递依赖的时候,同名包不同版本的包均会下载,但是编译的时候,只会加载一个高版本的。
  12. 【软件推荐】使用手机和平板作电脑副屏扩展
  13. 关于Flask框架中启动Scrapy爬虫框架时的几种问题的解决
  14. RS485的EMC防雷保护方案
  15. 使用Python自动发送微信信息【附自动恋爱系统】
  16. 智慧工地施工如何应用室内定位uwb技术
  17. 为什么图片img下方会出现一行空白?
  18. 2021重庆江北中学高考成绩查询,2020年重庆部分中学高考成绩单,看看有你的母校吗?...
  19. OpenedFilesView
  20. 【华人学者风采】刘维民 中国科学院

热门文章

  1. 扒一扒我遇见过哪些厌恶的技术面试官
  2. 1 分钟教会你用 Spring Boot 发邮件
  3. itextpdf api帮助文档_我开源了一个小工具,可以帮你轻松生成 SpringBoot API 文档...
  4. 移动端布局三种视口_移动端适配之视口和meta标签
  5. Python之ffmpeg-python:ffmpeg-python库的简介、安装、使用方法之详细攻略
  6. TF之AE:AE实现TF自带数据集数字真实值对比AE先encoder后decoder预测数字的精确对比—daidingdaiding
  7. 成功解决AttributeError: module tensorflow has no attribute random_normal
  8. 成功解决 keras\callbacks.py:999: UserWarning: `epsilon` argument is deprecated and will be removed, use
  9. 成功解决TypeError: map() got an unexpected keyword argument 'num_threads'
  10. ML/DL:关于机器学习、深度学习算法模型的选择