数模方法论-蒙特卡洛法

server/2024/9/24 12:55:44/

一、基本概念

蒙特卡洛法是一种基于随机抽样的数值计算方法,主要用于估计复杂系统的数值解。其基本原理是通过生成大量随机样本,来模拟系统的行为或求解特定的数学问题,比如积分、概率和优化等。

在应用上,蒙特卡洛法可以用于金融风险评估、物理模拟、运筹学等领域。例如,在金融中,它可以模拟不同市场条件下的资产价格变化,从而帮助投资者评估风险和回报。通过随机生成样本并进行统计分析,最终得出问题的近似解,从而有效处理不确定性。

假设我们想估计一个单位圆的面积。可以通过蒙特卡洛法来实现:

  1. 在一个边长为2的正方形内随机生成大量点(例如,10000个)。
  2. 计算这些点中落在单位圆内的点的比例。
  3. 单位圆的面积为π,正方形的面积为4,因此圆的面积可以通过比例来估算:面积 ≈ (落在圆内的点数 / 总点数) × 4。

通过增加点的数量,可以逐步提高估算的准确性。

二、实例求解

例题一

Matlab求解

clc, clear
x=unifrnd(0,12,[1,10000000]);
y=unifrnd(0,9,[1,10000000]);
pinshu=sum(y<x.^2 & x<=3)+sum(y<12-x & x>=3);
area_appr=12*9*pinshu/10^7

Python求解

python">import numpy as np# 生成随机数
x = np.random.uniform(0, 12, 10000000)
y = np.random.uniform(0, 9, 10000000)# 计算 pinshu
pinshu = np.sum((y < x**2) & (x <= 3)) + np.sum((y < 12 - x) & (x >= 3))# 计算近似面积
area_appr = 12 * 9 * pinshu / 10**7print(area_appr)

例题二

Matlab求解

rand('state',sum(clock));  %初始化随机数发生器
p0=0;
tic    %计时开始
for i=1:10^6x=randi([0,99],1,5); %产生一行五列的区间[0,99]上的随机整数[f,g]=mengte(x);if all(g<=0)if p0<fx0=x; p0=f; %记录下当前较好的解endend
end
x0,p0
toc    %计时结束

Python求解

python">import numpy as np
import time# 初始化随机数发生器
np.random.seed(int(time.time()))p0 = 0
start_time = time.time()  # 计时开始def mengte(x):# 这里你需要根据实际的 mengte 函数实现来定义它# 作为示例,这里假设返回随机的 f 和 g 值f = np.random.random() * 100  # 示例 fg = np.random.random(5) - 0.5  # 示例 g,可能有负值return f, gfor i in range(10**6):x = np.random.randint(0, 100, 5)  # 产生一行五列的区间[0,99]上的随机整数f, g = mengte(x)if np.all(g <= 0):if p0 < f:x0 = x.copy()  # 记录下当前较好的解p0 = fprint("最佳解:", x0)
print("最佳值:", p0)
print("耗时:", time.time() - start_time)  # 计时结束


http://www.ppmy.cn/server/121354.html

相关文章

Mac 上哪个剪切板增强工具比较好用? 好用剪切板工具推荐

在日常文字编辑中&#xff0c;我们经常需要重复使用复制的内容。然而&#xff0c;新内容一旦复制&#xff0c;旧内容就会被覆盖。因此&#xff0c;选择一款易用高效的剪贴板工具成为了许多人的需求。本文整理了一些适用于 macOS 系统的优秀剪贴板增强工具&#xff0c;欢迎大家下…

【ShuQiHere】 探索数据挖掘的世界:从概念到应用

&#x1f310; 【ShuQiHere】 数据挖掘&#xff08;Data Mining, DM&#xff09; 是一种从大型数据集中提取有用信息的技术&#xff0c;无论是在商业分析、金融预测&#xff0c;还是医学研究中&#xff0c;数据挖掘都扮演着至关重要的角色。本文将带您深入了解数据挖掘的核心概…

可编辑PPT | 能源企业数字化框架、数字化运营及数字化平台建设方案

项目背景及需求理解 首先提出了全球能源互联网的概念&#xff0c;强调了清洁能源和电能替代的重要性&#xff0c;并介绍了德国工业4.0战略以及泛在电力物联网的创新。文档探讨了信息化与工业化的深度融合&#xff0c;以及云计算、大数据、物联网和移动应用等新技术在能源行业的…

Linux——创建编写并编译一个C程序

一、使用vim编辑器 在Linux系统下&#xff0c;使用vim编辑器创建、编写并编译一个C程序是一个常见的做法。以下是一个详细的步骤指南&#xff0c;我们将创建一个简单的C程序&#xff0c;该程序的功能是输出“Hello, World!”到终端。 步骤 1: 打开vim编辑器并创建C程序文件 …

OpenCVHaar级联器实现人脸捕捉和微笑检测

概念 Haar 级联分类器是由多个简单分类器组成的复杂分类器&#xff0c;每个简单分类器都由 Haar 特征训练得到。Haar 级联器因其简单和快速而被应用于某些场景。OpenCV 提供多种预训练的 Haar 特征级联分类器&#xff0c;其已经在大量图像上进行了训练&#xff0c;并且针对特定…

【灭鼠先锋 / B】

题目 代码 #include <bits/stdc.h> using namespace std; unordered_map<string, bool> m; bool check(string s) {return count(s.begin(), s.end(), O) 1; } bool SG(string s) {if (m.count(s))return m[s];if (check(s))return m[s] false;for (int i 0; i…

Vue 3有哪些新特性

Composition API&#xff1a; 这是 Vue 3 中最引人注目的新特性之一。Composition API 提供了一种全新的方式来组织和重用逻辑。它允许你将组件的逻辑按功能组织成可复用的代码块&#xff08;称为“组合式函数”&#xff09;&#xff0c;而不是像 Vue 2 那样按选项&#xff08;…

【万用表】

一、二级档蜂鸣器档 测试二极管&#xff0c;还有一些线路是导通的还是断的&#xff0c;还可以测一些比较厉害的短路 1、测试二极管 二极管白色的这边是负极 如果反方向测量&#xff0c;则没有反应 说明二极管没有问题 2、测试线路 红灯亮并且有响声 说明线路没有问题 二、…