如何解决当其标准偏差是另一个量的函数时,如何计算正态分布?
最近,我正在读一篇论文。其中粒子速度平均值mu = 0,标准偏差sigma = b / D ^ 2,其中D是粒子的直径,b = 11000 um ^ 2是拟合参数。逆相关性使较小的粒子具有较高的初始速度。还给出了颗粒的平均直径和标准偏差分别为132um和45um。因此,根据这些信息,我尝试了以下方法
import numpy as np
da = 132*1e-06 # mean diameter
sd = 45*1e-06 # standard deviation in particle size
b = 11000*1e-12 # 11000 um^2
d = np.random.normal(da,sd,100) # 100 randomly choosen particles
def norm(mu,sigma,x):
return 1/(sigma * np.sqrt(2 * np.pi)) * np.exp( - (x - mu)**2 / (2 * sigma**2))
v = np.array([norm(0,b/(i**2),i) for i in d])
但是最终的速度分布对我来说却相反。较大的粒子具有较高的速度。
解决方法
我不清楚您对此函数调用的期望。这是确定性值的闭式计算,而不是来自正态分布的随机事件。
def norm(mu,sigma,x):
return 1/(sigma * np.sqrt(2 * np.pi)) * np.exp( - (x - mu)**2 / (2 * sigma**2))
norm(0,b/(i**2),i)
我认为关键是表达式(x - mu)**2
;您似乎已经将每个粒子的直径用作其Z分数。相反,您需要为每个粒子提取一个随机值,并使用 that 作为Z得分。内置的normal
函数可以为您完成此任务。例如。
v = np.array([np.random.normal(0,1) for i in d])
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。