我在封闭的体积中绘制了一个N粒子的位置(x,y,z)。
x[i] = random.uniform(a,b) ...
我还发现了N粒子的恒定速度(vx,vy,vz)。
vx[i] = random.gauss(mean,sigma) ...
现在我想找到N(= 100)粒子随时间的位置。我使用了Euler-Cromer方法。
delta_t = linspace(0,2,n-1)
n = 1000
v[0] = vx;...
r[0] = x;...
for i in range(n-1):
v[i+1,:] = v[i,:]
r[i+1,:] = r[i,:] + delta_t*v[i+1,:]
t[i+1] = t[i] + delta_t
但是我希望找到每个粒子随时间变化的位置。我怎样才能做到这一点?另外,如何在3D中绘制粒子随时间的位置?
答案 0 :(得分:0)
要在给定时间找到粒子的位置,您可以使用以下代码:
import numpy as np
# assign random positions in the box 0,0,0 to 1,1,1
x = np.random.random((100,3))
# assign random velocities in the range around 0
v = np.random.normal(size=(100,3))
# define function to project the position in time according to
# laws of motion. x(t) = x_0 + v_0 * t
def position(x_0, v_0, t):
return x_0 + v_0*t
# get new position at time = 3.2
position(x, v, 3.2)