Основной вопрос Python о прыгающем шаре (и, возможно, о вложенном цикле?) - PullRequest
1 голос
/ 08 октября 2019

То, чего я пытаюсь достичь, - это создать траекторию падения и отскока мяча, уравнение этого движения равно y, и каждый раз, когда шар отскакивает назад, v_0 становится e * v_0 или 3/4из до. Я начал с вычисления y (t) без отскока, позволяя y перейти в отрицательное значение, затем отрицательная часть траектории будет заменена новой траекторией, которая начинается с отскока, а ее v_0 будет равняться 3/4 от предыдущего, затем повторяюпока не останется отрицательных значений y. (Я пробовал вложенный цикл, но я не совсем понял, как, нам не нужно использовать вложенный цикл, но я не вижу другого пути). В конце концов, я хочу создать массив со всеми y шара, используя t_test под функцией.


def traj_y_bounce(t, v_0, y_0=0, e=0.75):    
    y = y_0 + v_0 * t - (1/2)*g*(t**2)
    return y
#    for i in range(len(y)):
#        while y[i] < 0:
#            y[i] == 
#    return y



#t_test = np.linspace(0,5,10)
#print(traj_y_bounce(t_test, 4))

1 Ответ

0 голосов
/ 08 октября 2019

Вот простой пример симуляции шара, сброшенного с высоты h

def traj_y_bounce(tmax, v0, y0, e0=0.75):
    g = 9.9 # meters/s/s
    y = [y0] # heights over time

    dt = 0.01 # integrate in hundredths of a second

    v = v0
    t = 0
    while t <= tmax:
        if y[-1] <= 0 and v < 0:
            v = -e0*v   # reflect off ground
        v = v - g*dt    # integrate velocity
        y.append(y[-1] + v*dt)  # integrate position

        t = t + dt  # integrate time
    return y

y = traj_y_bounce(5, 0, 10)

%matplotlib notebook
import matplotlib.pyplot as plt
plt.plot(y, linewidth=4, label='height')
plot.show()

Сюжет Simulation

...