Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Порядок выполнения лабораторной работы. Пример 1.Найти решение следующей задачи Дирихле для уравнения Пуассона в прямоугольнике со сторонами и с числом разбиений M = 9 и N = 12 по осям х и у с






 

Пример 1. Найти решение следующей задачи Дирихле для уравнения Пуассона в прямоугольнике со сторонами и с числом разбиений M = 9 и N = 12 по осям х и у с точностью e = 0, 001:

.

1. Вносим размеры рассматриваемого прямоугольника: В2=" 1", В3=" 1, 5". Вносим число разбиений M = 9 и N = 12 осей разностной сетки: Е2=" 9", Е3=" 12". Вычисляем величины шагов hx и hу по осям разностной сетки: H2=" =B2/E2", H3=" =B3/E3". Вносим фиксированные значения функции на границе в соответствии с краевыми условиями: В5=" 10", D5=" 2", F5=" 15", H5=" 1".

Для всех внутренних точек разностной сетки вычислим значение правой части уравнения Пуассона , предварительно оформив заголовки таблицы, строк и столбцов: С9= " =1000*C$8*$H$2*$B9* $H$3" и протягиваем формулу в диапазон С9: J19.

Проводим линейную интерполяцию по строкам. Оформляем заголовки таблицы, строк и столбцов. Заполняем значения искомой функции в граничных узлах сетки: для левой границы - ячейка В23=" =$B$5" и протягиваем в диапазон В23: В33; для нижней границы – ячейка С22=" =$D$5" и протягиваем в диапазон С22: J22; для правой границы - ячейка К23=" =$F$5" и протягиваем в диапазон К23: К33; для верхней границы - ячейка С34=" =$H$5" и протягиваем в диапазон С34: J34. Для графической обработки результатов расчетов необходимо заполнить значения искомой функции в угловых узлах разностной сетки. Вычислим их, как среднее арифметическое в смежных узлах границы: ячейка В22=" =(B23+C22)/2", ячейка К22=" =(J22+K23)/2", ячейка К34=" =(J34+K33)/2", ячейка В34=" =(B33+C34)/2". Заполняем значения исходной функции во внутренних узлах расчетной области по формуле (9): ячейка С23=" =$B23+($K23-$B23)*C$21/$E$2" и протягиваем в диапазон C23: J33.

Проводим линейную интерполяцию по строкам. Отличие от предыдущей таблицы - в заполнении значений искомой функции во внутренних узлах по формуле (10). Поэтому можно скопировать диапазон А21: К34 в диапазон А36: К49 и внести следующие изменения: ячейка С38= " =C$37+(C$49-C$37)*$A38/$E$3" и протягиваем в диапазон C38: J48.

Вычисляем начальное приближение искомой функции по формуле (11). Копируем диапазон А36: К49 в диапазон А51: К64 и внести следующие изменения: ячейка С53=" =(C23+C38)/2" и протягиваем в диапазон C53: J63.

Вычисляем текущее приближение, равное в начале вычислений начальному приближению. Копируем диапазон А51: К64 в диапазон А66: К79 и внести следующие изменения: ячейка С68=" =С53" и протягиваем в диапазон C68: J78.

Вычисляем следующее приближение по формуле (8). Копируем диапазон А66: К79 в диапазон А81: К94 и внести следующие изменения: ячейка С83=" =($H$3^2*(B68+D68)+$H$2^2*(C67+C69)+C9*$H$2^2*$H$3^2)/2/ ($H$2^2+$H$3^2) " и протягиваем в диапазон C83: J93.

Используем диапазон ячеек А81: К94 в качестве исходных данных при построении диаграммы результатов расчета. Для представления распределения температуры на пластине в виде цветной диаграммы надо использовать тип Поверхность и вид Контурная диаграмма с соответствующим форматированием. Для более наглядного представления распределения температуры на пластине необходимо отформатировать легенду диаграммы, задав необходимые параметры вкладки Шкала.

