Добрый день, уважаемые читатели. Сейчас вы читаете довольно специфичную статью для нашего блога. Как вы могли заметить, мы начали экспериментировать и публиковать статьи на тематику математики. Также, я хотел бы начать цикл статей про физику, начиная с самых азов. И сегодняшней темой стал бросок тела с высоты паралельно горизонту.
Примечание. Те, кто зашёл сюда из интереса к физике, не пугайтесь названия языка программирования в заголовке статьи. Программированию будет посвящен последний раздел, до этого будет лишь обсуждение физических процессов.
Подпишись на группу Вконтакте и Телеграм-канал. Там еще больше полезного контента для программистов.
А на YouTube-канале ты найдешь обучающие видео по программированию. Подписывайся!
Сегодня мы рассматриваем следующую ситуацию: мы кидаем тело вниз с определённой высоты с некой начальной скоростью паралельно земле, так, чтобы его траектория выглядела так:

Равноускоренное движение
Разберём физику равноускоренного движения. Допустим, что тело начало двигаться с состояния покоя равноускоренно. Примем ускорение за , а скорость за
и рассмотрим изменение
относительно изменения времени
.
Условно разделим временной промежуток на равные отрезки и примем их за . Если их количество равно
, то
.
В конце первого промежутка
, после второго
и т.д. Общая формула:
.
Следовательно, если у тела была какая-то начальная скорость, а оно двигается равноускоренно с ускорением , то его скорость через
равна
. Этим мы и будем пользоваться в дальнейшем.
Бросок тела
Предположим, что мы бросаем тело (примем его за материальную точку, не имеющую массу) с высоты паралельно земле со начальной скоростю
. Обозначим вертикальную скорость тела (которая изначально равна 0 и меняется под воздействием силы тяжения)
и рассмотрим его изменение в зависимости от
.
Не будем рассматривать законы притяжения двух тел и примем ускорение свободного падения за (в некоторых задачах для облегчения рассчетов
часто равно 10).
— обычное ускорение, вследствии чего
(см. Равноускоренное движение). Горизонтальная скорость
, которую мы сами придаём телу, с истечением времени не изменяется (
).
Теперь вычислим моментальную скорость тела. Скорость — векторная величина, которая имеет своё направление. Очевидно, что и
перпендикулярны между собой, вследствии чего их результирующая скорость равна
Путь, пройденный под воздействием равноускоренного движения
Мы не знаем формулу, как вычислить путь (обозначим , пройденный телом за время
, если оно двигается равноускоренно с ускорением
, но мы можем её вывести. Снова разобъём наш временной промежуток на
частей, равных
.
В конце нулевого промежутка (когда скорость не поменяется) .
После первого промежутка, когда скорость увеличилась .
По истечению n-го промежутка, когда скорость увеличивалась n — 1 раз: .
Преобразуем полученное выражение:
Те, кто знаком с определением определённого интеграла, понимают, что мы будем дальше делать. Т.к. скорость увеличивается равномерно, то размер каждого временного промежутка должно стремится к 0. Вычислим границу
при
.
Это и есть конечная формула для расчёта пути при равноускоренном движении.
Бросок тела, время полёта и вычисление координат
Из полученной выше формулы, вычислим время полёта, обозначив его . Полёт длится до тех пор, пока высота, на которой находится тело, не равна нулю. Если высота это
, то мы получаем
.
Если мы хотим изобразить график изменения положения тела в системе координат, где (0, 0) — подножье «горы», откуда мы кидаем тело, то нам необходимо научиться вычислять координаты тела в этой системе в зависимости от времени. Таким образом мы получаем функцию, заданую параметрически:
Начнём с координаты , которая является текущей высотой тела. За время
, как мы уже знаем, тело пролетит «вниз» (
) :
. В следствии чего, текущая высота тела равна
.
Координата зависит только от
, и потому равна
.
Также вычислим угол наклона вектора результирующей скорости:
Как заключение, привожу полный список формул.
Траектория падения в виде графика на Python
Теперь займёмся построением траектории падения тела. Я предлагают создать класс Fall
, в котором мы определим следующие методы:
x(t)
— координата на Ox в зависимости от аргументаt
y(t)
— координата на Oy в зависимости от аргументаt
max_time()
— возвращает время падения тела
Для реализации задуманного, я предлагаю использовать matplotlib
и numpy
. Также, я использую jupyter-themes
для изменения стиля графика.
In[1]: import numpy as np import matplotlib.pyplot as plt from jupyterthemes import jtplot class Fall(object): # выберем более точное значение g g = 9.8066 def __init__(self, h, v0): self.__h = h self.__v0 = v0 def y(self, t): return self.__h - (Fall.g * (t**2))/2 def x(self, t): return self.__v0 * t def max_time(self): return np.sqrt(2 * self.__h / Fall.g)
Теперь создадим экземпляр класса Fall со значением высоты в 50 и скорости 10. Также построим график в matplotlib.
In[2]: h = 50; v0 = 10; fall = Fall(h, v0) t_max = fall.max_time() jtplot.style('onedork') plt.figure(figsize=(14, 7)) plt.ylim([0, h * 1.2]) plt.xlim([0, (v0 * t_max) * 1.2]) t = np.linspace(0, t_max, 1000) x = fall.x(t) y = fall.y(t) plt.plot(x, y, color='red', linewidth=2, label='\n
') plt.legend(loc='upper right', fontsize=27, title='Движение тела')
Мы используем методы x()
и y()
, чтобы вычислить координаты тела для значений из отрезка [0, max_time]
. Также, используя разметку LaTeX, я создал легенду для графика в правом верхнем углу (с помощью plt.legend
).
Взглянем на результат:

Взглянув на этот график, мы можем с легкостью понять, что тело пролетело вперёд ~32 метра до падения.
Заключение
Сегодня мы рассмотрели бросок тела с высоты, паралельно земле и физический процесс, связанный с этим событием. Также, мы построили график, который отражает траекторию движения тела под воздействием силы притяжения.
Желаю вам огромной кинетической энергии и большого ускорения.
Документ, в котором вкратце описаны идеи статьи находится по ссылке.
Также подписывайтесь на группу ВКонтакте, Telegram и YouTube-канал. Там еще больше полезного и интересного для программистов.