Содержание Назад

1 MAIN PART Gauss.
         ! Программа решения системы линейных
        ! уравнений методом Гаусса-Жордана
        ! Основной раздел
2 BEGIN
3       INDEX k,l.
4       is : (k=1..n).
5       js : (l=1..n).
6       ijs : (is; js).
7       VARIABLE a DEFINED ON ijs.
8       VARIABLE b, x DEFINED ON is.
9       INPUT a(FILE='gauss') ON ijs,
10                   b(FILE='gauss') ON is.
11       DOMAIN PARAMETERS n=4.
12       COMPUTE Calculate(a ON ijs, b ON is RESULT x ON is).
13       OUTPUT x(FILE='gauss.out',TAB(10),'Решение X=',STR(1)) ON is.
14 END PART.
   
15 PART Calculate.
16       a,b RESULT x
        ! Раздел вычислений
17 BEGIN
18       INDEX i,j
19       so : (ts: (t=1..n); ijs: (is: (i=1..n); js: (j=1..n))).
20       s1o:(ts;is). s:so/ts-LEFT(1). s1:s1o/t=2..n.
21       VARIABLE a DEFINED ON ijs.
22       VARIABLE b, x DEFINED ON is.
23       VARIABLE m DEFINED ON so.
24       VARIABLE r DEFINED ON s1o.
25       DOMAIN PARAMETERS n=4.
26       DISTRIBUTION INDEX i=2..8, j=1.
27       FOR so/t=1 ASSUME m=a.
28       FOR s1o/t=1 ASSUME r=b.
29       sa,sb:s/i=t. sa1,sb1:s1/i=t.
30       FOR sa ASSUME m = m[t-1,i=t] / m[t-1,i=t,j=t].
31       FOR sa1 ASSUME r = r[t-1,i=t] / m[t-1,i=t,j=t].
32       FOR sb ASSUME m = m[t-1] - m[t-1,j=t] * m[i=t].
33       FOR sb1 ASSUME r = r[t-1] - m[t-1,j=t] * r[i=t].
34       FOR is ASSUME x = r[t=n].
35 END PART.

 

Рассмотрим эту программу более подробно (используемые ниже номера совпадают с нумерацией строк программы).

(1) Заголовок главного раздела программы Gauss.

(2) Начало главного раздела.

(3) Описание индексов областей.

(4-6) Определяются одномерные области is, js и многомерная область ijs, на которых определены начальные данные задачи.

(7-8) Описание переменных a, b и x. a - матрица коэффициентов системы, b - столбец свободных членов, х - результат решения системы.

(9-10) Ввод начальных данных из файла gauss.dat, содержащего следующие строки:

a(k=1..4,l=1..4)= 1.0, 0.0, 0.0, 0.0,
0.0, 1.0, 0.0, 0.0,
0.0, 0.0, 1.0, 0.0,
0.0, 0.0, 0.0, 1.0;
b(k=1..4)= 1.1, 2.2, 3.3, 4.4;

(11) Задание параметра областей (размерности матрицы коэффициентов системы и столбец свободных членов).

(12) Вызов раздела Calculate, осуществляющего расчет.

(13) Вывод результата в файл gauss.out.

(14) Конец главного раздела.

(15) Заголовок простого раздела Calculate.

(16) Обозначение входных (a, b) и выходных (x) параметров раздела.

(17) Начало простого раздела.

(18) Описание индексов областей.

(19) Определяется многомерная область so, состоящая из областей ts и ijs. Область ijs в свою очередь состоит из is и js.

(20) Определяются безусловная область s1o и области s, s1 с помощью операций модификации области.

(21-22) Описание переменных, являющихся параметрами раздела.

(23-24) Описание переменных m и r, участвующих в расчете.

(25) Задание размерности областей.

(26) Описание индексов распределения.

(27-28) Задание начальных значений m и r.

(29) Описание вспомогательных условных областей sa, sb, sa1, sb1.

(30-34) Вычисления для соответствующих расчетных формул.

(35) Конец раздела.

 


Содержание Назад