0

一段时间以来,我一直在使用 np.trapz 对数组进行集成,并且到目前为止还没有遇到任何问题。我得到了一个面积明显小于 1 的分布,因为它的最大值为 0.16,分布的宽度大约为 6,但似乎返回分布下方的面积 > 60。

这是我的代码:

import numpy as np
import matplotlib.pyplot as plt
data = np.load('dist.npy')
thetavals=np.linspace(0,2*np.pi,1000)
plt.xlabel(r'$\theta$')
plt.ylabel(r'$P(\theta)$')
plt.plot(thetavals,data[0:1000])
plt.show()

integralvalue=np.trapz(data)
print('The integral of this distribution results in: ',integralvalue)
4

1 回答 1

0

使用 numpy trapz,在不选择 x 参数的情况下,假设分布的间距是均匀分布的,但是这些应该与首先形成分布的 theta 值相关,使用以下代码:

import numpy as np
import matplotlib.pyplot as plt
data = np.load('dist.npy')
thetavals=np.linspace(0,2*np.pi,1001)
plt.xlabel(r'$\theta$')
plt.ylabel(r'$P(\theta)$')
plt.plot(thetavals,data)
plt.show()

integralvalue=np.trapz(data,thetavals)
print('The integral of this distribution results in: ',integralvalue)

正如预期的那样,获得了小于 1 的数字。

于 2020-08-06T21:41:26.773 回答