Исследование движения тела, брошенного под углом к горизонту, с учетом горизонтального сопротивления
Содержание
. Введение
. Постановка задачи
. Математическая
модель задачи
. Алгоритм решения
задачи
. Схема алгоритма
. Таблица
идентификаторов
. Текст программы
на языке Pascal
. Результаты
решения задачи
. Анализ
результатов
. Приложение №1 (Microsoft
Exel XP)
. Приложение №2 (MathCAD
2001)
. Литература
1. Введение
На практике часто встречается задача, когда тело
брошено под углом к горизонту с начальной скоростью и с учётом сопротивления.
Поэтому довольно актуально исследовать характер движения такого тела на одном
типичном примере. В соответствие с математической моделью задачи для
исследования характера движения тела необходимо найти решение задачи Коши для
системы дифференциальных уравнений первого и второго порядка, решить её,
используя метод Эйлера, и построить необходимые графики.
2. Постановка задачи
Тело массой брошено
под углом к горизонту с начальной скоростью (рис.1).
На тело действует сила сопротивления ,
направленная горизонтально влево.
Исследовать характер движения тела, построив
графики зависимостей υx(t),
x(t),
υy(t),
y(t)
и υ(t).
Значения исходных данных для тестирования: ,
,
,
,
,
.
. Математическая модель задачи
Математическую модель задачи построим, используя
второй закон Ньютона. Дифференциальные уравнения движения в проекциях на оси ОХ
и ОY запишутся в виде:
и .
Начальные условия движения тела известны из
постановки задачи , ,
,
.
Таким образом, для исследования характера движения тела необходимо найти
решение задачи Коши (сист. 1):
сист. 1 сист.
2.
Преобразуем её к системе дифференциальных
уравнений первого порядка с начальными условиями (сист. 2).
Для решения системы используем метод Эйлера. В
первом положении в соответствии с постановкой задачи определим ,
,
,
, .
Обозначим Δt
шаг изменения аргумента t.
Тогда для i = 2, 3, …
, ,
,
, ,
.
Процесс вычислений продолжаем до тех пор, пока
тело не упадёт на землю, что соответствует выполнению условия .
В результате получим таблично заданные зависимости υx(t),
x(t),
υy(t),
y(t)
и υ(t).
. Алгоритм решения задачи
1. начальные данные:
1.1 υ0=5 м/c
.2 Δt=0,025
с
.3 m=0,5
кг
.4 k=2,8
кг/с
.5
g=9,8 м/с2
.6
α=30o
2. данные в первой точке пути:
2.1 i=1
.2 t1=0
.3 υx1=υ0
cosα
2.4 x1=0
2.5
υy1=υ0 sinα
.6
y1=0
3. пока повторять:
3.1 i=i+1
3.2
3.3
3.4
3.5
3.6
3.7
. n = i-1
. i
=1..n:
.1. вывод ti,
Vxi, xi,
Vyi, yi,
Vi:
5. Схема алгоритма
Max
Vybor
. Таблица идентификаторов
Номер
|
Идентификатор
|
Описание
|
1
|
υ0
|
Скорость,
с которой брошено тело
|
2
|
dt
|
Промежуток
времени, через который проводятся измерения
|
3
|
k
|
Коэффициент
вертикального сопротивления
|
4
|
g
|
Ускорение
свободного падения
|
5
|
alpha
|
Угол,
под которым брошено тело
|
6
|
m
|
Масса
тела
|
7
|
n
|
Количество
измерений от начала движения до падения тела
|
8
|
A(B)
|
Массив,
в котором хранятся результаты расчётов
|
9
|
i
|
Индекс
строк массива A(B)
|
10
|
rez
|
Текстовый
файл, в который сохраняются результаты вычислений
|
12
|
dt,dy
|
Шаги
подписей осей координат
|
13
|
x,s
|
Используются
для подписей осей координат
|
15
|
z,k
|
Индекс
столбца массива A(B) и
поправочное слагаемое соответственно. Используются для подписей осей
координат
|
16
|
GraphDriver
|
Используется
для определения используемого видеокартой видео драйвера
|
17
|
GraphMode
|
После
определения видео драйвера система заполняет его параметрами необходимыми для
правильной работы этого видео драйвера
|
18
|
ErrorCode
|
Используется
для хранения кода ошибки при инициализации модуля Graph с
использованием идентификаторов d и m
|
. Текст программы на языке Pascal
движение тело программа коши
uses graph,crt;v0=5; dt=0.025;
alpha=pi/6; k=2.8; g=9.8; m=0.5;tab=array[1..40,1..6] of
real;rez:text;,i:byte;:tab;
{====================================================}MyGraphInit;graphdriver,GraphMode,ErrorCode:integer;:=detect;(graphdriver,GraphMode,'');:=graphresult;Errorcode<>grOk
then('proizoshla oshibka grafiki: ',grapherrormsg(errorCode));('rabota
programmy prervana');;;;
{====================================================}osi_koordinat(A:tab;
n,z,k:byte);i:byte;,dy,x:real;:string;:=A[n,1]/10;:=A[n-k,z]/10;(0,1,1);(100,20,100,320);(100,320,600,320);i:=0
to 10 do(99,20+30*i,101,20+30*i);z=4 then x:=A[n-k,z]-i*dy*2x:=A[n-k,z]-i*dy;(x:4:3,s);(50,15+30*i);(s);(100+50*i,319,100+50*i,321);:=i*dt;(x:4:3,s);(90+50*i,324,s);;I:=1
to 10 do;(1,1,1);(8);(103,20+30*(i-1),
600,20+30*(i-1));(100+50*i,318,100+50*i,20);(0,1,1);;;
{====================================================}MAX(const
alpha,dt,k,m,g,v0:real; var A:tab; var
n:byte);i:byte;:=1;[i,1]:=0;[i,2]:=v0*cos(alpha);[i,3]:=0;[i,4]:=v0*sin(alpha);[i,5]:=0;[i,6]:=v0;A[i,5]>=0
do:=i+1;[i,1]:=A[i-1,1]+dt;[i,2]:=A[i-1,2]-dt*k/m*A[i-1,2];[i,3]:=A[i-1,3]+dt*A[i-1,2];[i,4]:=A[i-1,4]-dt*g;[i,5]:=A[i-1,5]+dt*A[i-1,4];[i,6]:=sqrt(sqr(A[i,2])+sqr(A[i,4]));;:=i-1;;
{=====================================================}graph_Vx(A:tab;
n:byte);i,z,k:byte;;:=2;:=n-1;_koordinat(a,n,z,k);(red);i:=1 to n
do(round(100+900*A[i,1]),round(320-69*A[i,2]),round(100+900*A[i+1,1]),round(320-69*A[i+1,2]));(100,400,'gfrafik
zavisimosti Vx(t)');;;
{=====================================================}graph_X(A:tab;
n:byte);i,z,k:byte;;:=3;:=0;_koordinat(a,n,z,k);(100,320);(red);i:=1 to n
do(round(100+A[i,1]*500/A[n,1]),round(320-A[i,3]*300/A[n,3]));(100,400,'gfrafik
zavisimosti X(t)');;;
{====================================================}graph_Vy(A:tab;
n:byte);i,z,k:byte;;:=4;:=n-1;_koordinat(a,n,z,k);(red);(round(100+A[i,1]*500/A[n,1]),round(320-(A[i,4]-A[n,4])*300/(A[1,4]-A[n,1])));i:=1
to n
do(round(100+A[i,1]*500/A[n,1]),round(320-(A[i,4]-A[n,4])*300/(A[1,4]-A[n,4])));(100,400,'grafik
zavisimosti Vy(t)');;;
{=====================================================}graph_V(A:tab;
n:byte);i,z,k:byte;;:=6;:=n-1;_koordinat(a,n,z,k);(100,20);(red);i:=1 to n
do(round(100+A[i,1]*500/A[n,1]),round(20+(A[i,6]-A[1,6])*140/(A[n,6]-A[1,6])));(100,400,'grafik
zavisimosti V(t)');;;
{=====================================================}graph_Y(A:tab;
n:byte);i,z,k:byte;;:=5;:=0;_koordinat(a,n,z,k);(100,320);(red);i:=1 to n
do(round(100+A[i,1]*500/A[n,1]),round(320-A[i,5]*22.5/A[n,5]));(100,400,'grafik
zavisimosti Y(t) ');;;
{=====================================================}vybor(A:tab;
n:byte);z:byte;:=0;;;('1-grafik Vx(t)');('2-grafik X(t)');('3-grafik
Vy(t)');('4-grafik Y(t)');('5-grafik V(t)');('sdelaite vybor
nazhatiem');('sootvetstvyuschei knopki');(z);;(z<>1) and (z<>2) and
(z<>3) and (z<>4) and (z<>5) thencase z of
: graph_Vx(A,n);
: graph_x(A,n);
: graph_Vy(A,n);
: graph_y(A,n);
: graph_V(A,n);;;;;
{=====================================================}(alpha,dt,k,m,g,v0,b,n);(b,n);(rez,'rez.txt');(rez);(rez,'
raspe4atka rezul''tatov');(rez,'issledovanie dvizheniya tela brozhenogo pod
uglom k gorizontu');(rez,'s u4etom gorizontal''nogo soprotivleniya
');(rez);(rez,'KOZEL A.N. gr.103814
');(rez);(rez,'variant_30');(rez);(rez,'ishodnye dannye:');(rez,'massa tela
m=',m:4:2,' kg');(rez,'na4al''naya skorost'' tela Vo=',v0:2,'
m/s');(rez,'koeficient soprotivleniya sredy K=',k:3:2,' kg/s');(rez,'uskorenie
Sv.Padeniya g=',g:3:2,' m/s^2');(rez,'promezhutok vremeni dt=',dt:6:4,'
s');(rez,'ugol broska alpha=',alpha*180/pi:2:0,'
grad');(rez);writeln(rez);(rez,'__________________________________________________');(rez,'|
i t Vx x Vy y
V|');(rez,'|_________________________________________________|');i:=1 to n
do(rez,'|',i:3,' | ',B[i,1]:5:3,' | ',B[i,2]:5:3,' | ',B[i,3]:5:3,' |
',B[i,4]:7:3,' | ',B[i,5]:5:3,' |
',[i,6]:4:3,'|');(rez,'------------------------------------------------------');(rez);
end.
. Результаты решения задачи
atka rezul'tatovdvizheniya tela brozhenogo pod
uglom k gorizontu
s u4etom gorizontal'nogo
soprotivleniyaA.N. gr.103814_30dannye:tela m=0.50 kgal'naya skorost' tela Vo= 5
m/ssoprotivleniya sredy K=2.80 kg/sSv.Padeniya g=9.80 m/s^2vremeni dt=0.0250
sbroska alpha=30 grad
______________________________________________________
| I t Vx x
Vy y V|
|_____________________________________________________|
| 1 | 0.000 | 4.330 | 0.000 | 2.500
| 0.000 | 5.000|
| 2 | 0.025 | 3.724 | 0.108 | 2.255
| 0.063 | 4.353|
| 3 | 0.050 | 3.203 | 0.201 | 2.010
| 0.119 | 3.781|
| 4 | 0.075 | 2.754 | 0.281 | 1.765
| 0.169 | 3.271|
| 5 | 0.100 | 2.369 | 0.350 | 1.520
| 0.213 | 2.814|
| 6 | 0.125 | 2.037 | 0.409 | 1.275
| 0.251 | 2.403|
| 7 | 0.150 | 1.752 | 0.460 | 1.030
| 0.283 | 2.032|
| 8 | 0.175 | 1.507 | 0.504 | 0.785
| 0.309 | 1.699|
| 9 | 0.200 | 1.296 | 0.542 | 0.540
| 0.328 | 1.404|
| 10 | 0.225 | 1.114 | 0.574 | 0.295
| 0.342 | 1.153|
| 11 | 0.250 | 0.958 | 0.602 | 0.050
| 0.349 | 0.960|
| 12 | 0.275 | 0.824 | 0.626 |
-0.195 | 0.351 | 0.847|
| 13 | 0.300 | 0.709 | 0.647 |
-0.440 | 0.346 | 0.834|
| 14 | 0.325 | 0.610 | 0.664 |
-0.685 | 0.335 | 0.917|
| 15 | 0.350 | 0.524 | 0.680 |
-0.930 | 0.318 | 1.068|
| 16 | 0.375 | 0.451 | 0.693 |
-1.175 | 0.294 | 1.259|
| 17 | 0.400 | 0.388 | 0.704 |
-1.420 | 0.265 | 1.472|
| 18 | 0.425 | 0.333 | 0.714 |
-1.665 | 0.229 | 1.698|
| 19 | 0.450 | 0.287 | 0.722 |
-1.910 | 0.188 | 1.931|
| 20 | 0.475 | 0.247 | 0.729 |
-2.155 | 0.140 | 2.169|
| 21 | 0.500 | 0.212 | 0.735 |
-2.400 | 0.086 | 2.409|
| 22 | 0.525 | 0.182 | 0.741 |
-2.645 | 0.026 | 2.651|
-----------------------------------------------------
. Анализ
результатов
Тело пролетело расстояние 0,741 метра за время
0,525 секунды. Скорость тела уменьшалась, пока оно не достигло наивысшей точки
своей траектории (0,351 метра). Пройдя данную точку, проекция скорости на ось y
(υy) поменяла своё
направление(значения стали отрицательными), и тело начало разгоняться. Разгон
продолжался до соприкосновения с землей.
Следовательно, исходя из результатов, можно
сделать вывод:
чтобы увеличить дальность и время полёта тела,
необходимо уменьшить массу тела, подобрать оптимальный угол броска (45о) и
место проведения эксперимента для уменьшения величины вертикального
сопротивления (ветер, дождь и тд.), увеличить начальную скорость броска.
В данной задаче мы проводили расчеты через
равные промежутки времени Δt=0,025
с. При этом в последней точке, в которой тело находилось максимально близко к
земле, координата y составляла
0,026 метра. Следовательно, это даёт существенную погрешность. Чтобы уменьшить
величину погрешности эксперимента, необходимо уменьшить значение Δt,
например, до Δt
=0,01 с.
10. Приложение №1 (Microsoft
Exel XP)
исходные
данные
|
макс
и мин значения
|
V0=
|
5
|
maxV=
|
5
|
maxY=
|
0,350625
|
dt=
|
0,025
|
minV=
|
0,834207
|
minY=
|
0
|
a(град)=
|
30
|
maxVx=
|
|
maxX=
|
0,7406698
|
k=
|
2,8
|
minVx=
|
|
minX=
|
0
|
g=
|
9,8
|
maxVy=
|
|
|
|
m=
|
0,5
|
minVy=
|
|
|
|
t
|
Vx
|
X
|
Vy
|
Y
|
V
|
0
|
4,330127
|
0
|
2,5
|
0
|
5
|
0,025
|
3,723909
|
0,108253
|
2,255
|
0,0625
|
4,3534498
|
0,05
|
3,202562
|
0,201351
|
2,01
|
0,118875
|
3,7810717
|
0,075
|
2,754203
|
0,281415
|
1,765
|
0,169125
|
3,271217
|
0,1
|
2,368615
|
0,35027
|
1,52
|
0,21325
|
2,8143802
|
0,125
|
2,037009
|
0,409485
|
1,275
|
0,25125
|
2,4031291
|
0,15
|
1,751828
|
0,460411
|
1,03
|
0,283125
|
2,0321908
|
0,175
|
1,506572
|
0,504206
|
0,785
|
0,308875
|
1,6988182
|
0,2
|
1,295652
|
0,541871
|
0,54
|
0,3285
|
1,4036784
|
0,225
|
1,11426
|
0,574262
|
0,295
|
0,342
|
1,1526497
|
0,25
|
0,958264
|
0,602118
|
0,05
|
0,349375
|
0,9595675
|
0,275
|
0,824107
|
0,626075
|
-0,195
|
0,350625
|
0,8468632
|
0,3
|
0,708732
|
0,646678
|
-0,44
|
0,34575
|
0,8342068
|
0,325
|
0,60951
|
0,664396
|
-0,685
|
0,33475
|
0,9169116
|
0,35
|
0,524178
|
0,679634
|
-0,93
|
0,317625
|
1,0675499
|
0,375
|
0,450793
|
0,692738
|
-1,175
|
0,294375
|
1,2585069
|
0,4
|
0,387682
|
0,704008
|
-1,42
|
0,265
|
1,4719706
|
0,425
|
0,333407
|
0,7137
|
-1,665
|
0,2295
|
1,6980533
|
0,45
|
0,28673
|
0,722035
|
-1,91
|
0,187875
|
1,9314021
|
0,475
|
0,246588
|
0,729203
|
-2,155
|
0,140125
|
2,1690621
|
0,5
|
0,212065
|
0,735368
|
-2,4
|
0,08625
|
2,4093509
|
0,525
|
0,182376
|
0,74067
|
-2,645
|
0,02625
|
2,6512801
|
макс
и мин значения
|
maxV=
|
=МАКС(F10:F38)
|
maxY=
|
=МАКС(E10:E38)
|
minV=
|
=МИН(F10:F38)
|
minY=
|
=МИН(E10:E38)
|
maxVx=
|
|
maxX=
|
minVx=
|
|
minX=
|
=МИН(C10:C38)
|
maxVy=
|
|
|
|
minVy=
|
|
|
|
t
|
Vx
|
X
|
0
|
=$B$3*COS(РАДИАНЫ($B$5))
|
0
|
=A10+$B$4
|
=B10-$B$4*$B$6/$B$8*B10
|
=C10+$B$4*B10
|
=A11+$B$4
|
=B11-$B$4*$B$6/$B$8*B11
|
=C11+$B$4*B11
|
=A12+$B$4
|
=B12-$B$4*$B$6/$B$8*B12
|
=C12+$B$4*B12
|
=A13+$B$4
|
=B13-$B$4*$B$6/$B$8*B13
|
=C13+$B$4*B13
|
=A14+$B$4
|
=B14-$B$4*$B$6/$B$8*B14
|
=C14+$B$4*B14
|
=A15+$B$4
|
=B15-$B$4*$B$6/$B$8*B15
|
=C15+$B$4*B15
|
=A16+$B$4
|
=B16-$B$4*$B$6/$B$8*B16
|
=C16+$B$4*B16
|
=A17+$B$4
|
=B17-$B$4*$B$6/$B$8*B17
|
=C17+$B$4*B17
|
=A18+$B$4
|
=B18-$B$4*$B$6/$B$8*B18
|
=C18+$B$4*B18
|
=A19+$B$4
|
=B19-$B$4*$B$6/$B$8*B19
|
=C19+$B$4*B19
|
=A20+$B$4
|
=B20-$B$4*$B$6/$B$8*B20
|
=C20+$B$4*B20
|
=A21+$B$4
|
=B21-$B$4*$B$6/$B$8*B21
|
=C21+$B$4*B21
|
=A22+$B$4
|
=B22-$B$4*$B$6/$B$8*B22
|
=C22+$B$4*B22
|
=A23+$B$4
|
=B23-$B$4*$B$6/$B$8*B23
|
=C23+$B$4*B23
|
=A24+$B$4
|
=B24-$B$4*$B$6/$B$8*B24
|
=C24+$B$4*B24
|
=A25+$B$4
|
=B25-$B$4*$B$6/$B$8*B25
|
=C25+$B$4*B25
|
=A26+$B$4
|
=B26-$B$4*$B$6/$B$8*B26
|
=C26+$B$4*B26
|
=A27+$B$4
|
=B27-$B$4*$B$6/$B$8*B27
|
=C27+$B$4*B27
|
=A28+$B$4
|
=B28-$B$4*$B$6/$B$8*B28
|
=C28+$B$4*B28
|
=A29+$B$4
|
=B29-$B$4*$B$6/$B$8*B29
|
=C29+$B$4*B29
|
=A30+$B$4
|
=B30-$B$4*$B$6/$B$8*B30
|
=C30+$B$4*B30
|
Vy
|
Y
|
V
|
=$B$3*SIN(РАДИАНЫ($B$5))
|
0
|
=КОРЕНЬ(B10^2+D10^2)
|
=D10-$B$4*$B$7
|
=E10+$B$4*D10
|
=КОРЕНЬ(B11^2+D11^2)
|
=D11-$B$4*$B$7
|
=E11+$B$4*D11
|
=КОРЕНЬ(B12^2+D12^2)
|
=D12-$B$4*$B$7
|
=E12+$B$4*D12
|
=КОРЕНЬ(B13^2+D13^2)
|
=D13-$B$4*$B$7
|
=E13+$B$4*D13
|
=КОРЕНЬ(B14^2+D14^2)
|
=D14-$B$4*$B$7
|
=E14+$B$4*D14
|
=КОРЕНЬ(B15^2+D15^2)
|
=D15-$B$4*$B$7
|
=E15+$B$4*D15
|
=КОРЕНЬ(B16^2+D16^2)
|
=D16-$B$4*$B$7
|
=E16+$B$4*D16
|
=КОРЕНЬ(B17^2+D17^2)
|
=D17-$B$4*$B$7
|
=E17+$B$4*D17
|
=КОРЕНЬ(B18^2+D18^2)
|
=D18-$B$4*$B$7
|
=E18+$B$4*D18
|
=КОРЕНЬ(B19^2+D19^2)
|
=D19-$B$4*$B$7
|
=E19+$B$4*D19
|
=КОРЕНЬ(B20^2+D20^2)
|
=D20-$B$4*$B$7
|
=E20+$B$4*D20
|
=КОРЕНЬ(B21^2+D21^2)
|
=D21-$B$4*$B$7
|
=E21+$B$4*D21
|
=КОРЕНЬ(B22^2+D22^2)
|
=D22-$B$4*$B$7
|
=E22+$B$4*D22
|
=КОРЕНЬ(B23^2+D23^2)
|
=D23-$B$4*$B$7
|
=E23+$B$4*D23
|
=КОРЕНЬ(B24^2+D24^2)
|
=D24-$B$4*$B$7
|
=E24+$B$4*D24
|
=КОРЕНЬ(B25^2+D25^2)
|
=D25-$B$4*$B$7
|
=E25+$B$4*D25
|
=КОРЕНЬ(B26^2+D26^2)
|
=D26-$B$4*$B$7
|
=E26+$B$4*D26
|
=КОРЕНЬ(B27^2+D27^2)
|
=D27-$B$4*$B$7
|
=E27+$B$4*D27
|
=КОРЕНЬ(B28^2+D28^2)
|
=D28-$B$4*$B$7
|
=E28+$B$4*D28
|
=КОРЕНЬ(B29^2+D29^2)
|
=D29-$B$4*$B$7
|
=E29+$B$4*D29
|
=КОРЕНЬ(B30^2+D30^2)
|
=D30-$B$4*$B$7
|
=E30+$B$4*D30
|
=КОРЕНЬ(B31^2+D31^2)
|
11. Приложение №2 (MathCAD
2001)
Исходные данные для тестирования
Данные в первой точке пути
Графики
График зависимости Vx(t)
График зависимости x(t)
График зависимости Vy(t)
График зависимости y(t)
График зависимости V(t)
12. Литература
1)
П.П.Анципорович, О.И.Алейникова, Т.И.Булгак, Н.Я.Луцко
Учебно-методическое
пособие к лабораторным работам для студентов машиностроительных специальностей.
Часть 1. Минск: БНТУ, 2009.
)
Конспект
лекций.