蒙特卡罗法(随机模拟法)
创作时间:
作者:
@小白创作中心
蒙特卡罗法(随机模拟法)
引用
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)图像
蒙特卡罗方法在图像处理中也有应用,例如在计算机图形学中用于光线追踪,以生成逼真的图像。
热门推荐
四川海螺沟自驾深度游攻略:路线、景点、住宿、装备全解析
帕尔瓦蒂与湿婆:神仙眷侣的文化传奇
喜马拉雅山下的女神:帕尔瓦蒂的故事
孔子与颜回:师生情深的千古佳话
教师节必读:韩愈《师说》中的教育智慧
杭州亚运会:那些难忘的瞬间与永恒的记忆
速转!7种常见癌症的筛查方法
冬季取暖神器大揭秘:如何避免煤气中毒?
Nature | 精准癌症治疗策略:试验一切可能的药物
社区煤气安全大讲堂:专家教你防中毒
冬季煤气中毒高发!火箭军总医院教你紧急处理
冬季防一氧化碳中毒指南:从案例到预防
艾灸5个穴位可保护眼睛、恢复视力、养血明目
青光眼白内障患者能否进行眼部艾灸?医生给出专业建议
探秘岗巴古堡:雪域高原上的千年守护者
岗巴古堡:一张1903年的老照片
庭院风水布局:打造理想家居环境
李理谦教你家居风水布局提升家人健康运
厦门风水大师田松灵贵珍:科学解读家居风水布局
家居风水布局如何影响你的心理健康?
怎样预防病毒感染
秋冬护眼小妙招:应对儿童眼角溃烂
苏轼点评:陶渊明的酒局到底有多精彩?
陶渊明:乱世中的隐逸诗人
《封神三部曲》中的商纣王:历史与神话的双重演绎
湖南十大名宴:从历史传承到文化盛宴
湖南最出名的9道小吃,香辣咸可口,特色湖南味,太有特色了
“广州100”越野赛:穿越白云山的百公里挑战
备战2025广州100越野赛:白云山训练攻略
2025广州100越野赛:白云山最佳路线揭秘