蒙特卡罗法(随机模拟法)
创作时间:
作者:
@小白创作中心
蒙特卡罗法(随机模拟法)
引用
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)图像
蒙特卡罗方法在图像处理中也有应用,例如在计算机图形学中用于光线追踪,以生成逼真的图像。
热门推荐
希字男孩取名大全:霸气又寓意美好的名字推荐
单程最快3小时24分!南京首开G66高铁
从大陆带宠物入境香港:详细指南与费用说明
奇数的定义和性质
在丝绸之路上行走的商人、使臣、旅行家,许多都是有故事的人
护眼食物排行榜来了!医生建议多给娃吃,便宜的只要5毛钱
肚脐有异味是肠道问题吗?可以清洗吗?
累犯的法律知识详解
大体积混凝土冷却水管布置方案研究
深化研究生培养质量监测 探索学科内涵式发展路径
“穿越”时光!新老照片对比带你见证潍坊校园的历史变迁!
高中数学方差怎么求?求解方式及具体过程分析!
复方苯甲酸酊的作用有哪些?
Pandas 数据筛选:条件过滤
如何在Windows 11的Outlook中创建电子邮件规则
增程式确实是落后技术,这个无从辩解!
如何选择适合自己的AGV小车电机?电机选择详细攻略!
三种卖车方式大比拼:私人放售、车行收车、汽车寄卖
太极拳史重大突破:赵堡村竟隐藏着陈王庭三兄弟重要历史资料
血脂低的原因和危害是什么
婴儿肚脐清洁要诀:保持肚脐干燥,避免潮湿感染
酸奶发酵剂和发酵控制
新手司机必读:如何正确理解和遵守交通信号灯?
婺源旅游攻略:三日游、五日游、七日游行程规划
荷叶的功效与作用及食用方法(干薄荷叶的功效与作用及食用方法)
异地就医如何报医保?手机上备案不“垫钱”不“跑腿”
听非遗讲故事|青春,在600年藏戏传承中绽放
通过cfDNA甲基化和半甲基化分析结合机器学习检测多癌种生物
下档支撑在技术分析中有什么意义?这种支撑位如何帮助投资者判断市场趋势?
什么是非法集资?如何识别和防范?