Обчислення обернених матриць
В курсі вищої математики обернена матриця обчислюється за допомогою алгебраїчних доповнень. Але цей метод для комп'ютера непридатний. Тому розроблено метод "приклеювання" для обчислення обернених матриць [14]. Розглянемо приклад. Дано:
.
Перший крок.До матриці А "приклеюємо" одиничну матрицю справа: .
Маємо:
.
Перша ітерація.Перший рядок матриці А ділимо на діагональний член, тобто на 2 почленно. Отриманий рядок назвемо головним і запишемо його першим рядком матриці А1. Перший рядок виглядатиме так: (1 3/2 2 1/2 1/2 0 0 0). Ми тепер повинні утворити нулі у першому стовпці матриці А0, починаючи з другого рядка. Головний рядок множимо на (–4) і результат додаємо до другого рядка матриці А0. Отримаємо:
Другий рядок: (0 2 1 0 –2 1 0 0).
Головний рядок множимо на (–2) і додаємо почленно до третього рядка матриці А0. Отримаємо: (0 4 7 1 –1 0 1 0) (третій рядок).
Головний рядок множимо на (–6) і додаємо до четвертого рядка матриці А0. Маємо:
(0 4 7 2 –3 0 0 1) (четвертий рядок).
І остаточно маємо матрицю А1:
.
Наголосимо, що після першої ітерації матриці А1 перший стовпець являє собою перший стовпець одиничної матриці І.
Друга ітерація.Другий рядок матриці А1 почленно ділимо на діагональний член, тобто на 2 і результат наведемо головним рядком, записавши його другим рядком матриці А2:
(Другий рядок) (0 1 1/2 0 –1 1/2 0 0).
Тепер потрібно "утворити" нулі в другому стовпці. Отже, головний рядок множимо на (–3/2) і додаємо до першого рядка матриці А1 Отримаємо:
(Перший рядок) (1 0 0 1/4 5/4 –1 7 4 –3/4 0).
Множимо головний рядок на (–4) і додаємо почленно до третього рядка матриці А1 Отримаємо:
(Третій рядок) (0 0 5 1 3 –2 1 0).
Головний рядок множимо на (–4) і додаємо до четвертого рядка матриці А1. Отримаємо:
(Четвертий рядок) (0 0 5 2 1 –2 0 1).
Матриця А2 має такий вигляд:
.
Після другої ітерації матриця А2 містить перший і другий стовпці одиничної матриці І.
Третя ітерація.Третій рядок матриці А2 ділимо на діагональний член, тобто на 5, і отримаємо третій головний рядок матриці А3. Маємо:
(Третій рядок) (0 0 1 1/5 3/5 –2/5 1/5 0).
Тепер звертаємо увагу на третій стовпець матриці А2, щоб в ньому сформувати третій стовпець одиничної матриці І. Третій головний рядок множимо на (–5/4) і почленно додаємо до першого рядка А2. Маємо:
(Перший рядок) (1 0 0 1/4 5/4 1/4 1/4 0). Третій головний рядок множимо на (–1/2), почленно додаємо до другого рядка А2. Отримаємо:
(Другий рядок) (0 1 0 –1/10 –13/10 7/10 –1/10 0).
Третій головний рядок множимо на (–5), почленно додаємо до четвертого рядка матриці А2. Маємо:
(Четвертий рядок) (0 0 0 1 –2 –1 1).
Остаточно маємо матрицю А3:
.
Після третьої ітерації перший, другий та третій стовпці матриці А3 являють собою перший, другий та третій стовпці одиничної матриці І.
Четверта ітерація. Четвертий рядок матриці А3 ділимо почленно, тобто на +1. Отримаємо четвертий головний рядок матриці A4, який множимо відповідно на (–1/4) і додаємо до першого рядка матриці А3. Маємо:
(Перший рядок) (1 0 0 0 7/4 –1/4 0 –1/4).
Головний рядок множимо на (+1/10) і додаємо до другого рядка А3. Маємо:
(Другий рядок) (0 1 0 0 –3/2 7/10 –1/5 1/10).
Головний рядок множимо на (–1/5) і додаємо до третього рядка матриці А3. Маємо: (Третій рядок) (0 0 1 0 1 –2/5 2/5 –1/5). Отримаємо матрицю A4, яка має такий вигляд:
.
Після четвертої ітерації маємо:
Отже, шукана обернена матриця А-1 знаходиться в п'ятому, шостому, сьомому та восьмому стовпцях матриці А4. Маємо:
.
Якщо обчислення оберненої матриці виконані правильно, то справедлива рівність:
.
Перевірка:
Обернена матриця знайдена правильно.
Запишемо програму мовою Turbo Pascаl «abba» та мовою BASIC «ABC» для обчислення оберненої матриці, зауваживши, що ми будемо вводити в пам’ять комп’ютера матрицю А0=АÅІ.
Program abba;
Const m=4; n=8; Label 2,3,4, 99;
Type g1= array [1..m,1..m] of real;
q2=ar ray [1..m,1..m] of real;
Var AÆ,A1,A2,A3,A4: q2;A,A11,l1:q1;
I, j, k: intger; S: real;
Begin
For i:=1 to m do begin
For j:=1 to n do begin
Writeln ( ’ Введіть АÆ[i,j]= ’);
Readln (AÆ[i,j]); end; end;
Writeln (перша ітерація);
For j:=1 to m do
A1[1,j]:=AÆ[1,j]/AÆ[1,1];
For i:=2 to m do begin
For i:=1 to n do begin
A1[1,j]:=AÆ[i,j]-A1[1,j]*AÆ[i,1]
End; end;
Writeln (друга ітерація);
If(A1[2,2]=Æ) then goto 2;
For j:=1 to n do
A2[2,j]:=AÆ[2,j]/AÆ[2,2];
For i:=1 to m do begin
For j:=1 to n do begin
If(i=2) then i:=i+1;
A2[i,j]:=A1[i,j]-A2[2,j]*A1[i,2]; end;end;
Writeln (’ Третя ітерація ’);
If(A2[3,3]=Æ) then goto 3;
For j:=1 to n do
A3[3,j]:=A2[3,j]/A2[3,3];
For i:=1 to m do begin
For j:=1 to n do begin
A3[i,j]:=A2[i,j]-A3[3,j]*A2[i,3]; end;end;
Writeln (’ Четверта ітерація ’);
If(A3[4,4]=Æ) then goto 4;
For j:=1 to n do
A4[4,j]:=A3[4,j]/A3[4,4];
For i:=1 to m-1 do begin
For j:=1 to n do begin
A[i,j]:=A3[i,j]-A4[4,j]*A3[i,4]; Еnd;Еnd;
For i:=1 to m do begin
For j:=1 to m do begin
A11[i,j]:=A4[i,j+m];
A[i,j]:=AÆ[ij];end; end;
{А11 – обернена матриця; А- дана матриця}[i,j] [ij] [i,j] [i,j] [i,j]
for i:=1 to m do begin
for i:=1 to m do begin
Writeln (`a11[.ij.]=` , A1[ij]:1Æ:4); end;end;
Writeln (’ Перевірка ’);
For i:=1 to m do begin
For j:=1 to m do begin
S:=Æ;
For k:=1 to m do begin
S:=S+A[i,k]*A11[kj];end;
II[i,j]:= S; Writeln (`II, [`,ij],` ]=`, I1[i,j]); end;end;goto 99;
2: Writeln (` A1[2,2]=Æ` ); goto 99;
3: Writeln (` A2[3,3]=Æ` ); goto 99;
4: Writeln (` A3[4,4]=Æ` );
99: End.
Програма "ABC":
05 PRINT"……….PROGRAM "ABC……….."
10 REM ОБЕРНЕНА МАТРИЦЯ +1
20 INPUT N,M
30DIM
Al(M,N),A2(M,N),A3(M,N),A4(M,N),A0(M,N)A0(M,N),A(M,N)
31 REM ЗАПИС МАТРИЦІ +ОДИНИЧНА
40 FOR 1=1 TO M
50 FOR J=1 TO N
60 PRINT "A0(“І”, “J”)=”
70 INPUT AO(I,J)
80 NEXT J
90 NEXT I
100 REM ПЕРША ІТЕРАЦІЯ
110 FOR J=l TO N
120 Al(l,J)=A0(l,J)/A0(l,l)
130 NEXT J
140 FOR І=2 TO M
150 FOR J=l TO N
160 A1(I,J)=AO(I,J)-A1(1,J> A0(U)
170 NEXT J
180 NEXT І
190 REM ДРУГА ІТЕРАЦІЯ
200 IF Al(2,2)-0 GOTO 661
210 FOR J=l TO N
220 A2(2,J)-A1(2,J)/A1(2,2)
230 NEXT J
240 FOR І=1 TO M
250 FOR J=l TO N
260 IF 1=2 THEN І=І+1
270 A2(U)-A1(I,J)-A2(2,J)* A1(I,2)
280 NEXT J
290 NEXT І
300 REM ТРЕТЯ ІТЕРАЦІЯ
310 IF A2(3,3)=0 GOTO 662
320 FOR J=l TO N
330 A3(3,J)=A2(3,J)/A2(3,3)
340 NEXT J
350 FOR І=1 TO M
360 FOR J=l TO N
361 IF І=3 THEN І=І+1
370 A3(I,J)=A2(I,J)-A3(3,J)* A2(I,3)
380 NEXT J
390 NEXT I
400 REM ЧЕТВЕРТА ІТЕРАЦІЯ
410 IF A3(4,4)=0 GOTO 663
420 FOR J=l TO N
430 A4(4,J)=A3(4,J)/A3(4,4)
440 NEXT J
450 FOR 1=1 TO M-l
460 FOR J=l TO N
470 A4(I,J)=A3(I,J)-A4(4,J)* A3(I,4)
480 NEXT J
490 NEXT I
500 FOR І=1 TO M
510 FOR J=l TO N
520 A0(I,J)=A4(I,J+M)
530 A(I,J)=A0(I,J)
531 PRINT “A0(“І”,“J”)=”;A0(I,J)
540 NEXT J
550 NEXT I
560 FOR І=1 TO M
570 FOR J=l TO N
590 REM ПЕРЕВІРКА A^-1 * A=l
600 A0(I,J)=0
610 FOR K=l TOM
620 А0(І,J)=А0(І,J)+А(І,К)* A0(K,J)
640 NEXT К
641 PRINT “A0(“І”,“J”)=”;A0(I,J)
650 NEXT J
660 NEXT I
661 PRINT “Al (2,2)=0”
662 PRINT “A2(3,3)=0”
663 PRINT “A3(4,4)=0”
680 END