4.5. Обращение симметрической матрицы методом квадратных корней

Для обратной матрицы X =A-1справедливо ра­­вен­­ст­воAX=BDX=E, гдеD- диагональная мат­­­ри­ца с элементамиd=±1;E- единичная мат­ри­­ца;B- мат­­рица, удов­ле­тво­ря­ю­щая равенствуA =BD, т.е. в не­котором смысле достаточно близ­­­­кая к мат­ри­цеA.Сле­до­ва­тель­но, для на­хож­де­­ния мат­ри­цы X до­ста­точно по­сле­до­ва­тель­но ре­­шить два мат­рич­ныхурав­­не­ния:BY=EиDX=Y(де­та­ли ал­го­рит­ма метода квад­рат­ного кор­ня см. в п. 3.4). Об­­щий объем вы­чис­­ле­ний при этом со­ста­вит ~2nариф­ме­тическихопе­­­­ра­ций. Уто­ч­не­ния при­­бли­же­ния к об­рат­ной мат­ри­­­­це в случае не­об­хо­ди­мос­­ти мож­­но проводить, вклю­­­чая в ал­горитмите­ра­ции

Xk=X k -1(2E-AXk -1).

В ра­­боте Бахвалова (1973а) до­­ка­за­но, что при до­­ста­точно хо­ро­шем на­чальном при­бли­же­нии, ког­да вы­пол­ня­ет­ся неравенство ||E-AX0||<< 1, этот ите­ра­ци­он­ный про­цесс быстро схо­дит­ся.

В работе Фадеева [Фадеев, Фадеева, 1963] пред­ло­жен дру­гой алгоритм обращения симметрической мат­pи­цы с не­ну­левыми ведущими минорами на ос­­но­­ве упро­­щенного ва­рианта метода квад­рат­ных кор­­ней. Этот ал­горитм по­стро­ен таким об­ра­зом, что в мат­рице A-1за­меняютсяn(n+1)/2 ди­а­го­наль­ных и над­диагональных эле­ментов эле­мен­та­ми мат­рицыA, при этом под­ди­а­го­наль­ные эле­мен­ты матрицыAос­таются неизменными. Пре­­и­му­щество такого под­хо­да состоит в том, что тре­буется толь­коnра­­бо­чих ячеек, не нужно ни­ка­кой еди­­нич­ной мат­рицы, не из­вле­ка­ют­ся ни­ка­кие квад­рат­ные кор­­ни, вы­пол­ня­ет­ся лишьnопе­ра­ций деления. При боль­шихnко­ли­чес­тво опе­раций умно­же­ния при­бли­жается кn3/2, что в не­сколь­ко раз меньше, чем при ис­поль­зовании ста­н­дартного алгоритма.

Рассмотрим про­цедуру invers,по­стро­ен­ную на ос­­но­ве та­кого упро­щенного алгоритма.

Формальные параметры про­­цедуры. Входные: n (тип in­­teger) - порядок матрицы 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

begin

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] с язы­каAL­GOLна язы­кPASCALи проверена на тех же при­ме­рах, что и в под­тверждениях к рас­смат­ри­ва­е­мому ал­го­рит­му, при­ве­ден­ных в работах [Ran­del, Brouden, 1962; Caffrey, 1962]. В част­­нос­ти, для матрицы Вильсона

получено

.

Для матрицы пятого порядка, ис­поль­зо­ван­ной в ка­чес­т­ве теста в работе (Randel, Brouden, 1962), результат ока­зал­ся следующим:

.

Результаты тестирования на IBM PC/AT-386 пред­ла­га­е­мых процедур соответствуют результатам, при­­­ве­ден­­ным в ра­ботах [Randel, Brouden,1962; Caffrey, 1962] , с до­ста­точ­ной степенью точности (e< 10-5).

Замечание. В рамках приведенного алгоритма мож­но легко вычислять определитель исходной мат­­­рицы как ре­зуль­тат последовательного пе­ре­мно­­­жения зна­че­ний глав­ных элементов (на что ука­­­зано и в работе [Ca­f­frey, 1962].Так, если aii, рав­­­­ный a[i, i], на каждомk-м ша­ге алгоритма яв­­ля­­­­ется главным элементом мат­ри­цы по­ряд­каn, то оп­­ре­де­ли­тель матрицы может быть вы­чис­лен до­воль­­но просто: как произведение ве­­ду­­щих эле­мен­тов. Если при этом вы­пол­нялись пе­ре­ста­­нов­­ки столбцов или строк, то появляется со­­мно­­жи­тель -1 встепени, равной числу вы­пол­нен­ных пе­ре­­ста­но­вок.

Соседние файлы в папке GLAVA1_1