Python 3.x 如何开始这项工作;粒子数密度“;Python作业?

Python 3.x 如何开始这项工作;粒子数密度“;Python作业?,python-3.x,computer-science,physics,Python 3.x,Computer Science,Physics,第2部分-颗粒数密度的测定 如果我们说q是特定尺寸粒子的产生率,那么在区间dt内产生的粒子总数就是q dt。为了使事情具体化,请采用以下情况: a=0.9最大值 q=100000 考虑距离原子核一定距离r处的粒子数。粒子的数密度将是数除以体积,因此为了确定数密度,我们必须计算半径为r的壳的体积,其厚度对应于粒子在我们的时间间隔dt内移动的距离。显然,这就是粒子在半径r乘以时间间隔v(r)dt时的速度,所以我们的壳层体积是: 体积=壳体表面积×壳体厚度=4πr2v(r)dt 因此,半径r处的数密度

第2部分-颗粒数密度的测定

如果我们说q是特定尺寸粒子的产生率,那么在区间dt内产生的粒子总数就是q dt。为了使事情具体化,请采用以下情况:

a=0.9最大值

q=100000

考虑距离原子核一定距离r处的粒子数。粒子的数密度将是数除以体积,因此为了确定数密度,我们必须计算半径为r的壳的体积,其厚度对应于粒子在我们的时间间隔dt内移动的距离。显然,这就是粒子在半径r乘以时间间隔v(r)dt时的速度,所以我们的壳层体积是:

体积=壳体表面积×壳体厚度=4πr2v(r)dt

因此,半径r处的数密度n为:

n(r)=qdt/4πr2v(r)dt=q/4πr2v(r)(等式5)

你会注意到,我们上面的表达式会有一个奇点,就是原子核表面的粒子数密度,因为在这个位置,向外的速度v(R)是0。显然,这表明我们预计,当尘埃加速离开表面时,粒子密度n会迅速下降。现在,我们不必担心这一点——我们以后不需要它——只需绘制数字密度如何随距离原子核的距离而变化的图形,从曲面值后的第一个点开始

•使用上述q和a的参数,对所有计算点的等式5进行评估

•制作数字密度与半径的对数图。您应该发现,在达到终端速度后,数字密度随着r减小−2,对应于对数图上-2的斜率

当前代码:

% matplotlib inline
import numpy as np
import matplotlib.pyplot as pl

R = 2000 #Nucleus Radius (m)
GM_n = 667 #Nucleus Mass (m^3 s^-2)
Q = 7*10**27 #Gas Production Rate (molecules s^-1)
V_g = 1000 #Gas Velocity (m s^-1)
C_D = 4 #Drag Coefficient Dimensionless
p_d = 500 #Grain Density (kg m^-3)
M_h2o = .01801528/(6.022*10**23) #Mass of a water molecule (g/mol)
pi = np.pi
p_g_R = M_h2o*Q/(4*np.pi*R**2*V_g)
print ('Gas Density at the comets nucleus: ', p_g_R)
a_max = (3/8)*C_D*(V_g**2)*p_g_R*(1/p_d)*((R**2)/GM_n)
print ('Radius of Maximum Size Particle: ', a_max)

def drag_force(C_D,V_g,p_g_R,pi,a,v):
    drag = .5*C_D*((V_g - v)**2)*p_g_R*pi*a**2
    return drag
def grav_force(GM_n,M_d,r):
    grav = -(GM_n*M_d)/(r**2)
    return grav
def p_g_r(p_g_R,R,r):
    p_g_r = p_g_R*(R**2/r**2)
    return p_g_r
dt = 1
tfinal = 100000
v0 = 0
t = np.arange(0.,tfinal+dt,dt)
npoints = len(t)
r = np.zeros(npoints)
v = np.zeros(npoints)
r[0]= R
v[0]= v0

a = np.array([0.9,0.5,0.1,0.01,0.001])*a_max

for j in range(len(a)):
    M_d = 4/3*pi*a[j]**3*p_d
    for i in range(len(t)-1):
        rmid = r[i] + v[i]*dt/2.
        vmid = v[i] + (grav_force(GM_n,M_d,r[i])+drag_force(C_D,V_g,p_g_r(p_g_R,R,r[i]),pi,a[j],v[i]))*dt/2.           
    r[i+1] = r[i] + vmid*dt
    v[i+1] = v[i] + (grav_force(GM_n,M_d,rmid)+drag_force(C_D,V_g,p_g_r(p_g_R,R,rmid),pi,a[j],vmid))*dt
    pl.plot(r,v)

pl.show()

a_2= 0.9*a_max
q = 100000
我以前从未编写过这样的程序,我的课程对我来说很难,我不懂。我在教授的帮助下开发了上述代码,我几乎没有时间完成这个项目。我只是想帮助你理解这个问题

当我只有v(t),r(t)时,如何找到v(r)?
我该如何计算r值?我甚至应该使用什么r值?

你有
v
作为时间的已知函数,也有
r
作为时间的另一已知函数。您可以将它们反转,得到
t
v
t
r
。要将
v
作为
r
的函数,请消除
t

v
作为已知的时间函数,也将
r
作为另一已知的时间函数。您可以将它们反转,得到
t
v
t
r
。要将
v
作为
r
的函数,请消除
t