Моделирование полета тела вверх в поле тяжести без сопротивления
Компьютерное моделирование полета тела под действием силы тяжести
В данной статье мы разберем пример математической и компьютерной модели полета тела в поле тяжести земли без учета споротивления воздуха. Смоделируем полет тела под действием силы тяжести. Напишем программу на Си которая отображает на экране полет тела в поле тяжести земли в виде анимации.
Компьютерное моделирование динамических физических законов
При моделировании физических динамических процессов временной интервал разбивается на промежутки.
Время в компьютерной модели задаётся по формуле:
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();
}
Вернуться к содержанию Моделирование полета под углом к горизонту
Полезно почитать по теме моделирование полета тела
Моделирование полета тела в среде с сопротивлением воздуха
Моделирование полета тела под углом к горизонту с сопротивлением воздуха
Поделиться:
Нет комментариев. Ваш будет первым!