数模方法论-蒙特卡洛法

一、基本概念

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

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

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

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

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

二、实例求解

例题一

Matlab求解

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**7

print(area_appr)

例题二

Matlab求解

Matlab 复制代码
rand('state',sum(clock));  %初始化随机数发生器
p0=0;
tic    %计时开始
for i=1:10^6
   x=randi([0,99],1,5); %产生一行五列的区间[0,99]上的随机整数
   [f,g]=mengte(x);
   if all(g<=0)
       if p0<f
           x0=x; p0=f; %记录下当前较好的解
       end
   end
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  # 示例 f
    g = np.random.random(5) - 0.5  # 示例 g,可能有负值
    return f, g

for 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 = f

print("最佳解:", x0)
print("最佳值:", p0)
print("耗时:", time.time() - start_time)  # 计时结束
相关推荐
FishCoderh1 小时前
Python自动化办公实战:批量重命名文件,告别手动操作
python
躺平大鹅1 小时前
Python函数入门详解(定义+调用+参数)
python
曲幽2 小时前
我用FastAPI接ollama大模型,差点被asyncio整崩溃(附对话窗口实战)
python·fastapi·web·async·httpx·asyncio·ollama
颜酱3 小时前
单调栈:从模板到实战
javascript·后端·算法
两万五千个小时6 小时前
落地实现 Anthropic Multi-Agent Research System
人工智能·python·架构
CoovallyAIHub6 小时前
仿生学突破:SILD模型如何让无人机在电力线迷宫中发现“隐形威胁”
深度学习·算法·计算机视觉
CoovallyAIHub6 小时前
从春晚机器人到零样本革命:YOLO26-Pose姿态估计实战指南
深度学习·算法·计算机视觉
CoovallyAIHub6 小时前
Le-DETR:省80%预训练数据,这个实时检测Transformer刷新SOTA|Georgia Tech & 北交大
深度学习·算法·计算机视觉
CoovallyAIHub7 小时前
强化学习凭什么比监督学习更聪明?RL的“聪明”并非来自算法,而是因为它学会了“挑食”
深度学习·算法·计算机视觉
CoovallyAIHub7 小时前
YOLO-IOD深度解析:打破实时增量目标检测的三重知识冲突
深度学习·算法·计算机视觉