Вторая пачка часть 44
..,0). В ну¬ле-вом цик¬ле первой итерации про¬ц嬬ду¬ра INVEQU оп¬ре¬де¬ляет в ка¬честве строк мат¬ри¬цы w стол¬бцы матрицы a, для всех по¬сле¬ду¬ю¬¬щих итераций стро¬ки матрицы w, вы¬¬чис¬лен¬¬ные в n-м цикле последней ите¬рации, яв¬ля¬ют¬ся стрка-ми матрицы w нулевого цикла.
PROCEDURE INVEQU (A:MAS2; B:MAS1;
N,COUNT: INTEGER;EPS:REAL;
VAR W: MAS2; X: MAS1; C:MAS2);
VAR BH,Z : REAL; I,J,P : INTEGER;
LABEL BEG;
BEGIN
FOR J:=1 TO N DO
FOR I:=1 TO N DO
W[J,I]:=A[I,J];
BEG:
FOR J:=1 TO N DO
FOR I:=1 TO N DO
C[I,J]:=0;
BH:=B[1];
FOR J:=1 TO N DO
BEGIN
FOR I:=1 TO N DO
C[J,J]:=C[J,J]+W[J,I]*A[I,J];
Z:=BH/C[J,J];
FOR I:=1 TO N DO
W[J,I]:=Z*W[J,I];
FOR I:=1 TO N DO
IF I<>J THEN
BEGIN
FOR P:=1 TO N DO
C[I,J]:=C[I,J]+A[P,J]*W[I,P];
IF I=1 THEN Z:=B[J] -C[I,J];
ELSE Z:=0-C[I,J];
FOR P:=1 TO N DO
W[I,P]:=BH*W[I,P]+Z*W[J,P]
END;
BH:=1
END;
Z:=ABS(B[1]);
FOR J:=1 TO N DO
IF ABS(ABS(C[J,J])-Z) > EPS THEN
BEGIN
COUNT:=COUNT-1;
IF COUNT > 0 THEN GO TO BEG
END;
FOR J:=1 TO N DO
X[J]:=W[1,J]
END.
Процедура INVEQU получена из процедуры simult [Агеев, 1976] путем ее перевода с языка ALGOL на язык PASCAL.
Проверка процедуры INVEQU производилась в це¬лях контроля для тех же входных параметров, что и в рବбо¬те Агеева (1976). При этом для вход¬ных парамет¬ров
,
n = 3, count = 3, 6, 10 и eps = 1e - 3, 1e - 5, 1e - 8, при всех знବч嬬ниях count и eps были получены сле¬ду¬ю¬щие ре¬зуль¬та¬ты, совпадающие с полученными Агеевым (1976):
1) для b = (1, 0, 0)
;
2) для b = (9, -2, 7), x = (-1, 2, 3)
.
Для матрицы, транспонированной от мат-ри¬цы A, ис¬¬пользованной в первом тесте, результаты таꬬ¬же хо¬ршо совпали с результатами, при¬ве¬ден¬¬¬ны¬ми М.И. Аг嬬евым (1976):
1) для b = (1, 0, 0):
;
2) для b = (9, -2, 7): x = (-0.42536367e-10, 3, 2),
,
точ¬ное решение уравнения (1.23), как указано Аге¬е¬вым (1976), при этих входных данных x = (0, 3, 2)
Индекс
Элементарные функции
Линейные уравнения
Нелинейные уравнения
Случайные числа