Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Информатика. Практикум

.pdf
Скачиваний:
1
Добавлен:
24.11.2025
Размер:
5.18 Mб
Скачать

Символ 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