Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
3-Численные методы.doc
Скачиваний:
10
Добавлен:
22.08.2019
Размер:
3.31 Mб
Скачать

Порядок выполнения лабораторной работы.

Пример. Численно решить уравнение колебаний струны длиной l = 1 c шагом h = 0,05 на m=200 временных шагов:

при следующих исходных данных:

;

1. Решим задачу а). Введем исходные данные для расчета: а2 - ячейка В3="1", h - ячейка В5="0,05", вычисляем шаг по времени - ячейка В4="B5/2/КОРЕНЬ(B3)", вычисляем параметр по формуле (8) – ячейка В6="B3*B4^2/B5^2". При выборе шага по времени необходимо учитывать, что условие (17) Куранта выполняется на гладких решениях, поэтому при вычислениях необходимо выбирать более мелкий шаг, чем разрешенный по условию (17) В частности, в приведенном примере в ячейке B4 использована формула , то есть выбран шаг по временной координате в 2 раза меньший, чем разрешенный условием Куранта.

В процессе вычислений необходимо определение правой части уравнения, краевых и начальных условий. Так как разработанный алгоритм необходимо применять несколько раз для различных исходных данных, то целесообразно эти величины вычислять с помощью функций пользователя, написанных в виде макросов в среде Visual Basic for Applications (VBA). Для этого войдем в редактор VBA через главное меню MS Excel – Сервис-Макрос-Редактор Visual Basic. В раскрывшемся окне через главное меню вставить новый модуль – Insert-Module (Вставка-Модуль). Ввести макрос следующего содержания:

Const pi = 3.1415926

Function f(x, t)

f = 0

End Function

Function fi(x)

fi = 0.7 * Sin(pi * x)

End Function

Function ksi(x)

ksi = 2 * x ^ 2

End Function

Function un(t)

un = 0

End Function

Function uk(t)

uk = 0

End Function

В первой инструкции вводится именованная переменная, определяющая число . Пользовательские функции макроса определяют заданные исходные данные: функция f(x, t) – правую часть дифференциального уравнения, функция fi(x) – начальное перемещение (х), функция ksi(x) – начальную скорость (х), функция un(t) – краевое условие для левой границы струны un(t) , функция uk(t) - краевое условие для правой границы струны uk(t) .

В строке 8 задаем координаты узлов разностной сетки по координате х: ячейка В8="0", ячейка С8="=B8+$B$5" и протягиваем формулу до ячейки V8. В столбце А задаем координаты узлов разностной сетки по координате t: ячейка А9="0", ячейка А10="=A9+$B$4" и протягиваем формулу до ячейки А209.

В столбце В задаем краевое условие для левой границы струны un(t): ячейка В9="=un(A9)" и протягиваем формулу до ячейки В209. В столбце V задаем краевое условие для правой границы струны uk(t): ячейка V9="=uk(A9)" и протягиваем формулу до ячейки V209.

В строке 9 задаем начальное перемещение (х): ячейка С9="=fi(C8)" и протягиваем формулу до ячейки U9. В строке 10 вычисляем по формуле (15) распределение перемещений струны на первом временном слое: ячейка С10= "=C9+$B$4*ksi(C8)" и протягиваем формулу до ячейки U10. Вычисляем распределение перемещений на остальных временных слоях по формуле (9): ячейка С11="=-C9+$B$6*B10+(2-2*$B$6)*C10+$B$6*D10+ $B$4^2 *f(C$8;$A11)" и протягиваем формулу на диапазон C9:U209. Следует обратить внимание на правильную абсолютную адресацию ячеек C$8 и $A11. В полученной таблице содержится решение задачи.

Представим решение задачи в виде диаграммы, выбрав в качестве Значений Х диапазон B8:V8, а в качестве Значений Y для 4-х рядов данных распределения перемещений струны в 4 момента времени, распределенные по исследуемому интервалу времени примерно одинаково, начиная с начального момента времени. В рассматриваемом примере выбраны диапазоны B9:V9, B69:V69, B129:V129, B189:V189, соответствующие моментам времени 0; 1,5; 3; 4,5. Выбирается тип диаграммы "Точечная", вид "Точечная диаграмма со значениями, соединенными сглаживающими линиями без маркеров" с соответствующим форматированием. Вид рабочего листа Расчет приведен на рисунке.

Для отображения динамики колебания струны используем новый рабочий лист Динамика, в ячейку которого А1 скопируем диапазон B8:V9 рабочего листа Расчет. По этим данным построим Точечную диаграмму со значениями, соединенными сглаживающими линиями без маркеров с соответствующим форматированием. В частности параметры осей целесообразно выбрать такими же, как и у диаграммы на рабочем листе Расчет. Таким образом, построено распределение перемещений в начальный момент времени. Для динамичного отражения распределения перемещений в другие моменты времени разместим на рабочем листе Динамика элемент управления Кнопка, для которой напишем следующий макрос обработки события Click (Щелчок):

Private Sub CommandButton1_Click()

Dim R As Object

Dim D As Object

Set R = Worksheets("Расчет").Range("B9:V209")

Set D = Worksheets("Динамика").Range("A2:U2")

For i = 1 To 201

For j = 1 To 21

D(1, j) = R(i, j)

Next j

Start = Timer

Do While Timer < Start + 0.2

Loop

Worksheets("Динамика").Calculate

Next i

End Sub

В макросе по аналогии с предыдущими лабораторными работами вводятся объектовые переменные, предназначенные для копирования распределения перемещений на текущем временном слое из рабочего листа Расчет в диапазон Значения Y диаграммы на рабочем листе Динамика. Используется цикл Do WhileLoop для организации задержки между кадрами. Вид рабочего листа Динамика для одного из промежуточных временных слоев приведен на рисунке.

2. Решим задачу б) В разработанном в п.1 алгоритме расчета для решения задачи достаточно исправить формулы в пользовательских функциях. В данном случае макрос пользовательских функций имеет вид:

Const pi = 3.1415926

Function f(x, t)

f = 0

End Function

Function fi(x)

fi = 0

End Function

Function ksi(x)

ksi = 0

End Function

Function un(t)

un = 0.3 * Sin(10 * pi * t)

End Function

Function uk(t)

uk = 0.1 * Sin(5 * pi * t)

End Function

После корректировки макроса надо щелкнуть на элемент управления Кнопка на рабочем листе Динамика и наблюдать колебания струны. На рабочем листе Расчет на диаграмме выведены начальное и промежуточные положения струны в заданные моменты времени. Вид диаграммы приведен на рисунке.

Отчет по лабораторной работе должен содержать тексты макросов, распечатки рабочих листов с диаграммами.