数学理论—— 蒙特卡洛近似
数学理论—— 蒙特卡洛近似
- 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=A1A2=4π
- 计算误差为:o(1n)o(\frac{1}{\sqrt{n}})o(n1)
则计算圆周率的流程为:
- 设定一个大数n,计数器m。
- 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时)
- π←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=∫abf(x)dx
- 从[a,b]中进行n次抽样,得到:x1,x2,...,xnx_1,x_2,...,x_nx1,x2,...,xn
- 计算: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∑nf(xi)
- 可用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
- 从Ω\OmegaΩ中进行n次抽样,得到:X1,X2,...,XnX_1,X_2,...,X_nX1,X2,...,Xn
- 计算:V=∫ΩdXV=\int_\Omega d_XV=∫ΩdX
- 计算: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∑nf(Xi)
- 可用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)dxdy
代码为:
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∫RP(X)dX=1
计算f(X)的期望:
- 依据P(X)进行随机抽样,得到:X1,X2,...,XnX_1,X_2,...,X_nX1,X2,...,Xn
- 计算:Qn=1n⋅∑i=1nf(Xi)Q_n=\frac{1}{n}\cdot \sum_{i=1}^n f(X_i)Qn=n1⋅i=1∑nf(Xi)
- 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
生命是华丽错觉
时间是贼偷走一切
————五月天(如烟)————
数学理论—— 蒙特卡洛近似相关推荐
- 计算机科学数学理论浅谈 (转载)
[来源:TSTC文档中心] 计算机自从其诞生之日起,它的主要任务就是进行各种各样的科学计算.文档处理,数据处理,图像处理,硬件设计, 软件设计等等,都可以抽象为两大类:数值计算与非数值计算.作为研究计 ...
- 【信息科学技术与创新】数据压缩的理论方法与现实意义 信息论 压缩编码 通信的数学理论 Huffman编码 LZ算法 虚幻引擎与数据压缩
数据压缩的理论方法与现实意义 摘要 首先通过信息论引出数据压缩编码的理论方法 接着结合目前技术发展分析压缩编码的现实意义 最后总结思考未来通信与存储的压缩方法 Navigator 数据压缩的理论方法与 ...
- 计算机科学数学理论浅谈
计算科学数学理论浅谈 以前,总是对于数学的学习嗤之以鼻,认为没有很大的实用性,这也是为何后来跨专业考研的一个重要动机,但是随着后续学习的深入,逐渐体 会到了数学在现实工作中的分量,而这种对思考的能力的 ...
- 菲尔兹奖数学家丘成桐:人工智能中的数学理论尚无很大突破
来源:机器人 10月17日,在2019中关村论坛上,菲尔兹奖首位华人获得者.美国国家科学院院士.哈佛大学教授丘成桐发表主旨演讲.他呼吁国家应重视基础科学和数学的发展.一个国家的强大和长治久安,离不开强 ...
- 深入理解张正友相机标定法:数学理论详细推导
最近在项目中需要在激光雷达(Lidar)和相机(Camera)之间进行标定,即需要标定出相机内参和外参,使用的标定方法是张正友标定法,这里给出其数学理论推导过程. 论文原文:<A Flexibl ...
- 从文本分类问题中的特征词选择算法追踪如何将数学知识,数学理论迁移到实际工程中去...
博文转载请注明作者和出处(作者:finallyliuyu :出处博客园) 附:<卡方特征词选择算法> <DF特征词选择算法> 一.数学背景 将数学知识.数学理论以及数学思想迁移 ...
- 计算数学与数学理论专栏【简介】
计算数学与数学理论专栏 (简介) 文章目录 计算数学与数学理论专栏 (简介) 一.离散(discrete)与计算数学 二.现代数学理论 2.0 概述与杂论 2.1 代数 2.2 分析 2.3 几何 2 ...
- 蒙特卡洛算法_MCMC、蒙特卡洛近似和Metropolis算法简介
MCMC 是Markov Chain Monte Carlo 的简称,但在传统模拟中有一个很重要的假设是样本是独立的(independent samples),这一点在贝叶斯统计尤其是高纬度的模型中很 ...
- 一文读懂APS系统的核心算法和数学理论
APS系统拥有以数学模型为基础的最强算法,可以满足更高难度.更广泛的需求.但它不是可以直观理解的方法,真正的难点不在于把算法变成软件,而是在于寻找和证明这个算法.因此,各APS公司对其核心算法和数学理 ...
最新文章
- 《javascript语言精粹》读书笔记(一)
- 项目管理概述学习记录(二)
- 【NLP】哈工大|NLP数据增强方法?我有15种
- oracle 建表字段设置,Oracle创建表、删除表、修改表(添加字段、修改字段、删除字段)语句总结...
- Unity 日志管理系统
- 线性表——顺序表——时间复杂度计算
- Javascript判断是否是ipad的浏览器
- layui设置请求加载旋转等待
- 奖励补贴有点多!武汉市大健康和生物技术产业发展奖励措施解读
- 物流服务器维护,物流企业网络维护与管理 Email邮件服务器的基本配置 任务3-3 创建电子邮件服务器.doc...
- Maven传递依赖的时候,同名包不同版本的包均会下载,但是编译的时候,只会加载一个高版本的。
- 【软件推荐】使用手机和平板作电脑副屏扩展
- 关于Flask框架中启动Scrapy爬虫框架时的几种问题的解决
- RS485的EMC防雷保护方案
- 使用Python自动发送微信信息【附自动恋爱系统】
- 智慧工地施工如何应用室内定位uwb技术
- 为什么图片img下方会出现一行空白?
- 2021重庆江北中学高考成绩查询,2020年重庆部分中学高考成绩单,看看有你的母校吗?...
- OpenedFilesView
- 【华人学者风采】刘维民 中国科学院
热门文章
- 扒一扒我遇见过哪些厌恶的技术面试官
- 1 分钟教会你用 Spring Boot 发邮件
- itextpdf api帮助文档_我开源了一个小工具,可以帮你轻松生成 SpringBoot API 文档...
- 移动端布局三种视口_移动端适配之视口和meta标签
- Python之ffmpeg-python:ffmpeg-python库的简介、安装、使用方法之详细攻略
- TF之AE:AE实现TF自带数据集数字真实值对比AE先encoder后decoder预测数字的精确对比—daidingdaiding
- 成功解决AttributeError: module tensorflow has no attribute random_normal
- 成功解决 keras\callbacks.py:999: UserWarning: `epsilon` argument is deprecated and will be removed, use
- 成功解决TypeError: map() got an unexpected keyword argument 'num_threads'
- ML/DL:关于机器学习、深度学习算法模型的选择