首页 > 解决方案 > 小粒子动能和恢复系数的单位或数学运算误差

问题描述

所以我有一个关于一定数量粒子的动能的图表。我有代码打开粒子文件,读取速度分量,然后做一些数学运算来平均它们。

avg = np.array(ys).mean(axis=0)      #averaging
m = 1 * 10**-6                       #in mg
v = avg / 1000                       #in mm/s
KE = 0.5 * m * v * v                 #average kinetic energy

然后绘制该图,我也可以曲线拟合。

def func(x, a, b):
    return  a/(1+x/b)**2 # a/(1+x/b)^2
pars, cov = optimize.curve_fit(f=func, xdata=np.nan_to_num(x), ydata=np.nan_to_num(KE), bounds=(-np.inf, np.inf))
stdev = np.sqrt(np.diag(cov)) 

我的主要/主要方程式,我在绘图和计算变量方面的工作目的是:[1]:https ://i.stack.imgur.com/v2jES.png

我决定通过将 epsilon 分解为多个部分来编写 epsilon 代码(T0 和 tau 分别是曲线拟合的 a 和 b)。

m = 1.0 * 10**-6                   # mass in mg
o = math.pi * (2 * 0.0005)**2      # pi(2R)^2 where Radius in mm || collision crosssection
T0 = float(pars[0])                # KE in Joules
tau = float(pars[1])               # seconds 
n = 140 / (0.020*.020*.010)        # numParticles / volume in mm^3 || number density

first = 1 / (o * n)
first2 = 1 - first
second = math.sqrt(m / 2)
third = 1 / tau
fourth = math.sqrt(T0)

epsilon = first2 * second * (third / fourth)
epsilon = math.sqrt(epsilon)
print epsilon 

epsilon 是否按此顺序进行数学运算?我知道我不能这样做:

math.sqrt(1 - (1 / o * n) * math.sqrt(m / 2) * (1 / tau) / math.sqrt(T0)) 

但生成的 epsilon 与我单独计算的 epsilon 不匹配(使用 Desmos 和 Symbolab)。我的数字始终相差几个数量级。我预计 T0 在 10^-10 范围内,tau 在 0.5 - 5 (s) 之间,epsilon 在 0 - 1 之间。现在它们分别是 3.8 * 10^-13、7.8 和 12。如果不是方程运算,那么它是某处的单位,但我正在尝试研究所有可能性。任何帮助或见解表示赞赏。

标签: pythonmath

解决方案


推荐阅读