Для очередной итерации необходимо скопировать данные для внутренних узлов разностной сетки из таблицы " Следующее приближение" в соответствующие узлы таблицы " Текущее приближение". Эта итерационная процедура выполняется до достижения заданной точности. Вручную выполнение этой процедуры занимает много времени. Поэтому автоматизируем ее с помощью макроса Visual Basic for Applications (VBA). Перед разработкой макроса зададим требуемое число итераций в ячейке С96 и вычислим максимальную погрешность полученного приближения по формуле (12): ячейка К96=" =МАКС(ABS((C83: J93)-(C68: J78)))". Здесь использована операция вычитания матриц, поэтому для ее выполнения необходимо разместить курсор в строке формул и нажать Ctrl+Shift+Enter. Ячейку К97 используем для вывода номера текущей итерации из разрабатываемого макроса.

Запуск макроса будем осуществлять с помощью Элемента управления Кнопка. Для этого активируем соответствующую панель инструментов: Вид - Панели инструментов – Элементы управления. На панели Элементы управления активируем кнопку Режим конструктора. Разместим элемент управления Кнопка в требуемом месте рабочего листа. Можно изменить надпись на кнопке, для чего необходимо на панели Элементы управления активировать кнопку Свойства. В раскрывшемся окне Properties изменить свойство Caption (надпись на кнопке). После двойного щелчка по кнопке происходит переход в редактор VBA, в котором сформирована пустая функция обработки события Click (щелчок по кнопке):

 

Private Sub CommandButton1_Click()

 

End Sub

 

Напишем следующий макрос:

 

Private Sub CommandButton1_Click()

Dim M1 As Object

Dim M2 As Object

Set M1 = Worksheets(" Задача Дирихле").Range(" C83: J93")

Set M2 = Worksheets(" Задача Дирихле").Range(" C68: J78")

k1 = Worksheets(" Задача Дирихле").Rows(96).Cells(3)

For k = 1 To k1

For n = 1 To 8

For m = 1 To 11

M2(m, n) = M1(m, n)

Next m

Next n

Worksheets(" Задача Дирихле").Rows(97).Cells(11) = k

Worksheets(" Задача Дирихле").Calculate

Next k

End Sub

 

Здесь принято, что рабочий лист имеет название Задача Дирихле. Операторы Dim объявляют объектовые переменные M1 и М2. Операторы Setсвязывают эти переменные с диапазонами рабочего листа: М1 связана с диапазоном C83: J93 значений функции во внутренних узлах разностной сетки для следующего приближения, М2 - с диапазоном C68: J78 значений функции во внутренних узлах разностной сетки для текущего приближения. После этого к ячейкам объектовых переменных можно обращаться, как к элементам массивов, где левой верхней ячейке соответствует элемент(1, 1). При этом все изменения элементов объектовых переменных отражаются в рабочем листе после отработки макроса или в процессе его работы при использовании метода Calculate.

Переменная k1 считывает из ячейки С96 заданное число итераций. Цикл по переменной k обеспечивает выполнений заданного числа итераций. В двойном цикле по переменным n и m происходит копирование данных для внутренних узлов разностной сетки из таблицы " Следующее приближение" (объектовая переменная М1) в соответствующие узлы таблицы " Текущее приближение" (объектовая переменная М2). Номер текущей итерации выводится в ячейку К97. Метод Calculate отражает изменения элементов объектовой переменной М1 на рабочем листе, что приводит к вычислению следующего приближения и изменению диаграммы.

Если после выполнения заданного числа итераций заданная точность не достигнута, то необходимо продолжить вычисления, выполнив макрос еще раз.

Отчет по лабораторной работе должен представлять собой распечатку рабочего листа MS Excel, который для рассматриваемого примера имеет вид, представленный на рисунке. Рекомендуется изучить зависимость реализуемых результатов при изменении исходных данных: краевых условий и правой части уравнения Лапласа.

 

Варианты

