Как мне построить трассировку пути объекта в Python? - PullRequest
0 голосов
/ 04 февраля 2019

Вопрос № 1а.[5 баллов] Предположим, что муравей случайным образом бродил, совершая шаги (x, y), один раз в секунду, где на каждом шаге муравья x и y приходят из нормального распределения со средним значением 0 и стандартным отклонением 1,0 мм (примите это на все вопросы ниже).Нарисуйте след пути муравья в течение часа.

mean = 0
sd = 1.0
side = np.random.normal()
step = np.random.normal()

for side, step in np.random.normal(1,3600): #3600 seconds in one hour
    side += 1
    step += 1
    x.append(side) #one step in x direction
    y.append(step) #one step in y direction

plt.plot(x,y,color = "darkpink")

1 Ответ

0 голосов
/ 04 февраля 2019

Существует серьезная проблема с кодом, который вы разместили,

  • Вы на самом деле создаете не массив формы (1,3600), а один плавающий элемент, который выдает ошибку в цикле for.Если вы посмотрите на документацию из np.random.normal, то увидите, что первые два позиционных аргумента относятся к среднему и стандартному отклонению .Третий параметр на самом деле является формой, к которой вы можете обращаться в качестве аргумента ключевого слова.
  • Даже если вы получаете массив (1,3600), в цикле for вы будете расширять (1,3600)массив на 2 переменные, что невозможно, так как расширение происходит вдоль первой оси
  • Я не уверен, почему вы суммируете единицу в сторону и шаг , так как есливы бы получили правильное значение norm(0,1) вы бы сместили среднее значение от 0 до 1 norm(1,1).
  • При добавлении вставляется элемент в список, но ни в каком месте вы не считаете, что путьпосле шага (n) должна быть сумма пути на шаге (n-1) плюс шаг (n).

Код:

import numpy as np
import matplotlib.pyplot as plt

path = steps = np.random.normal(size=(3600,2))

# pos(n) = pos(n-1) + step(n)
for n in range(path.shape[0]-1):
    path[n+1] += path[n]

# Compact way to plot x and y: (3600,2) -> (2,3600) and the * expand along the first axis
plt.plot(*path.T)
plt.show()

enter image description here

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...