Dim v0, h0, D, a, L As Double
Моделирование физических процессов.
Рассмотрим процесс решения задачи на конкретном примере:
Тело брошено с некоторой высоты с начальной скоростью, направленной под углом к горизонту. Определить угол при котором дальность полета будет максимальной.
На первом этапе обычно строится описательная информационная модель объекта или процесса. В нашем случае с использованием физических понятий создается идеализированная модель движения объекта. Из условия задачи можно сформулировать следующие основные предположения:
1) тело мало по сравнению с Землей, поэтому его можно считать материальной точкой;
2) скорость бросания тела мала, поэтому:
— ускорение свободного падения считать постоянной величиной;
— сопротивлением воздуха можно пренебречь.
На втором этапе создается формализованная модель, т. е. описательная информационная модель записывается с помощью какого-либо формального языка.
Из курса физики известно, что описанное выше движение является равноускоренным. При заданных начальной скорости (v0), начальной высоте (h0), угле бросания зависимость дальности полета (L) можно описать следующими математическими формулами:
Зависимость координат от времени:
отсюда:
Получаем квадратное уравнение:
Решаем это уравнение:
Дальность полета найдем по формуле:
На третьем этапе необходимо формализованную информационную модель преобразовать в компьютерную на понятном для компьютера языке. Существуют два принципиально различных пути построения компьютерной модели:
|
|
· создание алгоритма решения задачи и его кодирование на одном из языков программирования;
· формирование компьютерной модели с использованием одного из приложений (электронных таблиц, СУБД и т. д.).
Для реализации первого пути надо построить алгоритм и закодировать его на одном из языков программирования, например, на языке Visual Basic.
В программе используются две константы:
Const PI = 3.14159265
Const g = 9.8
Дальность полета, если известны начальные данные, можно определить так:
D = (2 * v0 * Sin(a * (PI / 180))) ^ 2 + 4 * g * 2 * h0
t1 = (2 * v0 * Sin(a * (PI / 180)) + Sqr(D)) / (2 * g)
t2 = (2 * v0 * Sin(a * (PI / 180)) - Sqr(D)) / (2 * g)
Корень t2 не удовлетворяет нашей задаче. Значит время полета - это t1.
L = v0 * Cos(a * (PI / 180)) * t1
Определить искомый угол можно используя следующий алгоритм:
aa = 0 'искомый угол
maxL = 0 'максимальная дальность полета
For a = 0 To 90
D = (2 * v0 * Sin(a * (PI / 180))) ^ 2 + 4 * g * 2 * h0
t1 = (2 * v0 * Sin(a * (PI / 180)) + Sqr(D)) / (2 * g)
L = v0 * Cos(a * (PI / 180)) * t1
If L >= maxL Then
maxL = L
aa = a
End If
Next
Теперь создадим проект, позволяющий не только определить искомый угол, но и построить график движения тела.
Создайте новый стандартный проект и разместите на форме все необходимые компоненты, установите их свойства.
|
|
Объект | Свойство | Значение | ||
Форма | имя | frmFlight | ||
Caption | Движение тела | |||
Frame | Caption | Начальные данные: | ||
Frame | Caption | Масштаб: | ||
Label (надпись) | Caption | Высота (м): | ||
Label (надпись) | Caption | Скорость (м/с): | ||
Label (надпись) | Caption | Угол (град): | ||
Label (надпись) | Caption | Макс. дальность достигается при угле: | ||
Label (надпись) | Caption | Максимальная дальность: | ||
Label (надпись) | Caption | Минимальное значение X: | ||
Label (надпись) | Caption | Минимальное значение Y: | ||
Label (надпись) | Caption | Максимальное значение X: | ||
Label (надпись) | Caption | Максимальное значение Y: | ||
Текстовое поле | имя | txtH0 | ||
Text | 0 | |||
Текстовое поле | имя | txtV0 | ||
Text | 0 | |||
Текстовое поле | имя | txtA0 | ||
Text | 0 | |||
Текстовое поле | имя | txtMinX | ||
Text | ( пустая строка) | |||
Текстовое поле | имя | txtMaxX | ||
Text | ( пустая строка) | |||
Текстовое поле | имя | txtMinY | ||
Text | ( пустая строка) | |||
Текстовое поле | имя | txtMaxY | ||
Text | ( пустая строка) | |||
Кнопка | имя | cmdCalculate | ||
Caption | Вычислить угол | |||
Кнопка | имя | cmdPaint | ||
Caption | Построить график | |||
Кнопка | имя | cmdClear | ||
Caption | Очистить | |||
Кнопка | имя | cmdNewScale | ||
Caption | Задать масштаб | |||
Графическом поле (PictureBox)
| имя | picGrafic | ||
Appearance | 0-плоская | |||
AutoRedraw | true |
Напишем код проекта.
В разделе "General" опишем некоторые переменные и константы:
Dim v0, h0, D, a, L As Double
Дата добавления: 2022-06-11; просмотров: 16; Мы поможем в написании вашей работы! |
Мы поможем в написании ваших работ!