Найти решение задачи Дирихле для уравнения Пуассона в прямоугольнике с шагом разностной сетки по обоим координатным направлениям 0, 1:

1. a = 1, 2; b = 1, 0; f(x1 , x2 ) = 500 x1 x2; t1 = 1; t2 = 3; t3 = 10; t4 = 12.

2. a = 1, 1; b = 1, 0; f(x1 , x2 ) = 500(x1 + x2 ); t1 = 1; t2 = 3; t3 = 10; t4 = 12.

3. a = 1, 4; b = 1, 0; f(x1 , x2 ) = ; t1 = 1; t2 = 3; t3 = 10; t4 = 12.

4. a = 1, 5; b = 1, 0; f(x1 , x2 ) = ; t1 = 1; t2 = 3; t3 = 10; t4 = 12.

5. a = 1, 2; b = 1, 1; f(x1 , x2 ) = ; t1 = 1; t2 = 3; t3 = 10; t4 = 12.

6. a = 1, 2; b = 1, 2; f(x1 , x2 ) = ; t1 = 1; t2 = 3; t3 = 10; t4 = 12.

7. a = 1, 2; b = 1, 3; f(x1 , x2 ) = ; t1 = 1; t2 = 3; t3 = 10; t4 = 12.

8. a = 1, 2; b = 1, 4; f(x1 , x2 ) = ; t1 = 1; t2 = 3; t3 = 10; t4 = 12.

9. a = 1, 2; b = 1, 5; f(x1 , x2 ) = ; t1 = 1; t2 = 3; t3 = 10; t4 = 12.

10. a = 1, 1; b = 1, 5; f(x1 , x2 ) = ; t1 = 1; t2 = 3; t3 = 10; t4 = 12.

11. a = 1, 2; b = 1, 4; f(x1 , x2 ) =4; t1 = 1; t2 = 3; t3 = 10; t4 = 12.

12. a = 1, 3; b = 1, 3; f(x1 , x2 ) = ; t1 = 1; t2 = 3;

t3 = 10; t4 = 12.

13. a = 1, 4; b = 1, 2; f(x1 , x2 ) = ; t1 = 1; t2 = 3; t3 = 10; t4 = 12.

14. a = 1, 5; b = 1, 1; f(x1 , x2 ) = ; t1 = 1;

t2 = 3; t3 = 10; t4 = 12.

15. a = 1, 1; b = 1, 1; f(x1 , x2 ) = ; t1 = 1;

t2 = 3; t3 = 10; t4 = 12.

16. a = 1, 2; b = 1, 2; f(x1 , x2 ) = ; t1 = 1; t2 = 3;

t3 = 10; t4 = 12.

17. a = 1, 1; b = 1, 3; f(x1 , x2 ) = ; t1 = 1; t2 = 3;

t3 = 10; t4 = 12.

18. a = 1, 2; b = 1, 4; f(x1 , x2 ) = ; t1 = 1; t2 = 3;

t3 = 10; t4 = 12.

19. a = 1, 1; b = 1, 5; f(x1 , x2 ) = ; t1 = 1; t2 = 3; t3 = 10; t4 = 12.

20. a = 1, 2; b = 1, 0; f(x1 , x2 ) = ; t1 = 1; t2 = 3; t3 = 10; t4 = 12.

21. a = 1, 4; b = 1, 1; f(x1 , x2 ) = ; t1 = 1; t2 = 3; t3 = 10; t4 = 12.

22. a = 1, 4; b = 1, 2; f(x1 , x2 ) = ; t1 = 1; t2 = 3; t3 = 10; t4 = 12.

23. a = 1, 5; b = 1, 3; f(x1 , x2 ) = ; t1 = 1; t2 = 3; t3 = 10; t4 = 12.

24. a = 1, 5; b = 1, 0; f(x1 , x2 ) = ; t1 = 1; t2 = 3; t3 = 10; t4 = 12.

 

 







© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.