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

蒙特卡洛方法(Monte Carlo,MC)

目录

1 序言

2 Monte Carlo法计算积分

3 最优化计算Monte Carlo法


1 序言

蒙特卡罗方法(Monte Carlo)是由冯诺依曼和乌拉姆等人发明的,“蒙特卡罗”这个名字是出自摩纳哥的蒙特卡罗赌场,这个方法是一类基于概率的方法的统称。是一种应用随机数来进行计算机模拟的方法,此方法随研究的系统进行随机观察抽样,通过对样本值的观察统计,求得所研究系统的某些参数。

2 Monte Carlo法计算积分

考虑二重积分

I=\iint_{A}f(x,y)dxdy,\; \; f(x,y)\geq 0,\; \; \forall (x,y)\in A

 根据其几何意义,它是以f(x,y)为曲面顶,A为底的柱体C的体积。用下列简单思路求的近似值:假设C被包在几何体D的内部,D的体积已知,若在D内产生1个均分布的随机数,那么

P(随机数落在C内)\approxC的体积/D的体积

 现用Monte Carlo法计算:I=\iint_{x^{2}+y^{2}\leq 1}\sqrt{1-x^{2}}dxdy

% Monte Carlo Integration for f(x, y) = sqrt(1 - x^2) over x^2 + y^2 <= 1
clc; clear;% Number of random points
N = 1e6; % You can increase this for better accuracy% Initialize sum of function values
f_sum = 0;% Loop to generate random points and calculate contributions
for i = 1:N% Generate random (x, y) within the bounding box [-1, 1] x [-1, 1]x = -1 + 2*rand(); % Random x in [-1, 1]y = -1 + 2*rand(); % Random y in [-1, 1]% Check if the point is inside the circleif x^2 + y^2 <= 1f_sum = f_sum + sqrt(1 - x^2); % Accumulate the function valueend
end% Calculate area of the bounding box
A_box = 4; % The bounding box [-1, 1] x [-1, 1]% Calculate the integral estimate
integral_value = A_box * f_sum / N;% Display result
fprintf('Estimated value of the integral: %.6f\n', integral_value);

2.1 代码解释:

1)随机点生成:

  • 在 [−1,1]×[−1,1] 内均匀生成随机点。
  • 使用条件x^{2}+y^{2}\leq 1筛选落在单位圆内的点。

2)函数值累加:

  • 对满足条件的点,计算 \sqrt{1-x^{2}}并累加到 f_sum

3)积分估计公式:

  •  估计积分值为:

  • 这里的区域面积 Abox=4 是整个采样的矩形面积。 

4)效率: 

  • N越大,估计值越准确。
  • 通过筛选x^{2}+y^{2}\leq 1 ,只在实际目标区域内计算函数值。

2.2 运算结果

NI
N = 1e22.655043
N = 1e42.685272
N = 1e62.666568
N = 1e82.666756

3 最优化计算Monte Carlo法

求下列函数的最大值:

f(x)=(1-x^{3})sin(3x),\: \; \; \; \; -2pi<x<2pi

为了方便理解,先绘制这个函数:

% Define the function f(x)
f = @(x) (1 - x.^3) .* sin(3 * x);% Define the range for x
x = linspace(-2*pi, 2*pi, 1000); % Generate 1000 points in the range [-2*pi, 2*pi]% Compute the function values
y = f(x);% Plot the function
figure;
plot(x, y, 'b-', 'LineWidth', 1.5);
grid on;% Add labels and title
xlabel('x');
ylabel('f(x)');
title('Plot of f(x) = (1 - x^3)sin(3x)');
legend('f(x) = (1 - x^3)sin(3x)', 'Location', 'Best');

 matlab运行结果如下: 

在给出计算代码:

% Optimization using Monte Carlo for f(x) = (1 - x^3) * sin(3x)
clc; clear;% Number of random samples
N = 1e6; % Increase this for higher accuracy% Define the function
f = @(x) (1 - x.^3) .* sin(3 * x);% Generate random samples in the range [-2*pi, 2*pi]
x_samples = -2*pi + (2*pi - (-2*pi)) * rand(N, 1);% Evaluate the function for each sample
f_values = f(x_samples);% Find the maximum function value
f_max = max(f_values);% Find the corresponding x value(s) for the maximum
x_max = x_samples(f_values == f_max);% Display results
fprintf('Maximum value of f(x): %.6f\n', f_max);
fprintf('At x = %.6f (one of the possible values)\n', x_max(1));

