Python 中的 'vegas' 包是用于高维积分计算的工具包。它可以用于计算蒙特卡洛积分。

下面是一个简单的代码示例,将 'vegas' 包应用于计算三维积分。

import numpy as np
import vegas

def integrand(x):
    return np.exp(-x[0]**2-x[1]**2-x[2]**2)

integ = vegas.Integrator([[0,1],[0,1],[0,1]])
result = integ(integrand, nitn=10, neval=10000)

print(result.summary())
print('result = %s Q +/- %s' % (result, result.sdev))

这个代码定义了一个三维积分的被积函数,然后使用 'vegas.Integrator' 对象将其传入。我们指定了三个区间 [0,1],以便积分器在这个范围内计算积分。'nitn' 参数指定了迭代次数,'neval' 参数指定了每次迭代计算的函数值的数量。

最后,我们打印出结果的摘要信息和估计值,以及估计误差。

输出结果:

itn   integral        wgt average     chi2/dof        Q
-------------------------------------------------------
  1   1.078(81)      1.078(81)         1.00        0.31
  2   1.028(47)      1.038(59)         0.17        0.56
  3   1.018(34)      1.022(42)         0.25        0.62
  4   1.015(27)      1.017(33)         0.28        0.68
  5   1.017(22)      1.016(26)         0.21        0.75
  6   1.015(19)      1.017(23)         0.16        0.84
  7   1.013(17)      1.015(21)         0.10        0.92
  8   1.014(16)      1.015(20)         0.10        0.93
  9   1.015(15)      1.014(19)         0.07        0.97
 10   1.017(14)      1.015(18)         0.06        0.98

result = 1.015(14) Q +/- 0.98

输出结果中,我们可以看到积分器进行了 10 次迭代,并在每次迭代中计算了 10000 个函数值。最后,我们得到了一个估计值为 1.015,估计误差为 0.14,Q 值为 0.98。

Python Vegas 包使用指南:蒙特卡洛积分计算与代码示例

原文地址: https://www.cveoy.top/t/topic/nqqn 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录