Задание 2. Модель центрального, абсолютно упругого удара
Постановка задачи.
Разработать модель центрального, абсолютного упругого удара двух шариков. Из курса физики известно, что при таком ударе двух тел массой M1 и M2, движущихся со скоростями V1 и V2, соответственно, выполняются законы сохранения импульса:
и закон сохранения энергии:
где U1 и U2 – скорости тел после соударения.
Совместное решение этих двух уравнений позволяет определить сначала значение скорости U1:
а затем и U2:
U2 = V1 + U1 – V2.
Используя эти соотношения, построить модель движения шариков в замкнутом объеме. Шарики имеют определенные начальные скорости и при соударении друг с другом меняют их в соответствии с вышеприведенными формулами. Для того, чтобы соударения происходили многократно, движения шариков ограничены боковыми стенками, при ударе о которые, шарики изменяют свою скорость по направлению, сохраняя ее по величине.
Ход работы.
1. Переименуйте Лист2 в «Упругий удар».
2. Заполните ячейки A1:F2, как на Рис.20.4.
3. В ячейке A5 запишите формулу: «=A1», а в ячейке C5 – «=C1».
4. В ячейке G2 введите формулу, вычисляющую разность между начальным и конечным положением шариков: «=F2 – E2»
5. В ячейках B5 и D5 будет показываться местоположение шариков, вычисляемое в программном коде. Сейчас введите сюда значения из ячеек E2 и F2 (Рис.20.5).
6. В ячейке A4 введите пояснение «1 шар», в ячейке C4 – «2 шар» (Рис.20.5).
Теперь необходимо построить диаграмму таким образом, чтобы получить на ней изображение обоих шариков, положение которых будет зависеть:
· от координат X, находящихся в ячейках B5 и D5;
· от координат Y, равных 2;
· от размеров, зависящих от массы (A5 и C5). Для этого:
7. Выделите диапазон ячеек A5:D5.
8. С помощью Мастера диаграмм выберите тип диаграммы – «Пузырьковая».
9. На шаге 2 построения диаграммы укажите источник данных рядов – «в строках» и перейдите на вкладку «Ряд».
10. Для значения ряда «Ряд 1» установите следующие параметры (Рис.20.6):
· Значения X: = Лист2!$B$5
· Значения Y: = {2}
· Размеры: = Лист2!$A$5
11. Нажмите кнопку «Добавить» под окном «Ряд».
12. Для значения ряда «Ряд 2» установите следующие параметры (Рис.20.7):
· Значения X: = Лист2!$D$5
· Значения Y: = {2}
· Размеры: = Лист2!$C$5
13. В следующем окне, на Шаге 3, уберите легенду и ось значений Y.
14. Введите название диаграммы – «Модель абсолютно упругого удара».
15. Расположите диаграмму на имеющемся листе и настройте ее по своему вкусу.
16. Установите для оси X (подведя курсор мыши к линии OX, щелкнув правой клавишей мыши и выбрав в контекстном меню команду «Формат оси») минимальное и максимальное значение шкалы соответственно 0 и 10, отказавшись от режима «Авто» для этих параметров. Примерный результат – на Рис.20.8.
17. Расположите на Листе «Упругий удар» элемент управления – командную кнопку CommandButton1 (Рис.20.9) и измените ее свойства:
· Caption = «Старт»
· Font, BackColor – по своему усмотрению
18. Напишем следующий программный код для щелчка по кнопке (необходимые комментарии приведены после знака апострофа):
Private Sub CommandButton1_Click()
'получим начальные координаты шариков
xx1 = Cells(2, 5) ' из ячейки E2
xx2 = Cells(2, 6) 'из ячейки F2
'начальные скорости обозначим через dx1 и dx2
'Координату шарика через промежуток времени t
'будем вычислять по известной формуле X=Xo+V*t
'Если t=1/10, тогда dx = v/10. Отсюда:
dx1 = Cells(2, 2) / 10
dx2 = Cells(2, 4) / 10
'Передадим начальные в координаты в текущие, используемые для вычисления
x1 = xx1
x2 = xx2
m1 = Cells(2, 1) 'получим массы шариков из ячеек A2
m2 = Cells(2, 3) 'и С2
'Рассчитаем цикл на 100 раз, принимая то,
'что увеличение счетчика на 1 - это увеличение
'времени на 1/10 с, т.е. в течение 10 условных секунд
For i = 1 To 100
'Первый шарик не должен улететь налево, т.е. если он
'приблизился к левой стенке (координата 0), его скорость
'должна поменяться по знаку, а чтобы шарик не "влипал" в стенку,
'запретим приближаться к ней ближе, чем на 0,5
If x1 <= 0.5 Then dx1 = Abs(x1)
'Для второго шарика "опасна" правая стенка с координатой 10,
'и учетом "влипания" получаем 9,5
If x2 >= 9.5 Then dx2 = -1 * Abs(dx2)
'Если первый шарик (левый) приблизился ко второму менее,
'чем на 1 (размеры шариков), то скорости шариков меняются
'в соответствии с формулами
If x1 >= x2 - 1 Then
a = dx1 ' - это скорость V1 перед ударом
dx1 = (dx1 * (m1 - m2) + 2 * dx2 * m2) / (m1 + m2) ' - это U1
dx2 = a + dx1 - dx2 ' - это U2
End If
'находим новое местоположение шариков
x1 = x1 + dx1
x2 = x2 + dx2
'отправим эти значения в таблицу, чтобы изменилась диаграмма
Cells(5, 2) = x1
Cells(5, 4) = x2
'Выполнить описанные команды, произвести перерасчет
'в соответствии с новыми данными, и перестроить диаграмму
DoEvents
'завершим цикл
Next i
Дата добавления: 2015-06-12; просмотров: 1265;