3.1 代码解释

1)随机采样:

  • 使用rand(N,1)生成N个均匀分布的随机数映射到区间[-2pi,2pi]中,作为函数的自变量x值。

2)函数评估:

  • 定义函数f(x)=(1-x^{3})sin(3x),计算每个采样点上的函数值f(x_{sample})

3)最大值搜索:

  • 使用max函数找到函数值中的最大值f_{max}
  • 找到与最大值对应的x值。

4)输出结果:

  •  输出最大值及对应的一个可能的必值(可能有多个全局最大值点) 

2.2 运算结果

Nf_{max}x
N = 1e2191.3604115.858119
N = 1e4194.903941-5.814489
N = 1e6194.906195-5.816071
N = 1e8194.906195-5.816063

注:1)本篇内容均为对《MATLAB建模与仿真》(周品 赵新芬 编著,国防工业出版社)摘录与个人归纳总结,如需要更加详细了解,可阅读原书“第8章 随机模拟和统计分析”部分。
2)代码由chat gpt生成。

相关文章:

蒙特卡洛方法(Monte Carlo,MC)

目录 1 序言 2 Monte Carlo法计算积分 3 最优化计算Monte Carlo法 1 序言 蒙特卡罗方法(Monte Carlo)是由冯诺依曼和乌拉姆等人发明的&#xff0c;“蒙特卡罗”这个名字是出自摩纳哥的蒙特卡罗赌场&#xff0c;这个方法是一类基于概率的方法的统称。是一种应用随机数来进行…...

python学习笔记8-函数2

参数传递 传不可变对象 & 传可变对象 def func(b):print(id(a), a) #140737041872600 234print(id(b), b) #140737041872600 234a 234 func(a)def func(b):print(id(a), a) #1413554098560 [343]print(id(b), b) #1413554098560 [343]a [343] func(a)def func(b):b.appe…...

电商项目高级篇06-缓存

电商项目高级篇06-缓存 1、docker下启动redis2、项目整合redis3、redis改造三级分类业务 缓存 流程图&#xff1a; data cache.load(id);//从缓存加载数据 If(data null){ data db.load(id);//从数据库加载数据 cache.put(id,data);//保存到 cache 中 } return data;在我们…...

使用 `aircrack-ng`扫描、获取握手包

使用 aircrack-ng 工具集来扫描 5GHz WiFi 网络的过程与扫描 2.4GHz 网络类似&#xff0c;但需要注意一些特定的配置和命令。以下是一个详细的步骤指南&#xff0c;帮助你在 5GHz 频段上扫描 WiFi 网络并捕获握手包。 ### 前提条件 1. **操作系统**&#xff1a;通常在 Linux 系…...

基于大数据python 酒店数据分析可视化大屏系统(源码+LW+部署讲解+数据库+ppt)

&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01; 很对人不知道选题怎么选 不清楚自己适合做哪块内容 都可以免费来问我 避免后期給自己答辩找麻烦 增加难度&#xff08;部分学校只有一次答辩机会 没弄好就延迟…...

uniapp中父组件调用子组件方法

实现过程&#xff08;setup语法糖形式下&#xff09; 在子组件完成方法逻辑&#xff0c;并封装。在子组件中使用defineExpose暴露子组件的该方法。在父组件完成子组件ref的绑定。通过ref调用子组件暴露的方法。 子组件示例 <template> </template><script se…...

STL算法之set相关算法

STL一共提供了四种与set(集合)相关的算法&#xff0c;分别是并集(union)、交集(intersection)、差集(difference)、对称差集(symmetric difference)。 目录 set_union set_itersection set_difference set_symmetric_difference 所谓set&#xff0c;可细分为数学上定义的和…...

vscode中json文件的注释飘红

vscode的json文件 添加注释&#xff0c;提示json中不允许有注释&#xff0c;点编辑器最下面的json&#xff0c;如下图 然后选择如上图的json with comments就好了...

【微服务】SpringBoot 整合Redis Stack 构建本地向量数据库相似性查询

目录 一、前言 二、向量数据库介绍 2.1 什么是向量数据库 2.2 向量数据库特点 2.3 向量数据库使用场景 三、常用的向量数据库解决方案 3.1 Milvus 3.1.1 Milvus是什么 3.1.2 Milvus主要特点 3.2 Faiss 3.2.1 Faiss是什么 3.2.2 Faiss主要特点 3.3 Pinecone 3.3.1 …...

