python里的 vegas包是怎么用的?它可以用来计算蒙特卡洛积分吗?用代码演示并展示最后的输出结果
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。
原文地址: https://www.cveoy.top/t/topic/cabU 著作权归作者所有。请勿转载和采集!