蒙特卡罗法(随机模拟法)
创作时间:
作者:
@小白创作中心
蒙特卡罗法(随机模拟法)
引用
CSDN
1.
https://m.blog.csdn.net/weixin_46039719/article/details/121457057
蒙特卡罗方法(Monte Carlo method)是一种基于随机数的计算方法,广泛应用于物理学、工程学、金融学等领域。这种方法源于美国在第二次世界大战中研制原子弹的“曼哈顿计划”,由数学家冯·诺依曼命名,以著名的赌城摩纳哥的蒙特卡罗来命名,为这一方法蒙上了一层神秘的面纱。
1. 概述
蒙特卡罗方法的基本思想是通过随机抽样来解决问题。这种方法特别适用于那些难以用传统数学方法解决的问题,例如高维积分、复杂系统的模拟等。蒙特卡罗方法的核心在于利用随机数生成样本,然后通过对这些样本的统计分析来获得问题的近似解。
2. 应用示例
(1)计算圆周率
计算圆周率是蒙特卡罗方法的一个经典应用。基本思路是在一个正方形内随机生成大量点,然后统计落在内切圆内的点的比例。由于正方形的面积是圆面积的4倍,因此可以通过这个比例来估算圆周率的值。
import random
def estimate_pi(n):
num_point_circle = 0
num_point_total = 0
for _ in range(n):
x = random.uniform(0, 1)
y = random.uniform(0, 1)
distance = x**2 + y**2
if distance <= 1:
num_point_circle += 1
num_point_total += 1
return 4 * num_point_circle / num_point_total
print(estimate_pi(10000))
(2)计算函数积分
蒙特卡罗方法也可以用于计算函数的积分。例如,计算函数sin(x)在区间[0,1]上的积分。基本思路是在该区间内随机生成大量点,然后统计这些点在函数曲线下的比例,从而估算积分的值。
import numpy as np
import matplotlib.pyplot as plt
def f(x):
return np.sin(x)
x_min, x_max = 0, 1
y_min, y_max = 0, 1
n = 10000
x = np.random.uniform(x_min, x_max, n)
y = np.random.uniform(y_min, y_max, n)
n1 = np.sum(np.where(y < f(x), 1, 0))
r = (y_max - y_min) * (x_max - x_min) * n1 / n
print('蒙特卡罗模拟得到的sin(x)积分值:%f' % r)
xi = np.linspace(x_min, x_max, 100)
yi = f(xi)
plt.fill_between(xi, yi, 0, color='k', alpha=0.5, label='area')
plt.title('蒙特卡罗模拟得到的sin(x)积分值:%f' % r)
plt.legend()
plt.show()
(3)图像
蒙特卡罗方法在图像处理中也有应用,例如在计算机图形学中用于光线追踪,以生成逼真的图像。
热门推荐
降肺火的中成药有哪些
神经肌电图在腰椎间盘突出症定位诊断中的临床价值
金华去新疆库尔勒怎么走最方便?距离及交通指南
ICP-MS校准:确保质谱数据准确无误
详解崔永熙的优点与缺点:想要在NBA站稳脚跟 崔永熙需要脚踏实地
入职审查:9个关键环节不容忽视
电脑录屏没有声音的解决方案
民事权利是什么
嘉靖皇帝的内廷宰相,不显于史却位高权重,大明权宦——麦福
人类进化的证据与原因:探秘人类起源的历史篇章
中华文明起源新视角:古DNA技术揭示迁徙融合
新能源项目的系统控制和设备管理
测序数据不好?是不是建库出了问题?!——从测序数据看文库构建
基于麻雀搜索算法优化LSTM的冷热电负荷预测模型
合约法务部做什么
敏感性皮肤是否可以接受水光针治疗
超声波细胞破碎仪使用指南:如何保持细胞活性
合理摄入 健康瘦身两不误
古代丝绸之路在中国主要经过的城市
喝啤酒增肥还是减肥?解析啤酒的热量与营养价值
金昌市永昌县公证处:上门办证 暖心服务
半坡起步正确操作:只会踩油门就错了,老司机演示正确做法
动力电池迷雾,新一代产品为何姗姗来迟?
在项目实践中,如何引导员工发现问题并应用TRIZ理论解决问题?
TRIZ创新技术的四大分离原理:空间、时间、条件、整体与部分分离
眼角膜受损的症状有哪些
眼角膜怎么恢复
数学界的超级巨星——高斯
不同人群办理成都户口的法律流程
科普|公司如何做好防泄密?12种方法你知道几个