ЛЕКЦИЯ 2. ДВИЖЕНИЕ В ГРАВИТАЦИОННОМ ПОЛЕ
Движение при отсутствии сопротивления среды
Задачи о движении в гравитационном поле часто встречаются в прикладной физике (баллистика, воздухоплавание, космонавтика). Рассмотрим несколько вариантов постановки задачи и способы их решения в среде MATLAB и GNU Octave.
В самом простом случае можно пренебречь сопротивлением внешней среды и неинерциальностью системы отсчета. При этих предположениях траектория движения лежит в одной плоскости и для описания движения достаточно двух осей. Решение хорошо известно из школьного курса физики:
д ' t2
У = Уо + Ц) • sin(a) • t--—?>
х = х0 + Vo • cos(a) • t;
Vy = V0- sin(a) -gt;
VX = VO- cos(a).
Время полета может быть найдено как положительный корень уравнения
д ' t2
Уо + Vo • sin(a) • t + = 0.
В качестве параметров задаются хО, уО, V0, а.
Рассмотрим алгоритм решения задачи с помощью MATLAB и GNU Octave. Первое, что необходимо сделать, - это вычислить время полета, затем вычислить значения координат и скоростей за все время движения и построить графики.
Нахождение времени полета сводится к решению квадратного уравнения и выделению положительного корня. Для нахождения корней полинома используется функция roots (с), принимающая в виде аргумента матрицу с коэффициентами полинома (первый коэффициент соответствует старшей степени). Функция возвращает значения корней полинома. С остальными функциями и их действием мы ознакомились на лекции 1.
Пример: движение в поле силы тяжести без учета сопротивления:
% Сброс всех переменных
clear all;
% Начальные условия
V0=10;
Alpha0=60;
Х0=0;
Y0=0;
g=9.8;
% Поиск времени полета
% Задаем коэффициенты полинома
c=[-g/2, VO*sind(AlphaO), YOJ;
% Ищем корни
FlyingTime= roots(c);
%о Выделяем положительный корень
if FlyingTime(l)>0
Time =FlyingTime(1);
else
Time=FlyingTime(2);
end;
%Вычисляем зависимости величин от времени
t=0: (Time/100): Time;
X=XO+VO*cosd(AlphaO). *t;
Y=YO+VO*sind(AlphaO). *t-g. *(t.C2)/2;
Vx=VO*cosd(AlphaO). *t./t;
Vy= VO*sind(AlphaO)-g. *t;
% Построение графиков
figure();
hold on;
grid on;
plot(t,X, 'LineStyle',', 'LineWidth ',3);
plot(t, Y, 'LineStyle','LineWidth', 3);
plot(t, Vx, 'LineStyle',':', 'LineWidth ',3);
plot(t, Vy, 'LineStyle','LineWidth',3);
legend('X','Y','Vx','Vy);
Выполнение программного кода приведет к построению графика зависимости кинематических величин от времени.

Рис. 7. Зависимость кинематических величин от времени