简单理解蒙德卡洛算法(附实例)

零基础都能理解的蒙德卡洛算法(附实例)前言什么是蒙特卡洛?例1: 通过均匀抽样计算π\piπ值合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入前言最近的研究项目需要用到马尔可夫链蒙特卡洛算法(Markov Chain Monte Carl
摘要由CSDN通过智能技术生成

零基础都能理解的蒙德卡洛算法(附实例)

前言

最近的研究项目需要用到马尔可夫链蒙特卡洛算法(Markov Chain Monte Carlo: MCMC),但之前一直不是很明白蒙特卡洛算法的具体原理(很多概率模型直接有调用MCMC的包,所以之前一直不是深入了解过)。前些日子重新认真的学习了一下蒙特卡洛算法,在此配上几个实例讲解一下。

什么是蒙特卡洛?

蒙特卡洛这个名字来源于摩纳哥赌城“蒙特卡洛”(统计学大师Nicholas Metropolis在1947年命名“Monte Carlo method”)。蒙特卡洛是一种统计模拟方法,具体方法是依赖随机样本来对目标做近似(refers to algorithms that rely on repeated random sampling to obtain numerical results)。相比其他统计学算法,蒙特卡洛的强大在于它的简单灵活已经容易实现(虽然不能得到真实值,但在样本基础足够大的时候可以无限逼近于真实值)。

简单的说,蒙特卡洛是尝试使用一些

例1: 通过均匀抽样计算 π \pi π

蒙德卡洛是一种可以估算 π \pi π值的算法。这个例子就是假设我们有随机数生成器,那么我们能不能通过随机样本来估算 π \pi π呢?
蒙特卡洛估算

  1. 假设我们在一个 x x x ~ U n i f o r m ( − 1 , 1 ) Uniform(-1,1) Uniform(1,1), y y y ~ U n i f o r m ( − 1 , 1 ) Uniform(-1,1) Uniform(1,1) 的平面内进行随机采样,那么这些点落在如上图中绿色圆内的概率是多大呢?我们可以计算出:
    P (
  • 2
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
特卡方法是一种通过随机采样来估计定积分的方法。要使用特卡方法来计算定积分 y = ln(x),其中 1 <= x <= 5,可以遵循以下步骤: 1. 确定积分的范围。在这种情况下,我们已经给出了 1 <= x <= 5。 2. 生成随机样本。我们需要在给定的范围内生成大量的随机点,以便进行积分估计。可以使用均匀分布来生成这些随机点。 3. 计算函数值。对于每个生成的随机点 (x, y),计算 y = ln(x) 的函数值。在这种情况下,我们将计算 y = ln(x) 的值。 4. 估计积分。通过统计样本中函数值的平均值,并乘以积分范围的长度,可以得到对定积分的估计。 下面是使用 Python 代码实现特卡方法来计算定积分的示例: ```python import random import math def monte_carlo_integration(func, a, b, num_samples): total_sum = 0 for _ in range(num_samples): x = random.uniform(a, b) y = func(x) total_sum += y average = total_sum / num_samples integral = average * (b - a) return integral def ln(x): return math.log(x) integral = monte_carlo_integration(ln, 1, 5, 100000) print("Estimated integral:", integral) ``` 在上述代码中,我们定义了 `monte_carlo_integration` 函数来执行特卡积分。函数接受一个函数 `func`(在这种情况下是 `ln` 函数)、积分范围 a 和 b,以及样本数 `num_samples`。它返回对定积分的估计值。 使用 `ln` 函数作为参数调用 `monte_carlo_integration` 函数来计算 y = ln(x) 的定积分。我们选择了 100,000 个样本点进行估计,并打印出结果。 请注意,特卡方法的精度取决于样本数的选择。通过增加样本数,可以获得更准确的积分估计。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值