Monte carlo 求解积分

news2025/5/21 20:46:35

Monte carlo 求解积分

文章目录

  • Monte carlo 求解积分
    • @[toc]
      • 1 单变量情形
      • 2 多变量情形

1 单变量情形

假设待求解积分形式为
θ = ∫ 0 1 f ( x ) d x \theta=\int_0^1 f(x) \mathrm{d} x θ=01f(x)dx
其中 θ \theta θ为积分值。引入随机变量 X ∼ U ( 0 , 1 ) X\sim U(0,1) XU(0,1),则 θ = E [ f ( X ) ] \boldsymbol{\theta}=E[f(X)] θ=E[f(X)]。若 X i ( i = 1 , … n ) X_i(i=1,\dots n) Xi(i=1,n)均服从 U ( 0 , 1 ) U(0,1) U(0,1),则 f ( X i ) f(X_i) f(Xi)是均值为 θ \theta θ的独立同分布随机变量。根据大数定律有
∑ i = 1 k f ( X i ) k → E [ f ( X ) ] = θ , k → ∞ \sum_{i=1}^k \frac{f\left(X_i\right)}{k} \rightarrow E[f(X)]=\theta,k\to \infty i=1kkf(Xi)E[f(X)]=θ,k
上述公式意味着只需要获得大量服从 U ( 0 , 1 ) U(0,1) U(0,1)的随机数,通过 f f f作用求其均值即可近似于原积分值 θ \theta θ。这种积分近似方法称为Monte carlo(MC)方法。

若积分上下限不为(0,1),考虑如下积分
θ = ∫ a b f ( x ) d x \theta=\int_a^b f(x) \mathrm{d} x θ=abf(x)dx
可以通过如下线性变换进行转化
y = x − a b − a ,   d y = d x b − a y=\frac{x-a}{b-a}, \mathrm{~d} y=\frac{\mathrm{d} x}{b-a} y=baxa, dy=badx
于是
θ = ∫ 0 1 f ( a + ( b − a ) y ) ( b − a ) d y \theta=\int_0^1 f(a+(b-a) y)(b-a) \mathrm{d} y θ=01f(a+(ba)y)(ba)dy
根据上述思想,可以通过如下步骤实现积分

1 首先构建服从(0,1)均与分布的采集器,并获得 n n n各随机数 x i ∈ ( 0 , 1 ) x_i\in(0,1) xi(0,1)

2 再将所有随机数带入函数 f ( a + ( b − a ) y ) ( b − a ) f(a+(b-a) y)(b-a) f(a+(ba)y)(ba)求出 n n n个函数值

3 对2中 n n n个函数值进行平均

下面通过 R R R进行MC求解积分
∫ − 2 2 e − x 2 d x \int_{-2}^2e^{-x^2}dx 22ex2dx

f1 = function(n,lower,upper,fun){
  "
  n:随机数个数
  lower:积分下限
  upper:积分上限
  fun:被积函数
  "
  x = runif(n)
  sum((upper-lower)*fun(lower+(upper-lower)*x))/n
}

# 定义函数
g = function(x) exp(-x^2)
res = numeric()
for(i in 1:10000) res[i] = f1(i,-1,1,g) 
plot(res,type = 'l',xlab = 'n')
# 添加理论值
abline(h = integrate(g,-1,1)$value,col = 'red',lwd = 2)
grid(nx = 20,ny=20,lwd =2)

在这里插入图片描述

上图看出,随着模拟次数增加,使用MC方法得到的值与理论值更加接近。其中理论值使用R内嵌函数计算

integrate(g,-1,1)
# 1.493648 with absolute error < 1.7e-14

2 多变量情形

对于单变量而言,MC方法作用并不是非常明显,对于多元积分求解具有更高效的作用。

假设多元函数 f f f是关于变量 x i ( i = 1 , 2 … n ) x_i(i=1,2\dots n) xi(i=1,2n)的函数,需要求解
θ = ∫ 0 1 ∫ 0 1 ⋯ ∫ 0 1 f ( x 1 , x 2 , ⋯   , x n ) d x 1   d x 2 ⋯ d x n \theta=\int_0^1 \int_0^1 \cdots \int_0^1 f\left(x_1, x_2, \cdots, x_n\right) \mathrm{d} x_1 \mathrm{~d} x_2 \cdots \mathrm{d} x_n θ=010101f(x1,x2,,xn)dx1 dx2dxn
注意到使用MC方法关键是估计 θ \theta θ
θ = E [ f ( X 1 , X 2 , ⋯   , X n ) ] \theta=E\left[f\left(X_1, X_2, \cdots, X_n\right)\right] θ=E[f(X1,X2,,Xn)]
其中 X i X_i Xi i i d iid iid 且服从 U ( 0 , 1 ) U(0,1) U(0,1)。产生 k k k个独立集合,每个集合由 n n n个独立的服从 U ( 0 , 1 ) U(0,1) U(0,1)随机变量构成,
U 1 1 , U 2 1 , ⋯   , U n 1 U 1 2 , U 2 2 , ⋯   , U n 2 ⋮ U 1 k , U 2 k , ⋯   , U n k \begin{gathered} U_1^1, U_2^1, \cdots, U_n^1 \\ U_1^2, U_2^2, \cdots, U_n^2 \\ \vdots \\ U_1^k, U_2^k, \cdots, U_n^k \end{gathered} U11,U21,,Un1U12,U22,,Un2U1k,U2k,,Unk
g ( U 1 i , U 2 i , ⋯   , U n i ) , i = 1 , 2 , ⋯   , k g\left(U_1^i, U_2^i, \cdots, U_n^i\right), i=1,2, \cdots, k g(U1i,U2i,,Uni),i=1,2,,k具有均值 θ \theta θ的独立同分布随机变量,于是当 k → ∞ k\to \infty k
∑ i = 1 k f ( U 1 i , U 2 i , ⋯   , U n i ) k → E [ f ( X 1 , X 2 , ⋯   , X n ) ] = θ \frac{\sum_{i=1}^k f\left(U_1^i, U_2{ }^i, \cdots, U_n^i\right)}{k}\to E\left[f\left(X_1, X_2, \cdots, X_n\right)\right] = \theta ki=1kf(U1i,U2i,,Uni)E[f(X1,X2,,Xn)]=θ

# 二重积分
X = runif(10000)
Y = runif(10000)
f = function(x,y) cos(x^2+y^2)
sum(f(X,Y))/10000

res2 = numeric()
for(i in 1:2000){
  res2[i] = sum(f(X,Y)[1:i])/i
}
# 理论值
l2 = function(x){
  cos(x[1]^2+x[2]^2)
}
library(cubature)
z = adaptIntegrate(l2, c(0, 0), c(1, 1), maxEval=10000)
# 模拟值
plot(res2,type = 'l',xlab = 'n',lwd = 2)
abline(h = z$integral)
grid(nx = 20,ny=20,lwd =2)

在这里插入图片描述


-END-

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/513473.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

服务攻防-应用协议-远控软件漏洞向日葵VNCTV-平台漏洞KibanaZabbix-附真实案例演示

目录 一、导图 二、远程控制-向日葵&Vnc&Teamviewer 1、向日葵 ▶漏洞利用工具下载地址&#xff1a; ▶实例展示&#xff1a; 2、Vnc ▶Vnc简介&#xff1a; ▶实例展示&#xff1a; 3、Teamviewer ▶Teamviewer简介&#xff1a; ▶实例展示&#xff1a; 三、设备…

小灰的基金,亏了67W。。。

2022年基金市场有多差&#xff1f;相信大家都有目共睹。小灰的基金在去年也赔得很惨&#xff0c;还每次写过几篇文章&#xff1a; 跌吧&#xff0c;继续跌吧&#xff0c;小灰的基金已亏损64万。。。 基金亏损84万&#xff0c;小灰反手把银行客户经理投诉了 今年是疫情结束的第一…

