- •§ 4. Алгебра матриц
- •4.2. Вычисление собственных векторов и собственных значений матриц по методу данилевского
- •4.3. Вычисление собственных векторов и собственных значений симметрической матрицы методом якоби
- •4.4. Задача обращения матриц и вычисления главного определителя по схеме гаусса
- •4.5. Обращение симметрической матрицы методом квадратных корней
- •4.6. Обращение матрицы и решение системы линейных алгебраических уравнений
- •4.7. Умножение уплотненной симметрической матрицы на прямоугольную
- •4.8. Корректировка обратной матрицы после изменения одного элемента в прямой матрице
- •4.9. Матрица причинно-следственных отношений
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 (тип 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
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] с языкаALGOLна языкPASCALи проверена на тех же примерах, что и в подтверждениях к рассматриваемому алгоритму, приведенных в работах [Randel, Brouden, 1962; Caffrey, 1962]. В частности, для матрицы Вильсона
получено
.
Для матрицы пятого порядка, использованной в качестве теста в работе (Randel, Brouden, 1962), результат оказался следующим:
.
Результаты тестирования на IBM PC/AT-386 предлагаемых процедур соответствуют результатам, приведенным в работах [Randel, Brouden,1962; Caffrey, 1962] , с достаточной степенью точности (e< 10-5).
Замечание. В рамках приведенного алгоритма можно легко вычислять определитель исходной матрицы как результат последовательного перемножения значений главных элементов (на что указано и в работе [Caffrey, 1962].Так, если aii, равный a[i, i], на каждомk-м шаге алгоритма является главным элементом матрицы порядкаn, то определитель матрицы может быть вычислен довольно просто: как произведение ведущих элементов. Если при этом выполнялись перестановки столбцов или строк, то появляется сомножитель -1 встепени, равной числу выполненных перестановок.