TURBO PASCAL |
Новости |
Практическое задание N 2. 23
1. Рассчитать
разностным моделированием и по
аналитической зависимости траектории
полета снаряда без учета сопротивления
воздуха. Построить
траектории полета снаряда.
Начальная скорость V0=1000, м/с,
угол fi=450. Аналитическая
зависимость имеет вид:
X = V0*t*cos(fi);
Y = V0*t*sin(fi) - g*t2/2;
2. Рассчитать
разностным моделированием и по
аналитической зависимости траектории
полета снаряда с учетом сопротивления
воздуха, пропорциональным
скорости снаряда. Построить
траектории полета снаряда.
Начальная скорость V0=3000, м/с,
угол fi = 450. Коэффициент
сопротивления воздуха kc
= 0. 01,с-1.
Аналитическая зависимость имеет вид: X=V0*cos(fi)*(1-e(-kc*t))/kc;
Y=(V0*sin(fi)+g/kc)*(1-e(-kc*t))/kc-g*t/kc;
3. Рассчитать
разностным моделированием траектории
полета снаряда с учетом сопротивления
воздуха, пропорциональным
квадрату скорости снаряда.
Коэффициент сопротивления воздуха
kc1 = kc2 .
Построить совместно траектории полета
снаряда для п. 1,
2, 3.
Начальная скорость
V0 = 3000, м/с, угол
fi = 450.
4. Составить
программу поражения неподвижной цели при kc1
= kc2. Изменяя
в цикле угол fi на небольшую величину, определить в программе угол при
котором будет поражена цель - небольшой прямоугольник с
координатами вершин (x1, y1) и (x2, y2).
Построить все траектории полета
снаряда.
Примечание к п. 1. . 4: Выводить на экран исходные
данные: V0, fi,
kc, а также
наибольшую высоту и дальность полета
снаряда.
Рассмотрим задачу расчета
траектории космического тела,
в поле тяготения планеты без учета сил
сопротивления. В
начальный момент времени тело движется на
высоте "Н" со скоростью "V0",
направленной по касательной к
окружности радиуса R0.
Поскольку движение спутника вокруг
планеты достаточно продолжительно,
то не целесообразно запоминать в
оперативной памяти все параметры (координаты,
скорости и ускорения) в каждый момент
времени. Обычно эти параметры,
записываются в файл на диск при
вычислениях через некоторые моменты
времени, а
траекторию строят сразу,
либо запуская отдельную программу,
считывающую данные из файла.
Расчетная область задается исходя из
оценочных расчетов. Для
спутника, движущегося
вокруг Земли, можно
принять:
Xmin= Ymin= -Kv*R0,
Xmax= Ymax= Kv*R0,
Здесь R0 = (Rz+H),
Rz=6. 37*106,
м. - радиус Земли. Kv=1. 5 при
V0 <= W1;
Kv=10 при
W1 < V0 < W2;
Kv=20 при
V >= V2.
W1
= Rz*Ö(g/R0)
-
первая космическая скорость,
W2
= Ö2* W1
-
вторая космическая скорость.
Параметр "dt" можно определить
приближенно по формуле: dt=T/N, где T=
6. 28*Rz/W1
- время
оборота спутника вокруг Земли,
N=300.
Расстояние от спутника до центра
планеты определяется через координаты: function R(x, y: double): double; begin
R:= sqrt(x*x + y*y) end;
Проекции ускорений
определим в виде функции: function FA(x,r,kz: double):double;
begin FA:= -kz*x/(r*r*r)
end;
Здесь kz
= 4. E+14 для Земли (в
системе СИ).
Пусть в начальный момент времени
известны координаты спутника:
x1 = R0;
y1 = 0;
r1 = R(x1, y1);
скорость:
Vx1 = 0;
Vy1 = V0; и ускорение:
Ax1 = FA(X1, r1,
kz);
Ay1 = FA(Y1,
r1, kz); Отметим,
что скорость в начальный момент времени
направлена по касательной к окружности
радиуса r1.
Для записи алгоритма расчета
траектории необходимо знание параметров в
двух соседних точках, например,
в точке "1" - для предшествующего момента
времени и в точке "2" -
для расчетного момента времени.
Расчет производим в цикле с
одновременным выводом траектории движения
спутника на экран до тех пор пока
выполняется ограничение по радиусу
траектории или не нажата любая клавиша. While ( r1< Xmax ) or ( r1> Rz ) or ( not keyPressed ) do
begin
Vx2:= Vx1 + Ax1*dt;
Vy2:= Vy1 + Ay1*dt;
X2:= X1 + 0.5*(Vx1 + Vx2)*dt;
Y2:= Y1 + 0.5*(Vy1 + Vy2)*dt; r2:= R(x2, y2);
Ax2:=FA(X2, r2, kz);
Ay2:=FA(Y2, r2, kz);
Vx2:= Vx1 + 0.5*(Ax1 + Ax2)*dt; {
уточняем
скорость }
Vy2:= Vy1 + 0.5*(Ay1 + Ay2)*dt;
{ Переопределяем значения
параметров в точке }
x1:=
x2; y1:= y2;
r1:= r2;
Vx1:= Vx2; Vy1:= Vy2;
Ax1:= Ax2; Ay1:= Ay2
PutPixel_G(x1,y1,c); { Строим траекторию движения
точки, c -
цвет точки } end; |
(с) Все права защищены. По всем интересующим вопросам прошу писать электронный адрес |