Этап четвертый. Воздействие внешних факторов.
К внешним факторам в решении задачи можно отнести случайные события, которые происходят в природе или при протекании каких либо физических процессов. В нашем случае это может быть сопротивление воздуха, порыв ветра, интенсивность горения пороха, влажность и т.д. Из всех случайных величин рассмотрим только сопротивление воздуха. Учитывая то, что сопротивление воздуха направленно в противоположную сторону движения тела [4], то силу сопротивления можно представить в виде двух составляющих: вертикальной и горизонтальной, при этом, чем выше скорость, тем больше сопротивление и наоборот. Выделим блок программы (Приложение 2) с 100-го кадра: 100 q = .0005 t = t + q s = v * t * COS(f) * 2 (4.1) h = (v * t * SIN(f) – (g * t ^ 2) / 2) * 5.5 (4.2) Запишем составляющие горизонтальной и вертикальной скорости: vs=v*cos(f) vh=v*sin(f) Но если пренебречь, тем что с высотой плотность воздуха падает и считать ее в нижних слоях атмосферы неизменной, то упрощенная формула горизонтальной и вертикальной составляющей, в соответствии с законом Аэродинамики [ 4 ], примет вид [ 5 ]:
Тогда выражение 4.1 и 4.2 можно изменить записав блок с 100-го кадра в следующем виде: 100 q = .0005 t = t + q k = .0002 vs = v * COS(f) - (k - k / (k + v * COS(f))) vh = v * SIN(f) - (k - k / (k + v * SIN(f))) s = vs * t * 2 h = (vh * t - (g * t ^ 2) / 2) * 5.5 v = SQR(vs ^ 2 + vh ^ 2) (4.3) LINE (x2, y2)-(x0 + s / 20, y0 - h / 25), 14 x2 = x0 + s / 20 y2 = y0 - h / 25 IF h < 0 THEN 200 GOTO 100 Где к - коэффициент сопротивления воздуха, который подбирается экспериментальным путем и может быть изменен в соответствии с условиями задачи, причем для вертикальной и горизонтальной составляющей может быть введен свой коэффициент, а выражение (4.3) обеспечивает пересчет скорости используя корень квадратного выражения. Кроме этого, для большей информационности, выведем на экран значение скорости, высоты, дальности и времени: LOCATE 1, 6: PRINT "V m/s" LOCATE 2, 6: PRINT "H m" LOCATE 2, 24: PRINT "S m" LOCATE 1, 24: PRINT "T s" LOCATE 1, 12: PRINT v LOCATE 1, 28: PRINT t LOCATE 2, 12: PRINT h LOCATE 2, 28: PRINT s Причем, первую половину необходимо разместить в программе до 80-й строки (кадра), а вторую в конце тела цикла. Полностью программа представлена в приложении 3. Следует обратить внимание на то, что значения коэффициентов k и q в приложении 3 изменены для большей реалистичности полета ядра, так как часть ресурсов компьютера задействована для отображения текущих параметров, а выводимые значения высоты h и дальности s делятся на 5,5 и 2 соответственно для соблюдения масштаба. К случайным событиям можно отнести и роль оператора на ход решения задачи. В данном случае изменим угол полета ядра уже в ходе решения задачи. Что бы иметь возможность в процессе работы программы изменять угол стрельбы задействуем еще три функциональные клавиши F2, F3, F5, где F2 будет отвечать за подъем на один градус в верх, F3 – за один градус вниз, F5 – позволит прервать выполнение программы в любое время. Для этого в программе после выполнения подпрограммы выполнения фейерверка вставим блок: ERASE x,y 210 KEY(2) ON ON KEY(2) GOSUB 220 KEY(3) ON ON KEY(3) GOSUB 230 KEY(1) ON ON KEY(1) GOSUB 72 GOTO 210 GOTO 210 220 a = a + 1 LOCATE 1, 46: PRINT a GOTO 210 230 a = a - 1 LOCATE 1, 46: PRINT a GOTO 210 300 END Оператор ERASE x,y отвечает за обнуление памяти задействованной под массив DIM x(n), y(n). При этом не обходимо обозначить 72 –ю строку перед блоком отвечающим за построение сетки координат. Чтобы прервать выполнение задачи в любой момент времени, после ее начала, логично, если оператор KEY(5) ON будет размещен сразу за KEY(1) ON в начале программы: 80 KEY(1) ON ON KEY(1) GOSUB 90 KEY(5) ON ON KEY(5) GOSUB 300 GOTO 80 Полностью законченная программа представлена в приложении 4. Задачу можно дальше усложнять, заставив цель двигаться, маневрировать, вводить дополнительные параметры, которые реальней отражают происходящее, физические процессы. Но такая цель в данной работе не преследуется. Заключение В предложенной к рассмотрению работе были показаны возможности языка программирования БЕЙСИК по решению математических уравнений описывающих физические явления. В работе не ставилась задача изучить в полном объеме язык БЕЙСИК, но переходя от простых решений, к более сложным, наглядно продемонстрирована возможность решения сложных задач с использованием графики, что в значительной степени способствует пониманию происходящих процессов. Необходимо подчеркнуть, что пользователь работая на компьютере рано или поздно сталкивается с желанием самостоятельно написать программу, в которой можно было бы, в реальном масштаба времени, наблюдать и воздействовать на какие-то процессы. Это довольно сложный и кропотливый труд. Но первый шаг сделан в этой работе. Важно отметить, что на многие практические исследования необходимо затратить определенное количество материальных средств, а создав электронную модель и воплотив ее в компьютерной программе обеспечивается значительная экономия средств. При этом, в решение таких задач следует учитывать случайный фактор, который может в значительной мере сказываться на реальных результатах. Но и это можно учесть используя законы теории вероятности. Таким образом, берясь за решение какой – либо задачи, следует помнить, что при некотором напряжении мысли, логическом анализе и упорстве можно даже самую сложную задачу разбить на последовательность простых шагов, которые потом легко преобразовать в компьютерную программу. Список литературы Дж. Радер., К. Миллсап. Бейсик для персонального компьютера фирмы IBM: Пер. с англ. – М.: Радио и связь, 1991. – 30 л.: ил. Р. Мкдона. Основы микрокомпьютерных вычислений: Пер. с англ./ Т.Г.Никольской; Под ред. В. Ф. Шальгина. – М.: Высш. Школа., 1989. – 272 с.: ил. Задачи и упражнения по программированию: Практ. Пособие для ПТУ/ Под ред. А. Я. Савельева. Кн. 2. Тяжелая промышленность и транспорт/ В.Е.Алексеев, А.С. Ваулин. – 2-е изд., доп. – М.: Высш. шк., 1989-112 с.: ил. А. В. Перышкин., Е. М. Гутник. Физика. 10 кл.: «Учеб. для общеобразоват. учеб. заведений – М.: Дрофа, 2002. И. Д. Помбрик, Н. А. Шевченко. Аэродинамика. Изд. третье, исправленное и дополненное. М., Военное издательство, 1972 – 96 с.: ДСП. Г. И. Светозарова. ОСНОВЫ ПРИКЛАДНОЙ ИНФОРМАТИКИ. Раздел: Описание языка Турбо-Бейсик. Справочное пособие. Приложение Приложение 1. REM полет тела REM построение координат SCREEN 9: x0 = 50 y0 = 300 x1 = 600 y1 = 100 x2 = 50 y2 = 300 REM координата Y LINE (x0, y0)-(x0, y1), 12 LOCATE 18, 4: PRINT “10” LOCATE 14, 4: PRINT “20” LOCATE 10, 4: PRINT “30” LINE (48, 245)-(52, 245), 11 LINE (48, 190)-(52, 190), 11 LINE (48, 135)-(52, 135), 11 REM координата X LINE (x0, y0)-(x1, y0), 12 LOCATE 23, 19: PRINT “50” LOCATE 23, 31: PRINT “100” LOCATE 23, 44: PRINT “150” LOCATE 23, 56: PRINT “200” LOCATE 23, 69: PRINT “250” LINE (150, 302)-(150, 298), 11 LINE (250, 302)-(250, 298), 11 LINE (350, 302)-(350, 298), 11 LINE (450, 302)-(450, 298), 11 LINE (550, 302)-(550, 298), 11 REM полет v = 50 g = 9.8 a = 30 f = a * 3.14 / 180 100 q = 1 t = t + q s = v * t * COS(f) * 2 h = (v * t * SIN(f) – (g * t ^ 2) / 2) * 5.5 LINE (x2, y2)-(x0 + s, y0 – h), 14 x2 = x0 + s y2 = y0 – h IF h < 0 THEN 200 GOTO 100 200 END END Приложение 2. REM ЯДРО 5 INPUT « Ввести угол стрельбы от 5 до 80 град»; a 7 IF a < 5 THEN 10 IF a > 80 THEN 20 GOTO 40 10 INPUT « Угол должен быть >=5»; a GOTO 7 20 INPUT « Угол должен быть <=80»; a GOTO 7 40 INPUT « Ввести дальность до цели от 200 до 5000 м»; l 45 IF l < 200 THEN 50 IF l > 5000 THEN 60 GOTO 70 50 INPUT « Расстояние до цели должно быть >=200»; l GOTO 45 60 INPUT « Расстояние до цели должно быть <=5000»; l GOTO 45 70 INPUT « Для выстрела нажать F1»; enter
REM построение координат SCREEN 9: x0 = 50 y0 = 300 x1 = 600 y1 = 50 x2 = 50 y2 = 300 REM координата Y LINE (x0, y0)-(x0, y1), 12 LOCATE 18, 4: PRINT “250” LOCATE 14, 4: PRINT “500” LOCATE 10, 4: PRINT “750” LOCATE 6, 4: PRINT “1000” LINE (48, 245)-(52, 245), 11 LINE (48, 190)-(52, 190), 11 LINE (48, 135)-(52, 135), 11 LINE (48, 80)-(52, 80), 11 REM координата X LINE (x0, y0)-(x1, y0), 12 LOCATE 23, 19: PRINT “1000” LOCATE 23, 31: PRINT “2000” LOCATE 23, 44: PRINT “3000” LOCATE 23, 56: PRINT “4000” LOCATE 23, 69: PRINT “5000” LINE (150, 302)-(150, 298), 11 LINE (250, 302)-(250, 298), 11 LINE (350, 302)-(350, 298), 11 LINE (450, 302)-(450, 298), 11 LINE (550, 302)-(550, 298), 11 REM ЦЕЛЬ LINE (x0 + l / 10, 299)-(x0 + l / 10 + 5, 299), 10 LINE (x0 + l / 10, 298)-(x0 + l / 10 + 5, 298), 10
80 KEY(1) ON ON KEY(1) GOSUB 90 GOTO 80 REM полет 90 v = 200 g = 9.8 f = a * 3.14 / 180 100 q = .0005 t = t + q s = v * t * COS(f) * 2 h = (v * t * SIN(f) – (g * t ^ 2) / 2) * 5.5
LINE (x2, y2)-(x0 + s / 20, y0 – h / 25), 14 x2 = x0 + s / 20 y2 = y0 – h / 25 IF h < 0 THEN 200 GOTO 100 200 REM взрыв r = 30 n = 500 REM: a угол разлета REM: r радиус разлета, n количество осколков REM: коэффициенты 0.5 и 1 определяют ширину и высоту разлета DIM x(n), y(n) RANDOMIZE (TIMER) FOR i = 1 TO n a = -6.28 * RND / 2 rn = r * RND xc = x2 + rn * .5 * COS(a) yc = y2 + rn * 1 * SIN(a) PSET (xc, yc), 9 + 9 * RND PRESET (x(i), y(i)) NEXT END Приложение 3 REM ЯДРО 5 INPUT " Ввести угол стрельбы от 5 до 80 град"; a 7 IF a < 5 THEN 10 IF a > 80 THEN 20 GOTO 40 10 INPUT " Угол должен быть >=5"; a GOTO 7 20 INPUT " Угол должен быть <=80"; a GOTO 7 40 INPUT " Ввести дальность до цели от 200 до 5000 м"; l 45 IF l < 200 THEN 50 IF l > 5000 THEN 60 GOTO 70 50 INPUT " Расстояние до цели должно быть >=200"; l GOTO 45 60 INPUT " Расстояние до цели должно быть <=5000"; l GOTO 45 70 INPUT " Для выстрела нажать F1"; enter
REM построение координат SCREEN 9: x0 = 50 y0 = 300 x1 = 600 y1 = 50 x2 = 50 y2 = 300 REM координата Y LINE (x0, y0)-(x0, y1), 12 LOCATE 18, 4: PRINT "250" LOCATE 14, 4: PRINT "500" LOCATE 10, 4: PRINT "750" LOCATE 6, 4: PRINT "1000" LINE (48, 245)-(52, 245), 11 LINE (48, 190)-(52, 190), 11 LINE (48, 135)-(52, 135), 11 LINE (48, 80)-(52, 80), 11 REM координата X LINE (x0, y0)-(x1, y0), 12 LOCATE 23, 19: PRINT "1000" LOCATE 23, 31: PRINT "2000" LOCATE 23, 44: PRINT "3000" LOCATE 23, 56: PRINT "4000" LOCATE 23, 69: PRINT "5000" LINE (150, 302)-(150, 298), 11 LINE (250, 302)-(250, 298), 11 LINE (350, 302)-(350, 298), 11 LINE (450, 302)-(450, 298), 11 LINE (550, 302)-(550, 298), 11
REM ЦЕЛЬ LINE (x0 + l / 10, 299)-(x0 + l / 10 + 5, 299), 10 LINE (x0 + l / 10, 298)-(x0 + l / 10 + 5, 298), 10 REM показания LOCATE 1, 6: PRINT "V m/s" LOCATE 2, 6: PRINT "H m" LOCATE 2, 24: PRINT "S m" LOCATE 1, 24: PRINT "T s" 80 KEY(1) ON ON KEY(1) GOSUB 90 GOTO 80 REM полет 90 v = 200 g = 9.8 f = a * 3.14 / 180 100 q = .01 t = t + q REM k коэффициент сопротивления воздуха k = .016 vs = v * COS(f) - (k - k / (k + v * COS(f))) vh = v * SIN(f) - (k - k / (k + v * SIN(f))) s = vs * t * 2 h = (vh * t - (g * t ^ 2) / 2) * 5.5 v = SQR(vs ^ 2 + vh ^ 2) LINE (x2, y2)-(x0 + s / 20, y0 - h / 25), 14 x2 = x0 + s / 20 y2 = y0 - h / 25 LOCATE 1, 12: PRINT v LOCATE 2, 12: PRINT h / 5.5 LOCATE 2, 28: PRINT s / 2 LOCATE 1, 28: PRINT t IF h < 0 THEN 200 GOTO 100 200 REM взрыв r = 30 n = 500 REM: a угол разлета REM: r радиус разлета, n количество осколков REM: коэффициенты 0.5 и 1 определяют ширину и высоту разлета DIM x(n), y(n) RANDOMIZE (TIMER) FOR i = 1 TO n a = -6.28 * RND / 2 rn = r * RND xc = x2 + rn * .5 * COS(a) yc = y2 + rn * 1 * SIN(a) PSET (xc, yc), 9 + 9 * RND PRESET (x(i), y(i)) NEXT END
Приложение 4 REM ЯДРО 5 INPUT " Ввести угол стрельбы от 5 до 80 град"; a 7 IF a < 5 THEN 10 IF a > 80 THEN 20 GOTO 40 10 INPUT " Угол должен быть >=5"; a GOTO 7 20 INPUT " Угол должен быть <=80"; a GOTO 7 40 INPUT " Ввести дальность до цели от 200 до 5000 м"; l 45 IF l < 200 THEN 50 IF l > 5000 THEN 60 GOTO 70 50 INPUT " Расстояние до цели должно быть >=200"; l GOTO 45 60 INPUT " Расстояние до цели должно быть <=5000"; l GOTO 45 70 INPUT " Для выстрела нажать F1"; enter INPUT " Для увеличения угла стрельбы нажать F2 "; enter INPUT " Для уменьшения угла стрельбы нажать F3 "; enter INPUT " Для остановки решения задачи нажать F5 "; enter
REM построение координат SCREEN 9: COLOR 1, 7: 72 x0 = 50 y0 = 300 x1 = 600 y1 = 50 x2 = 50 y2 = 300 REM координата Y LINE (x0, y0)-(x0, y1), 12 LOCATE 18, 4: PRINT "250" LOCATE 14, 4: PRINT "500" LOCATE 10, 4: PRINT "750" LOCATE 6, 4: PRINT "1000" LINE (48, 245)-(52, 245), 11 LINE (48, 190)-(52, 190), 11 LINE (48, 135)-(52, 135), 11 LINE (48, 80)-(52, 80), 11 REM координата X LINE (x0, y0)-(x1, y0), 12 LOCATE 23, 19: PRINT "1000" LOCATE 23, 31: PRINT "2000" LOCATE 23, 44: PRINT "3000" LOCATE 23, 56: PRINT "4000" LOCATE 23, 69: PRINT "5000" LINE (150, 302)-(150, 298), 11 LINE (250, 302)-(250, 298), 11 LINE (350, 302)-(350, 298), 11 LINE (450, 302)-(450, 298), 11 LINE (550, 302)-(550, 298), 11 REM ЦЕЛЬ LINE (x0 + l / 10, 299)-(x0 + l / 10 + 5, 299), 10 LINE (x0 + l / 10, 298)-(x0 + l / 10 + 5, 298), 10 REM показания REM a-угол стрельбы LOCATE 1, 6: PRINT "V m/s" LOCATE 2, 6: PRINT "H m" LOCATE 2, 24: PRINT "S m" LOCATE 1, 24: PRINT "T s" LOCATE 1, 45: PRINT "а" 78 t = 0 n = 0 b = 0 80 KEY(1) ON ON KEY(1) GOSUB 90
KEY(5) ON ON KEY(5) GOSUB 300 GOTO 80 REM полет
90 v = 200 g = 9.8 f = a * 3.14 / 180 100 q = .01 t = t + q REM k - коэффициент сопротивления воздуха k = .016 vs = v * COS(f) - (k - k / (k + v * COS(f))) vh = v * SIN(f) - (k - k / (k + v * SIN(f))) s = vs * t * 2 h = (vh * t - (g * t ^ 2) / 2) * 5.5 v = SQR(vs ^ 2 + vh ^ 2) LINE (x2, y2)-(x0 + s / 20, y0 - h / 25), 14 x2 = x0 + s / 20 y2 = y0 - h / 25 LOCATE 1, 12: PRINT v LOCATE 2, 12: PRINT h / 5.5 LOCATE 2, 28: PRINT s / 2 LOCATE 1, 28: PRINT t LOCATE 1, 46: PRINT a IF h < 0 THEN 200 GOTO 100 200 REM взрыв r = 20 n = 100 REM: b угол разлета REM: r радиус разлета, n количество осколков REM: коэффициенты 0.5 и 1 определяют ширину и высоту разлета DIM x(n), y(n) RANDOMIZE (TIMER) FOR i = 1 TO n b = -6.28 * RND / 2 rn = r * RND xc = x2 + rn * .5 * COS(b) yc = y2 + rn * 1 * SIN(b) PSET (xc, yc), 9 + 9 * RND PRESET (x(i), y(i)) NEXT ERASE x, y 210 KEY(2) ON ON KEY(2) GOSUB 220 KEY(3) ON ON KEY(3) GOSUB 230 KEY(1) ON ON KEY(1) GOSUB 72 GOTO 210 220 a = a + 1 LOCATE 1, 46: PRINT a GOTO 210 230 a = a - 1 LOCATE 1, 46: PRINT a GOTO 210 300 END
Популярное: Почему двоичная система счисления так распространена?: Каждая цифра должна быть как-то представлена на физическом носителе... Личность ребенка как объект и субъект в образовательной технологии: В настоящее время в России идет становление новой системы образования, ориентированного на вхождение... Почему человек чувствует себя несчастным?: Для начала определим, что такое несчастье. Несчастьем мы будем считать психологическое состояние... ©2015-2024 megaobuchalka.ru Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. (171)
|
Почему 1285321 студент выбрали МегаОбучалку... Система поиска информации Мобильная версия сайта Удобная навигация Нет шокирующей рекламы |