Глава 1. Численные методы алгебры
4.5. ОБРАЩЕНИЕ
СИММЕТРИЧЕСКОЙ МАТРИЦЫ
МЕТОДОМ КВАДРАТНЫХ КОРНЕЙ
BEGIN
Для обратной матрицы X = A
-1
справедливо равенство
AX = BDX = E, где D - диагональная матрица с
элементами d = ±1; E - единичная матрица; B - матрица,
удовлетворяющая равенству A = BD, т.е. в некотором
смысле достаточно близкая к матрице A. Следовательно,
для нахождения матрицы X достаточно последовательно ре-
шить два матричных уравнения: BY=E и DX=Y (детали ал-
горитма метода квадратного корня см. в п. 3.4). Общий
объем вычислений при этом составит ~2n арифметических
операций. Уточнения приближения к обратной матрице в
случае необходимости можно проводить, включая в ал-
горитм итерации
X
k
= X
k -1
(2E - AX
k -1
).
В работе Бахвалова (1973а) доказано, что при доста-
точно хорошем начальном приближении, когда выполня-
ется неравенство ||E - AX
0
||<< 1, этот итерационный про-
цесс быстро сходится.
В работе Фадеева [Фадеев, Фадеева, 1963] предложен
другой алгоритм обращения симметрической матpицы с
ненулевыми ведущими минорами на основе упро-
щенного варианта метода квадратных корней. Этот ал-
горитм построен таким образом, что в матрице A
-1
за-
меняются n(n+1)/2 диагональных и наддиагональных эле-
ментов элементами матрицы A, при этом поддиагональ-
ные элементы матрицы A остаются неизменными. Преи-
мущество такого подхода состоит в том, что требуется
только n рабочих ячеек, не нужно никакой единичной мат-
рицы, не извлекаются никакие квадратные корни, выпол-
няется лишь n операций деления. При больших n количес-
тво операций умножения приближается к n
3
/2, что в не-
сколько раз меньше, чем при использовании стандартного
алгоритма.
Рассмотрим процедуру INVERS, построенную на осно-
ве такого упрощенного алгоритма.
Формальные параметры процедуры. Входные: n (тип
integer) - порядок матрицы A; A[1:n, 1:n] (тип real) - исход-
ная матрица. Выходные: A[1:n,1:n] (тип real) - матрица, раз-
мещенная на месте исходной матрицы A, в которой глав-
ная диагональ и наддиагональные элементы представляют
собой элементы обратной матрицы A
-1
.
PROCEDURE INVERS (N: INTEGER; VAR A MAS2);
VAR Y,P : REAL; I,J,K : INTEGER;
V : ARRAY [1..N-1] OF REAL;
BEGIN
FOR K:=1 TO N DO
BEGIN
{**** ЕСЛИ A[1,1]=0, ТО ВЫХОД ***}
IF A[1,1]=0 THEN EXIT;
P:=1.0/A[1,1];
FOR I:=2 TO N DO
V[I-1]:=A[1,I];
FOR I:=1 TO N-1 DO
A[I,N]:=-V[I]*P;
Y:=-V[I]*P;
FOR J:=I TO N-1 DO
A[I,J]:=A[I+1,J+1]+V[J]*Y
END ;
A[N,N]:=-P;
END ;
FOR I:=1 TO N DO
FOR J:=I TO N DO
A[I,J]:=-A[I,J]
END .
Приведенная процедура была получена путем перевода
процедуры INVERS66 [Агеев и др., 1976] с языка ALGOL
на язык PASCAL и проверена на тех же примерах, что и в
подтверждениях к рассматриваемому алгоритму, приве-
денных в работах [Randel, Brouden, 1962; Caffrey, 1962]. В
частности, для матрицы Вильсона
A =
⎛
⎝
⎜
⎜
⎜
⎜
⎞
⎠
⎟
⎟
⎟
⎟
57 6 5
710 8 7
68109
57 910
получено
A
−
=
−−
−−
−−
−−
⎛
⎝
⎜
⎜
⎜
⎜
⎞
⎠
⎟
⎟
⎟
⎟
1
67 9995 40 997 16 9997 9 9999
40 9997 24 9998 9 9999 5 9999
16 9997 9 9999 4 9999 2 9999
9 9999 5 9999 2 9999 19999
....
... .
.. . .
.. .. . .
.
Для матрицы пятого порядка, использованной в качест-
ве теста в работе (Randel, Brouden, 1962), результат ока-
зался следующим:
A
−
=
−−
−−−−
−−−−
−−
⎛
⎝
⎜
⎜
⎜
⎜
⎜
⎜
⎞
⎠
⎟
⎟
⎟
⎟
⎟
⎟
1
0 0000 0 9999 0 0000 0 0000 0 9999
0 9999 15333 0 7333 01333 0 7999
0 0000 0 7333 08666 10666 05999
0 0000 01333 10666 14666 01999
0 9999 0 7999 05999 01999 0 2000
.. . . .
.. . ..
.....
.....
.. . ..
.
Результаты тестирования на IBM PC/AT-386 предлага-
емых процедур соответствуют результатам, приведенным
в работах [Randel, Brouden,1962; Caffrey, 1962] , с доста-
точной степенью точности (ε < 10
-5
).
Замечание. В рамках приведенного алгоритма можно
легко вычислять определитель исходной матрицы как ре-
зультат последовательного перемножения значений глав-
ных элементов (на что указано и в работе [Caffrey, 1962].
Так, если a
ii
, равный a[i, i], на каждом k-м шаге алгоритма
является главным элементом матрицы порядка n, то опре-
делитель матрицы может быть вычислен довольно просто:
как произведение ведущих элементов. Если при этом вы-
50