Моделирование полета тела вверх в поле тяжести без сопротивления

17 сентября 2018 - Администратор

Компьютерное моделирование полета тела  под действием силы тяжести

В данной статье мы разберем пример математической и компьютерной модели полета тела в поле тяжести земли без учета споротивления воздуха. Смоделируем полет тела под действием силы тяжести. Напишем программу на Си которая отображает на экране полет тела в поле тяжести земли в виде анимации.

Компьютерное моделирование динамических физических законов

При моделировании физических динамических процессов  временной интервал разбивается на промежутки.
Время в компьютерной модели задаётся по формуле:
t = dt * n, где n – кол-во интервалов, а dt – интервал приращения времени.
Будем считать,  что в течение этого временного промежутка, силы не меняются. Тогда можно записать второй закон Ньютона:

второй закон ньютона

Из него можно выразить ускорение:

ускорение

Зная ускорение, можно вычислить мгновенную скорость по формуле:

скорость

Координату можно вычислить по уравнению ускоренного движения:

координата

Разберём задачу движения тела, подброшенного вверх  без  учёта  сопротивления воздуха:
На тело действует сила тяжести, направленная вниз:

сила тяжести

Тело подбрасывается вверх со скоростью  v.

Тогда из второго закона Ньютона и кинмеатических уравнений для ускоренного движения можно выразить ускорение, скорость и координату тела в заданноом интервале времени

В компьютерной программе на Си моделирования полета тела  производятся итерации, для каждой итерации рассчитываются ускорение, скорость, координата. Круг отображается на экране и через небольшую паузу стирается для анимации движения. Подробно об анимации в си.

Компьютерная модель полета тела позволяет  определить максимальную высоту подъема тела. 

Код программы на си полета тела в поле тяжести:
#include <graphics.h>
#include <math.h>
const float k = 10; // коэффициент для ускорения отображения.
main()
{
float g = 100;   // ускорение свободного падения на Земле.
float v0 = 100;    // скорость, с которой подбрасывается мяч.
float dt = 0.001; // маленький интервал времени.
float a; // ускорение.
float v; // скорость.
float t; // время.
float h; // высота.
float hmax = 0; // максимальная высота (шар может вылететь за пределы экрана).
float R = 10; // радиус мяча, который мы подбрасываем.
int xk, yk; // координата
initwindow ( 800, 600 );
v = v0; // задаём скорость, с который подбрасывается мяч.
t = 0; // начальное время.
h = 0; // высота.
xk = 400; // абсцисса шара.
while ( h >= 0 ) {
yk=590-h*k; // меняем ординату шара каждую итерацию.
setcolor ( WHITE );
circle ( xk, yk, R ); // каждую итерацию (каждый кадр) рисуем белый круг.
delay ( 1 ); // время показа кадра.
setcolor ( BLACK );
circle ( xk, yk, R ); // стираем круг.
a=-g; // рассчитываем ускорение шара для каждого нового кадра.
h=h+v*dt+a*dt*dt/2; // рассчитываем высоту шара для каждого нового кадра.
v=v+a*dt; // рассчитываем скорость шара для каждого нового кадра.
t=t+dt; // продвигаемся по оси времени.
if ( h > hmax ) hmax = h;
}
closegraph();
// вывод максимальной высоты, скорости и времени подъёма
printf(" Максимальная высота H=%f", hmax);
getch();
}

Вернуться к содержанию Перейти к следующему уроку Моделирование полета под углом к горизонту

Комментарии (0)

Нет комментариев. Ваш будет первым!