我使用 scipy 的 rv_continuous 方法创建了一个自定义发行版。我正在尝试创建由 beta 衰变产生的电子的能量分布。鉴于其pdf:
我取自:http ://hyperphysics.phy-astr.gsu.edu/hbase/Nuclear/beta2.html#c1
我定义我的分布:
import numpy as np
from scipy.stats import rv_continuous
import matplotlib.pyplot as plt
class beta_decay(rv_continuous):
def _pdf(self, x):
return (22.48949986*np.sqrt(x**2 + 2*x*0.511)*((0.6-x)**2)*(x+0.511))
# create distribution from 0 --> Q value = 0.6
beta = beta_decay(a=0, b= 0.6)
# plot pdf
x = np.linspace(0,0.6)
plt.plot(x, beta.pdf(x))
plt.show()
# random sample the distribution and plot histogram
random = beta.rvs(size =100)
plt.hist(random)
plt.show()
其中 x = KE, Q = 0.6, C = 22.48...(通过在 0 --> Q 和设置等于 1 之间整合上述表达式来归一化),并且我忽略了费米函数 F(Z',KEe)在上面的方程式中。
但是,当我尝试使用 .rvs() 从中抽取随机样本时,它们所取的值会在 RHS 上达到峰值,而不是像我预期的那样低于 pdf 的峰值:
最终,我的代码需要对分布进行采样以获得由 beta 衰变释放的电子的 KE。为什么我的直方图如此错误?