成为Smartbi合伙人,现金奖励可达15000元

2023年Smartbi推出合伙人计划即日起至2023年12月31日只要您成为思迈特软件合伙人推荐有效商机即有机会赢取上万元现金奖励商机奖励1000元&#xff0c;合同签约奖励可达15000元同时我们将为您提供全方位的支持和帮助实现共谋、共创、共赢&#xff01;*点击https://www.smartbi.c…

长文多图一步步讲清楚:DDD理论、建模与代码实现全流程

欢迎大家关注公众号「JAVA前线」查看更多精彩分享文章&#xff0c;主要包括源码分析、实际应用、架构思维、职场分享、产品思考等等&#xff0c;同时欢迎大家加我个人微信「java_front」一起交流学习 1 六个问题 1.1 为什么使用DDD DDD方法论核心是将问题不断分解&#xff0c…

院内导航移动导诊服务体系,院内导航怎么实现?

院内导航怎么实现&#xff1f;经过多年发展&#xff0c;医院规模愈加庞大&#xff0c;尤其是综合性医院&#xff0c;院区面积较大&#xff0c;门诊、医技、住院等大楼及楼区内部设计复杂&#xff0c;科室、诊室数量众多&#xff0c;对于新患者犹如进入了迷宫&#xff0c;客观环…

《花雕学AI》Poe:一个让你和 AI 成为朋友的平台,带你探索 ChatGPT4 和其他 八种AI 模型的奥秘

你是否曾经梦想过&#xff0c;能够在一个平台上&#xff0c;和多种不同的 AI 模型进行有趣、有用、有深度的对话&#xff0c;甚至还能轻松地把你的对话分享给其他人&#xff1f;如果你有这样的梦想&#xff0c;那么 Poe 一站式 AI 工具箱就是你的不二之选&#xff01; Poe 是国…

让AI来告诉你什么叫幽灵堵车

使用环境参考 CocosCreator v3.7.2 ChatGPT 正文 什么是幽灵堵车 堵车&#xff0c;大家都不陌生&#xff01; 堵车时我就思维发散&#xff0c;用 CocosCreator 模拟下堵车应该挺好玩&#xff0c;网上总说高速上最前面如果有个龟速的车&#xff0c;后面能堵车堵个两三公里。…

计算机毕业论文选题推荐|软件工程|系列四

文章目录 导文题目导文 计算机毕业论文选题推荐|软件工程 (***语言)==使用其他任何编程语言 例如:基于(***语言)门窗账务管理系统的设计与实现 得到:基于JAVA门窗账务管理系统的设计与实现 基于vue门窗账务管理系统的设计与实现 等等 题目 基于(***语言)的人脸识别系统…

python定时任务2_celery flower计划任务

启动worker&#xff1a; celery -A tasks worker --loglevelerror --poolsolo worker启动成功 启动beat celery -A tasks beat --loglevelinfo beat启动成功 启动flower celery -A tasks flower --loglevelinfo flower启动成功&#xff0c;然后进入http://localhost:5555 可…

手把手教你怎么搭建自己的ChatGPT和Midjourney绘图(含源码)

AI程序采用NUXT3LARAVEL9开发&#xff08;目前版本V1.1.7&#xff09; 授权方式&#xff1a;三个顶级域名两次更换 1.AI智能对话-对接官方和官方反代&#xff08;markdown输出&#xff09;PS:采用百度与自用库检测文字 2.AI绘图-根据关键词绘图-增加dreamStudio绘画-增加mid…

每日一个小技巧:1分钟告诉你图片怎么转语音

