4.4. Задача обращения матриц и вычисления главного определителя по схеме гаусса

Метод Гаусса, подробно рассмотренный в п. 3.1 и 3.2, с ус­пехом может быть ис­поль­зо­ван для вы­чис­ле­ния оп­ре­де­ли­телей.

Пусть дана неособенная матрица (1.33) и на­до най­ти об­рат­ную матрицу и detА. Если матрица (1.33) имеет ранг боль­ше трех, то даже задача нахождения детерминанта не яв­ля­ется прос­той задачей. Надо отметить, что данный метод нель­зя при­менять, если исходная матрица особенная. Рас­смот­рим ли­нейную однородную систему урав­­не­ний Ах = 0, при ре­ше­нии которой мат­ри­ца А за­ме­няется верхней треугольной мат­ри­цей В:

,

тогда уравнение преобразуется к виду Вх = 0. Эле­менты мат­рицы Вполучаются из элементов мат­ри­цы А по фор­­мулам единственного деления (1.26). Но за­метим, что деление на ведущий эле­мент мат­ри­цы эк­ви­валентно вы­носу за опре­де­ли­тель со­мно­жителяаii, тогда

detА = а11 detА(1) =

= а11 а22 detА(2) = ... = а11 а22 ...аnn detB,

но det В =1,следовательно

det А = а11 а22 ...а nn., (1.47)

т.е. определитель матрицы ра­вен про­из­ве­де­нию "ве­ду­щих" эле­мен­тов для соответствующей схе­мы Гаусса. Ес­ли при приведении мат­рицы Ак тре­у­гольному виду ис­пользовать мо­ди­фи­ци­ро­ван­­­ный ме­тод Гаусса с вы­бо­ром глав­ного эле­мен­та, то фор­мула (1.47) примет сле­ду­ю­­щей вид:

det А = (-1)k а11 а22 ...а nn, (1.48)

где k- количество перестановок строк при ре­а­ли­за­ции ме­тода.

Очень часто метод Гаусса при­ме­няют при ре­ше­­нии за­­дачи об­ра­ще­ния матриц. Обозначим эле­мен­ты об­рат­ной матрицы через aij,тогда за­дача об­ра­ще­ния мат­ри­цыАсво­дит­ся к решению сис­темы ли­ней­ных урав­ненийаij × ajk = dik, или в мат­­ричной за­пи­сиАА-1 = Е,гдеЕ -еди­ничная мат­рица. Решая сис­те­му урав­не­ний методом Га­­усса - Жор­дана, лег­ко получаем об­рат­­ную матрицу:

Правая часть преобразованной матрицы и бу­дет яв­лять­ся искомой обратной матрицей А-1.

Как уже указывалось, метод Га­ус­­са является очень рас­про­стра­ненным вы­чис­­ли­тель­­ным методом, и по­э­то­му прак­ти­чес­ки лю­­­бая БСП имеет вы­­чис­ли­тель­ную про­це­ду­ру, ре­а­ли­зу­ю­щую метод Гаусса. Рассмотрим од­­ну из таких про­цедур ЕС-1066 для транслятора FOR­T­RAN-77, не­сколь­ко мо­ди­фи­­ци­ро­ван­ную для об­ра­­ще­ния матрицы и вы­­чис­­ле­ния опре­де­­лителя (пе­ре­вод тек­с­та процедуры на язык PASCAL вы­пол­нен ав­то­рами):

procedure gaus_obr (a : mas; var v : mas;

var tol : integer; var det : real);

type mst = array [1..n*2]of real;

mss = array [1..n] of mst;

var a1 : mss; i, j, m, k : integer; h : real;

begin

for i := 1 to n do

{ ФОРМИРОВАНИЕ ВСПОМОГАТЕЛЬНОЙ МАТРИЦЫ А1 }

for j := 1 to n*2 do

if j<= n then

a1 [i,j] := a[i,j]

else

if i=j-n then

a1 [i,j] := 1.0

else

a1[i,j] :=0.0;

tol := 0;

det := 1;

{ НАЧАЛЬНЫЕ ЗНАЧЕНИЯ СОNSТ-ант}

if n > 50 then

begin

tol := 2;

exit;

end;

if abs(a1[n,n]) < 1.0e-10 then

begin

tol := 1;

exit;

end;

for i := 1 to n do

begin

if abs(a1[i,i])<1.0e-10 then

begin tol:= 1; exit; end;

h := a1[i,i];

det := det * h;

for j := i to n*2 do

a1[i,j] := a1[i,j] / h;

if i<n then

for j := i+1 to n do

begin

h := a1[j,i];

for k := 1 to n*2 do

a1[j,k] := a1 [j,k] - h*a1[i,k];

end;

end;

for i := n downto 1 do

for k := i-1 downto 1 do

begin

h := a1[k,i];

for j:=1 to 2*n do

A1[k,j] := A1[k,j] - A1[i,j]*H;

end;

for i := 1 to n do

for j := n+1 to n*2 do

v [i,j-n] := a1[i,j];

end.

Формальные параметры про­цедуры.Входные:А(типre­al) - матрица, для которой ищется об­рат­­­ная; N (типin­te­ger)-размерность матрицы (матрица долж­на быть квад­ратной, т.е. размеромN´N).Вы­ход­ные:tоl(типre­al) - це­лое чис­ло, ко­то­­­рое при нор­мальном завершении про­­це­ду­ры равно 0. Ес­ли при об­ра­щении мат­ри­цы один из ди­а­го­наль­­ных элементов стал равен 0, то про­­­це­­дура воз­вра­ща­­ет зна­чение дан­но­го па­ра­мет­­­­ра 1;V (типreal) - об­ратная дляАмат­ри­ца;SUМ- оп­ре­­­де­ли­тель мат­ри­цы.

В процедуре gaus_obrвводится вспо­мо­га­тель­наяма­т­­ри­цаА1, размером [N´2*N], в ко­то­рой пер­вая по­ловина рав­на введенной мат­ри­цеА, а вто­рая (от N+1 доN*2) - еди­­ни­чной. Вы­пол­няя пре­об­ра­зо­вания над пер­вой по­ло­ви­ной матрицыА1 (от 1 доN) для при­ве­де­ния ее к виду единичной матрицы, по­лу­ча­ем во второй половине мат­ри­цыА1 матрицу, об­рат­ную по от­ношению кА, т.е.А-1. При вы­­полнении де­ле­ния наве­дущий элемент аii под­счи­ты­вается и оп­ре­де­ли­тельмат­­ри­­цыА, ко­торый на­кап­­ли­ва­ет­ся в пе­ре­мен­нойSUМ.

Для примера и проверки процедуры на­хо­дим об­рат­ную мат­рицу методом Гаусса и вы­чис­ляем dеtА. Мат­ри­ца взята из п. 3.1. Ре­зуль­та­ты вы­чис­ле­ний при­водятся в табл. 1.20.

Определитель матрицы равен -0.1020.

Таблица 1.20

Обратная матрица

Проверка А*А-1

1.5505

-0.1315

-0.5025

0.0941

1.000

-0.0000

-0.0000

-0.0000

-0.1315

-0.1786

-0.0560

1.3062

0.000

1.0000

-0.0000

-0.0000

-0.5025

-0.0560

4.1116

-1.3471

-0.000

0.0000

1.0000

0.0000

0.0941

1.3062

-1.3471

0.2365

0.000

0.0000

-0.0000

1.0000

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