Информатика. Практикум
.pdfСимвол 8. Открытие цикла с параметром J = 1; 11 для перебора координат по оси x заданной области (пребор столбцов области).
Символ 9. Вычисление значения температуры клетки с координатами (I, J) в начальный момент времени.
Символ 10. Присвоение элементу массива T[I, J] значения Tn1. Символ 11. Присвоение элементу массива T[I, J] значения Tn2. Символ 12. Присвоение переменной текущего времени расчета
TCurr значения dt.
Символ 13. Проверка условия, что текущее время (TCurr) не превышает конечное время расчета (TCalc). Если условие верно, то выполняется символ 14, если нет – символ 25.
Символ 14. Открытие цикла с параметром I = 2; 14 для перебора координат по оси y заданной области (перебор строк области).
Символ 15. Открытие цикла с параметром J = 1; 10 для перебора координат по оси x заданной области (перебор столбцов области).
Символ 16. Определение типа материала клетки с координатами (I, J). Проверка условия равенства значения элемента Tip[I, J] единице. Если условие верно, то выполняется символ 17, если нет –
символ 18. |
|
|
|
|
|
|
|
|
Символ 17. |
Вычисление |
значения |
коэффициента |
А |
для |
типа |
1 |
клетки с координатами (I, J). |
|
|
|
|
||
|
Символ 18. |
Вычисление |
значения |
коэффициента |
А |
для |
типа |
2 |
клетки с координатами (I, J). |
|
|
|
|
||
Символ 19. Вычисление значения температуры в клетке с координатами (I, J) в момент времени TCurr по формуле (3.1).
Символ 20. Открытие цикла с параметром I = 1; 15 для перебора координат по оси y заданной области (перебор строк области).
Символ 21. Открытие цикла с параметром J = 1; 11 для перебора координат по оси x заданной области (перебор столбцов области).
Символ 22. Присвоение элементу массива T[I, J] значения элемента массива Temp[I, J].
Символ 23. Вывод элементов массива T на экран. Вывод значений производится с организацией внешнего цикла для перебора строк массива T и внутреннего цикла для перебора столбцов (табл. П 1.13), на схеме для упрощения это показано в одном символе.
Символ 24. Приращение переменной текущего времени расчета (TCurr) на значение шага по времени (dt).
Символ 25. Конец алгоритма.
171
Программа
Program PartDeriv;
Uses Crt;
Var
f : Text;
T, tip, Temp : Array [1..15, 1..11] of Real; TCurr, TCalc, A : Real;
L1, L2, C1, C2, R1, R2, Tn1, Tn2, dx, dt : Real;
I, J : Integer; |
|
Begin |
{начало раздела операторов программы} |
ClrScr; |
{очистка экрана} |
Assign(f,'tip.txt'); Reset(f); {открытие файла tip.txt}
{чтение расположения типов клеток области из файла tip.txt} for I:=1 to 15 do
Begin |
{начало цикла 1} |
for J:=1 to 11 do Read(f, Tip[I, J]); |
|
Readln(f); |
{переход на след. строку в файле} |
end; |
{конец цикла 1} |
Close(f); |
{закрытие файла tip.txt} |
Assign(f,'dat.txt'); Reset(f); {открытие файла dat.txt}
{чтение физических параметров области из файла dat.txt}
Read(f, C1); |
Readln(f, C2); |
{значения теплоемкостей} |
|
Read(f, R1); |
Readln(f, R2); |
{значения плотностей} |
|
Read(f, L1); |
Readln(f, L2); |
{значения теплопроводностей} |
|
{значения шагов по пространству и по времени} |
|||
Read(f, dx); |
Readln(f,dt); |
|
|
Readln(f, TCalc); |
{значение времени расчета} |
||
Read(f, Tn1); Readln(f, Tn2); {значения начальных температур} Close(f); {закрытие файла dat.txt}
{расчет} {температуры клеток области в начальный момент времени} for I:=1 to 15 do
for J:=1 to 11 do
If Tip[I, J]=1 Then T[I, J]:= Tn1 Else T[I, J]:=Tn2;
TCurr:= dt; |
|
While TCurr <= TCalc do |
|
Begin |
{начало цикла 2} |
ClrScr; |
{очистка экрана} |
for I:=2 to 14 do |
|
for J:=2 to 10 do |
{начало цикла 4} |
Begin |
{начало цикла 5} |
If Tip[I, J] = 1 Then A:= L1/(C1*R1) |
|
|
Else A:= L2/(C2*R2); |
{температура в клетке (I,J) в след. момент времени}
Temp[I, J]:=T[I, J]+A*dt*(T[I+1, J] + T[I, J+1] –
172
4*T[I, J] + T[I-1, J] + T[I, J-1])/(dx*dx); |
|
end; |
{конец циклов 4, 5} |
for I:=2 to 14 do |
|
for J:=2 to 10 do T[I, J]:= Temp[I, J]; |
|
{вывод массива значений температур Т на экран} |
|
for I:=1 to 15 do |
|
Begin |
{начало цикла 6} |
{вывод строки температур}
for J:=1 to 11 do Write(' ',T[I, J]:6:1);
Writeln(' '); |
{переход на следующую строку} |
end; |
{конец цикла 6} |
Writeln('Время ', TCurr:7:5, ' Осталось итераций ',
Trunc((TCalc-TCurr)/dt):10);
Writeln('Нажмите клавишу Enter');
TCurr:= TCurr + dt; |
{приращение переменной времени} |
|
Readln; |
{ожидание нажатия клавиши Enter} |
|
end; |
{конец |
цикла 2 – While} |
End. |
{конец |
программы} |
Результат работы программы
Файл dat.txt:
519 343
1600 8900
44.4 110
0.002 0.00005
0.1
100 1100
Поле температур после окончания расчета:
100.0 100.0 100.0 100.0 100.0 100.0 100.0 100.0 100.0 100.0 100.0
100.0 109.4 128.2 161.6 200.4 217.1 200.4 161.6 128.2 109.4 100.0
100.0 123.9 171.0 255.2 354.0 396.6 354.0 255.2 171.0 123.9 100.0
100.0 144.2 229.1 379.0 563.0 641.8 563.0 379.0 229.1 144.2 100.0
100.0 167.0 288.0 488.3 719.0 815.5 719.0 488.3 288.0 167.0 100.0
100.0 193.4 349.6 584.2 821.1 914.2 821.1 584.2 349.6 193.4 100.0
100.0 219.8 409.8 676.7 900.1 979.2 900.1 676.7 409.8 219.8 100.0
100.0 231.0 435.1 715.3 930.5 1002.7 930.5 715.3 435.1 231.0 100.0
100.0 219.8 409.8 676.7 900.1 979.2 900.1 676.7 409.8 219.8 100.0
100.0 193.4 349.6 584.2 821.1 914.2 821.1 584.2 349.6 193.4 100.0
100.0 167.0 288.0 488.3 719.0 815.5 719.0 488.3 288.0 167.0 100.0
100.0 144.2 229.1 379.0 563.0 641.8 563.0 379.0 229.1 144.2 100.0
100.0 123.9 171.0 255.2 354.0 396.6 354.0 255.2 171.0 123.9 100.0
100.0 109.4 128.2 161.6 200.4 217.1 200.4 161.6 128.2 109.4 100.0
100.0 100.0 100.0 100.0 100.0 100.0 100.0 100.0 100.0 100.0 100.0
173
4. ВЫЧИСЛИТЕЛЬНЫЕ ТЕХНОЛОГИИ РЕШЕНИЯ ЗАДАЧ В MS EXCEL
4.1. Решение системы линейных уравнений матричным методом
Задача 4.1. Решить систему линейных уравнений с помощью матричного метода. Систему линейных уравнений сформировать на основе заданного закона, определяющего коэффициенты при неизвестных. Принять, что число неизвестных системы равно четырем. Коэффициенты системы задаются по закону
aij |
2 cos(i |
j) при i |
j; |
(4.1) |
|
3sin(i |
j) при i |
j; |
|||
|
|
||||
|
c tg(i |
5) i2 . |
|
(4.2) |
|
|
i |
|
|
|
Решение задачи
Система уравнений с четырьмя неизвестными имеет вид
a11x1 |
a12 x2 |
a13x3 |
a14 x4 |
c1, |
|
|
a21x1 |
a22 x2 |
a23x3 |
a24 x4 |
c2 , |
(4.3) |
|
a31x1 |
a32 x2 |
a33x3 |
a34 x4 |
c3, |
||
|
||||||
a41x1 |
a42 x2 |
a43x3 |
a44 x4 |
c4. |
|
Используя уравнения (4.1) и (4.2), вычислим значения некоторых коэффициентов системы линейных уравнений:
a11 = 2cos(1 + 1) при 1 = 1; a12 = 2cos(1 + 2) при 1 < 2; a21 = 3sin(2 + 1) при 2 > 1; с1 = tg(1 + 5) + 12.
174
Алгоритм решения
Решим систему линейных уравнений (4.3) с помощью матричных операций. Для этого представим коэффициенты системы линейных уравнений (4.3) в виде матрицы коэффициентов А4 4, а свободные члены линейных уравнений (4.3) – в виде вектора С4 1. Корни системы уравнений (4.3) х1, х2, х3, х4 будут представлены как вектор неизвестных Х4 1.
При формировании матрицы коэффициентов А4 4 и вектора свободных членов уравнений С4 1 можно использовать дополнительные матрицы А1 и А2. Дополнительные матрицы А1 и А2 формируются соответственно из индексов строк и столбцов матрицы А размером 4 4.
Шаг 1. Вначале сформируем матрицу А4 4, элементы которой найдем из соотношения (4.1) с помощью встроенной логической функции ЕСЛИ(), используя дополнительные матрицы А1 и А2. Для этого создадим дополнительные матрицы А1 и А2 и активизируем левую верхнюю ячейку из диапазона ячеек, который будет занимать матрица А4 4. Затем в строке меню выберем команду Вставка функции и в открывшемся окошке Мастер функций выберем логическую функцию ЕСЛИ() (рис. 4.1). Любую встроенную функцию можно вы-
брать в разделе Категория из списка Полного алфавитного перечня.
Рис. 4.1
175
Шаг 2. В диалоговом окне функции ЕСЛИ() заполним поля Ло-
гическое_выражение, Значение_если_истина и Значение_если_ложь.
Запишем в них условие (4.1), используя адреса левых верхних ячеек дополнительных матриц А1 и А2 (рис. 4.2). Ввод формулы завершим, нажав клавишу ОК.
Рис. 4.2
Шаг 3. Скопируем полученное соотношение во все ячейки формируемой матрицы А4 4 или с помощью операции копирования, или перетаскивая маркер заполнения (рис. 4.3).
Рис. 4.3
Шаг 4. Сформируем вектор С4 1, элементы которого вычислим по соотношению (4.2) с помощью встроенных математических функций. Для этого в строке меню выберем команду Вставка функции и в открывшемся окошке Мастер функций выберем математическую функцию TAN() (рис. 4.4). В открывшемся диалоговом
176
окне функции TAN() в поле Число запишем аргумент тангенса (i+5) (рис. 4.5). В данном случае за i возьмем верхнюю ячейку первого столбца матрицы А4 4. Завершим ввод функции tg, нажав ОК. Ещё раз зайдем в ячейку с формулой и дополним её слагаемым i2, применив ссылку на верхнюю ячейку первого столбца матрицы А4×4. Скопируем полученное соотношение во все ячейки формируемой матрицы-вектора С4 1, используя данные первого столбца матрицы
А4 4 (рис. 4.6).
Рис. 4.4
Рис. 4.5
177
Рис. 4.6
Шаг 5. Систему уравнений (4.3) можно записать в матричном виде: АХ = С. Чтобы найти вектор Х4 1, необходимо обе части получен-
ного уравнения умножить на матрицу A 1 |
, обратную матрице А4 4: |
4 |
|
АХА–1 = СА–1. Умножение матрицы А на обратную ей матрицу А–1 приводит к получению единичной матрицы: Х = СА–1. Чтобы найти
матрицу A4 1 , используем функцию массива МОБР(). Для этого
выделим группу ячеек, в которых должна разместиться обратная матрица (рис. 4.7), и активизируем последовательно команды Вставка функции → МОБР (рис. 4.8). Зайдя в диалоговое окно МОБР(), внесем координаты матрицы А4 4 в поле Массив (рис. 4.9). Для завершения действия с функцией МОБР() нажимаем одновременно комбинацию клавиш Ctrl+Shift+Enter (рис. 4.10).
Рис. 4.7
178
Рис. 4.8
Рис. 4.9
Рис. 4.10
179
Шаг 6. Найдем вектор неизвестных Х, умножив обратную матрицу А–1 на вектор С: Х = СА–1. Для этого выделим группу ячеек, в которых должен разместиться вектор неизвестных (рис. 4.11), и активизируем последовательно команды Вставка функции → МУМНОЖ (рис. 4.12). В диалоговом окне функции МУМНОЖ с помощью блока выбора значений выделим последовательно матрицу А–1 и матрицу-вектор С и заполним поля Массив1 и Массив2 или просто запишем их координаты (рис. 4.13).
Рис. 4.11
Рис. 4.12
180