随着科技的不断进步&#xff0c;人们对于信息的获取方式也越来越多样化。而在这些方式中&#xff0c;图片和文字无疑是比较常见的两种。图片以其生动直观的特点吸引了许多人的眼球&#xff0c;而文字则以其更为详尽的信息呈现方式成为了人们了解事物的首选。然而&#xff0c;对…

金融行业数据分类分级“五步走” | 盾见

文|查浩奇 《数据安全法》明确提出&#xff0c;国家要建立数据分类分级保护制度&#xff0c;根据数据在经济社会发展中的重要程度&#xff0c;以及一旦遭到篡改、破坏、泄露或者非法获取、非法利用&#xff0c;对国家安全、公共利益或者个人、组织合法权益造成的危害程度&…

java泛型通配符

通配符有三种&#xff1a; 第一种&#xff1a; 问号&#xff08;?&#xff09;&#xff0c;表示所有类型 第二种&#xff1a;extends 类名 &#xff0c;表示该类及继承了该类的类型 第三种&#xff1a;super 类名&#xff0c; 表示该类和该类的父类 第一种&#xff1a;&…

大屏设计都是收费的吗?今天教你用积木报表做大屏,完全免费吆!

一、登录积木报表 1. 打开网址 输入用户名、密码&#xff0c;即可登录&#xff0c;如下图1.11所示&#xff1a; 备注&#xff1a;如果没有账号&#xff0c;需要自己用手机号注册一个账号&#xff0c;即可使用&#xff1b;图1.11 2. 进入系统后&#xff0c;点击“我的大屏” …

SSM框架练习—主从表的业务模型

需要实现的整体功能&#xff1a; 系统的登录并进行用户名的校验团购信息的列表展示团购信息的添加团购信息的检索 1、数据库创建 CREATE DATABASE mydb;USE mydb;drop table if exists vaccunit;CREATE TABLE vaccunit (vid INT AUTO_INCREMENT PRIMARY KEY,unitname VARCHA…

合众伟奇加入飞桨技术伙伴计划,共建“AI+数智化服务”科技创新发展格局

近日&#xff0c;北京合众伟奇科技股份有限公司正式加入飞桨技术伙伴计划&#xff0c;双方将共同努力在电力能源、工业制造等行业的AI技术应用及生态建设上做出贡献&#xff0c;致力构建“AI数智化服务”发展新模式&#xff0c;助力客户业务信息化、数字化、智能化升级。 北京合…

Grafana系列-统一展示-6-Zabbix仪表板

系列文章 Grafana 系列文章 &#x1f4dd;Notes: 关于 Grafana系列-统一展示-6-Zabbix 数据源, 其实已经在之前的文章: 使用 Grafana 统一监控展示 - 对接 Zabbix 里详细介绍过了, 感兴趣的请移步阅读. 知识储备 一个图表上的多个 Items 我们可以在 metric 字段内使用正则表…

在为缺少进项发票忧心忡忡?教你如何合理降低增值税!

​业务是流程&#xff0c;财税是结果&#xff0c;税收问题千千万&#xff0c;《税算盘》来帮你找答案。 缺少进项通常是指增值税专用发票缺少抵扣&#xff0c;增值税专用发票有能够抵扣税金的功能。企业出现缺少进项发票的情况时&#xff0c;就会进一步影响企业的所得税税负。…

海睿思分享 | 制造业数字化转型之路

近年来&#xff0c;制造业企业数字化转型的话题一直处于行业高热位置。中央经济工作会议作出“大力发展数字经济”的部署&#xff0c;工信部提出要深化产业数字化转型&#xff0c;建设一批全球领先的智能工厂、智慧供应链&#xff0c;并向中小企业场景化、标准化复制推广。近期…

c#笔记-特性

特性 添加特性 特性是一种用于给代码添加额外信息的声明性标签。 在修饰的元素之前&#xff0c;用方括号声明特性。 [Obsolete("过时的类")] public class MyClass1 {}需要声明多个特性时&#xff0c;可以使用多个方括号&#xff0c;也可以在一个方括号里使用逗号…