Для программы на языке Python «Частица в коробке» мне нужно вставить пробел в плоскости x, y.Я отслеживаю x- и y-расположение каждой частицы и x- и y-компоненты скоростей в массивах numpy.
У меня есть две ошибки.
1) positie_y[z] <= 0 and positie_x[z] > 0.8 and positie_x[z] < 0.9
нельзя использовать для массивов numpy.Я новичок в numpy массивах, поэтому, пожалуйста, объясните, как использовать любые () или все () или другие параметры?
2) np.delete
не работает: частицы не исчезают.Это потому, что я не использую это правильно или есть другой способ сделать это?
def particles(n, gap):
dt = 0.01
position_x = []
position_y = []
speed_x = []
speed_y = []
for i in range(n):
alpha = random.random() * 360
speed = (0.1)*random.random() * alpha
speed_x.append(math.sin(snelheid))
speed_y.append(math.cos(snelheid))
position_x.append(0.25)
position_y.append(0.75)
position_x = np.array(position_x)
position_y = np.array(position_y)
speed_x = np.array(speed_x)
speed_y = np.array(speed_y)
Пока здесь, это не работает нормально.Проблема где-то в следующем коде.
while True:
position_x = position_x + speed_x * dt
position_y = position_y + speed_y * dt
# 'z' is the position number of the particle in the numpy array.
for z in range(0, n):
# Gap == 1 means there is a gap.
if gap == 1:
# The gap is at y = 0 and 0.8 < x < 0.9
if position_y[z] <= 0 and position_x[z] > 0.8 and position_x[z] < 0.9:
np.delete(position_x, position_x[z])
np.delete(position_y, position_y[z])
np.delete(speed_x, speed_x[z])
np.delete(speed_y, speed_y[z])
После этого я нанесу на график каждую частицу с plt.plot(positie_x, positie_y, 'ro')
и particles(100, 1)