三:安装服务-controller node

一&#xff1a;工具、环境准备-controller node 二&#xff1a;OpenStack环境准备-controller node 三&#xff1a;安装服务-controller node 四&#xff1a;工具、环境准备-compute node 五&#xff1a;OpenStack环境准备-compute node 六&#xff1a;安装服务-compute node 七…...

自定义类型: 结构体、枚举 、联合

目录 结构体 结构体类型的声明 匿名结构体 结构的自引用 结构体变量的定义和初始化 结构体成员变量的访问 结构体内存对齐 结构体传参 位段 位段类型的声明 位段的内存分配 位段的跨平台问题 位段的应用 枚举 枚举类型的定义 枚举的优点 联合体(共用体) 联合…...

Bert+CRF的NER实战

CRF&#xff08;条件随机场-Conditional Random Field&#xff09; 原始本文&#xff1a;我在北京吃炸酱面 标注示例&#xff1a; 我O在O北B-PLA京I-PLA吃O炸B-FOOD酱I-FOOD面I-FOOD CRF&#xff1a; 目的&#xff1a;提出一些不可能出现的预测组合&#xff08;例如I-PLA不能…...

永久停用PostgreSQL 归档功能

文章目录 引言永久停用归档功能归档的优势归档的劣势开启归档的情况关闭归档的情况see also引言 PostgreSQL 是一个开源的关系型数据库系统,支持数据归档(WAL),可以实现数据备份、恢复和灾难恢复等功能。在使用 PostgreSQL 的过程中,如果 PostgreSQL 数据库开启了归档(a…...

《数字图像处理基础》学习07-图像几何变换之最近邻插值法放大图像

目录 一&#xff0c;概念 二&#xff0c;题目及matlab实现 1&#xff0c;解题思路 2&#xff0c;matlab实现 1&#xff09;matlab思路 2&#xff09;完整代码 三&#xff0c;放大图像及matlab实现 一&#xff0c;概念 通过上一篇&#xff0c;我已经学习了使用最邻近插…...

pip安装库时报错(请求超时)

天行健&#xff0c;君子以自强不息&#xff1b;地势坤&#xff0c;君子以厚德载物。 每个人都有惰性&#xff0c;但不断学习是好好生活的根本&#xff0c;共勉&#xff01; 文章均为学习整理笔记&#xff0c;分享记录为主&#xff0c;如有错误请指正&#xff0c;共同学习进步。…...

XPath表达式详解及其在Web开发中的应用

XPath&#xff08;XML Path Language&#xff09;是一种强大的查询语言&#xff0c;用于在XML文档中选择节点。由于HTML可以被视为一种特殊的XML&#xff0c;因此XPath同样适用于HTML文档。XPath允许开发者通过元素的层级结构和属性来选择节点或节点集合&#xff0c;这使得它成…...

Qt中Socket网络编程

文章目录 Qt中Socket网络编程服务器端客户端 Qt中Socket网络编程 这里就拿b站上爱编程的小丙的demo来做总结吧&#xff0c;首先要感谢成功带我入门的人&#xff1a;爱编程的小丙和程序员长风&#xff0c;这两个人是讲Socket编程我听懂的课555&#xff0c;接下来就总结一下Qt中…...

【05】Selenium+Python 两种文件上传方式(AutoIt)

上传文件的两种方式 一、input标签上传文件 可以用send_keys方法直接上传文件 示例代码 input标签上传文件import time from selenium import webdriver from chromedriver_py import binary_path # this will get you the path variable from selenium.webdriver.common.by i…...

Python网络编程

网络编程 Socket(套接字) socket 位于 网络协议中的 数据传输层、 该层 主要 可以通过 UDP 或者 TCP协议 实现 数据的传输 TCP 协议 VS UDP协议 tcp : 是一个 可靠的 &#xff0c;面向 连接的协议。 数据在网络传输中 是安全的&#xff0c;不易丢失的。 TCP连接 在建立的时候&…...

openssl生成ca证书

常见CA文件夹 1、生成CA钥匙 openssl genrsa -out ./private/cakey.pem 2、生成CA自签名 openssl req -new -x509 -key ./private/cakey.pem -out ./cacert.crt -days 3650 3、生成http服务器私钥 openssl genrsa -out ./data/frontt.project.com.key 2048 4、CA给http服务器…...

IndexTTS 2.0情感控制效果:用自然语言描述生成对应语气语音

IndexTTS 2.0情感控制效果&#xff1a;用自然语言描述生成对应语气语音 1. 引言&#xff1a;语音合成的革命性突破 想象一下这样的场景&#xff1a;你正在制作一部动画短片&#xff0c;主角需要说一句"我受够了&#xff01;"——但你不只是想让它"说出来"…...

认知研究避坑指南:为什么CHARLS数据需要按教育程度分层修正?

认知研究避坑指南&#xff1a;教育程度分层在CHARLS数据修正中的关键作用 老龄化认知研究领域的数据分析常常面临一个棘手问题&#xff1a;如何确保不同时间点收集的认知测试分数具有可比性&#xff1f;中国健康与养老追踪调查&#xff08;CHARLS&#xff09;作为国内重要的老龄…...

别再只用总基尼系数了!用Python实现Dagum分解,看清区域差距的‘里子’

用Python拆解经济差距&#xff1a;Dagum基尼系数分解实战指南 当一份区域经济报告只给出一个总的基尼系数时&#xff0c;就像医生只告诉你"体温偏高"却不说明是哪个器官发炎——数据研究者常陷入这种诊断困境。传统基尼系数虽能反映整体不平等程度&#xff0c;却无法…...

Windows系统安装APK应用:APK Installer全面解析与高效使用指南

Windows系统安装APK应用&#xff1a;APK Installer全面解析与高效使用指南 【免费下载链接】APK-Installer An Android Application Installer for Windows 项目地址: https://gitcode.com/GitHub_Trending/ap/APK-Installer 在Windows电脑上直接运行Android应用曾经是一…...

League Toolkit:重新定义英雄联盟游戏体验的智能辅助工具集

League Toolkit&#xff1a;重新定义英雄联盟游戏体验的智能辅助工具集 【免费下载链接】League-Toolkit 兴趣使然的、简单易用的英雄联盟工具集。支持战绩查询、自动秒选等功能。基于 LCU API。 项目地址: https://gitcode.com/gh_mirrors/le/League-Toolkit 在快节奏的…...

本地部署音效生成器 Moodist 并实现外部访问

Moodist 是基于 MIT 许可的开源白噪音平台&#xff0c;提供了超过 75 种不同的环境声音&#xff0c;可以帮助用户集中注意力、保持冷静或进入放松状态。它还支持持久化声音选择&#xff0c;用户能够自定义声音预设&#xff0c;分享他们的音频配置给他人&#xff0c;并且集成睡眠…...

Token省着用:GLM-4.7-Flash优化OpenClaw长任务执行策略

Token省着用&#xff1a;GLM-4.7-Flash优化OpenClaw长任务执行策略 1. 当Token消耗成为自动化拦路虎 上周我让OpenClaw帮我整理半年的技术文档&#xff0c;结果第二天收到账单时差点从椅子上摔下来——一次自动化任务竟然烧掉了近20万Token。这个数字让我意识到&#xff0c;如…...

嵌入式Linux C语言开发核心技术与实践

嵌入式Linux开发中的C语言编程要点解析1. 嵌入式C语言开发概述1.1 嵌入式环境特点在嵌入式Linux开发中&#xff0c;C语言作为主要编程语言具有不可替代的地位。与通用计算机环境相比&#xff0c;嵌入式系统具有资源受限、实时性要求高、硬件接口特殊等特点&#xff0c;这些特性…...

3步激活旧设备潜能:开源工具OpenCore Legacy Patcher全攻略

3步激活旧设备潜能&#xff1a;开源工具OpenCore Legacy Patcher全攻略 【免费下载链接】OpenCore-Legacy-Patcher 体验与之前一样的macOS 项目地址: https://gitcode.com/GitHub_Trending/op/OpenCore-Legacy-Patcher 旧设备升级不再是难题&#xff0c;借助开源工具Ope…...

别再死磕Open SQL了!用ABAP CDS View在SAP S/4HANA里榨干数据库性能

别再死磕Open SQL了&#xff01;用ABAP CDS View在SAP S/4HANA里榨干数据库性能 每次看到那些运行了20分钟还没出结果的报表程序&#xff0c;我就忍不住想问问开发者&#xff1a;2023年了&#xff0c;为什么还在用Open SQL写这种性能灾难&#xff1f;上周我接手了一个供应商账龄…...