蒙特卡罗法(随机模拟法)
创作时间:
作者:
@小白创作中心
蒙特卡罗法(随机模拟法)
引用
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)图像
蒙特卡罗方法在图像处理中也有应用,例如在计算机图形学中用于光线追踪,以生成逼真的图像。
热门推荐
开关模式电源中的电感器设计:常见问题与解决方案
2024年社保缴费基数调整,你的到手工资会受影响吗?
如何选择适合自己的职业教育和技能培训课程
单显卡与显示器如何搭配?
FARHUGS成人依恋人格测试:五种依恋类型的特征与应用
国际法中的法律冲突:定义、类型与应对策略
如何从基本面和技术面全面分析一只股票?
学号和学籍号的区别及查询方法
变频器与负载匹配科学:ACS510参数设置的正确打开方式
男生网名头像推荐:阳光积极向上的选择
Win10结束进程却弹出拒绝访问的解决方法
凌霄花的栽培与管理指南
云南开远:一座四季如春的旅居小城
心脏房颤射频消融术后复查项目是啥
五月海南旅游攻略:精选特色活动与精彩节庆盛宴
保险案例分析:从基础知识到实践技巧
服务器如何运行js文件
龙凤呈祥寓意是什么意思
玉龙凤呈祥:承载千年文化内涵的艺术瑰宝
揭秘私募基金投资陷阱:你可能会踩到雷区
民法小白学一遍多长时间:系统化学习路径与时间规划
餐饮LOGO设计的理念有哪些?
解锁健康饮食秘籍:如何一眼看穿‘配料表’与‘营养成分表’的奥秘
哪些食物能帮助排便
广东男孩摇晃保温杯爆炸!这些使用误区一定要当心
首次带宠物去医院必知的15个注意事项
毛巾更换背后的秘密:使用频率、卫生习惯与材质全解析
有这4种表现的男人并不爱你!
广清城际北延线今日开通!沿线超全打卡指南
价格低廉,战力不俗!《英雄无敌3》最强大的远程兵种