如何通过Python实现蒙特卡罗模拟算法 |
您所在的位置:网站首页 › python蒙特卡洛模拟代码 › 如何通过Python实现蒙特卡罗模拟算法 |
本文主要介绍蒙特卡罗模拟算法,以及如何通过Python来模拟问题。 文章目录 什么是蒙特卡罗(Monte Carlo)方法?案例1: π \pi π的计算如何使用蒙特卡罗方法计算圆周率 π \pi π ?Python模拟计算 案例2: 定积分的计算问题描述Python模拟计算 案例3: 排队上厕所问题问题描述Python模拟 小结 什么是蒙特卡罗(Monte Carlo)方法?蒙特卡罗(Monte Carlo)方法,又称随机抽样或统计试验方法,是通过使用随机数(或更常见的伪随机数)来解决很多计算问题的方法,将所求解的问题同一定的概率模型相联系,用计算机实现统计模拟或抽样,以获得问题的近似解。 蒙特卡罗解题归结为三个主要步骤: 构造或描述概率过程;实现从已知概率分布抽样;建立各种估计量。接下来我们介绍3个简单的案例,看一下如何在实际问题中应用这3个步骤进行求解。 案例1: π \pi π的计算 如何使用蒙特卡罗方法计算圆周率 π \pi π ?正方形内部有一个相切的圆,假设圆形的半径为 r r r,那么正方形的边长则为 2 r 2r 2r,因此,圆形和正方形的面积之比为: π r 2 4 r 2 = π 4 \frac{\pi r^2}{4r^2} = \frac{\pi}{4} 4r2πr2=4π 现在,在正方形内部,随机产生一系列的点,计算他们与中心点的距离,从而判断是否落在圆的内部,从而: 落 在 圆 内 部 点 数 总 点 数 = π 4 \frac{落在圆内部点数}{总点数} = \frac{\pi}{4} 总点数落在圆内部点数=4π 即可估算出圆周率 π \pi π的大小。 Python模拟计算Step1 构造或描述概率过程 import numpy as np import pandas as pd import matplotlib.pyplot as plt from matplotlib.patches import Circle r = 1 # 半径 a, b = (0.0, 0.0) # 圆心 # 正方形边界 xmin, xmax = a-1, a+1 ymin, ymax = b-1, b+1Step2 实现从已知概率分布抽样 由于每个点落入不同位置的概率是一致的,所以我们使用均匀分布进行抽样。 # 随机抽取n个点 n = 10000 # 在正方形范围内,随机抽取n个点 x = np.random.uniform(xmin, xmax, n) y = np.random.uniform(ymin, ymax, n)Step3 建立各种估计量 # 计算每个点到圆心的距离 d = np.sqrt((x - a) ** 2 + (y - b) ** 2) # 圆内点的个数 res = sum(np.where(d |
今日新闻 |
点击排行 |
|
推荐新闻 |
图片新闻 |
|
专题文章 |
CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭 |