Лекции.Орг


Поиск:




Категории:

Астрономия
Биология
География
Другие языки
Интернет
Информатика
История
Культура
Литература
Логика
Математика
Медицина
Механика
Охрана труда
Педагогика
Политика
Право
Психология
Религия
Риторика
Социология
Спорт
Строительство
Технология
Транспорт
Физика
Философия
Финансы
Химия
Экология
Экономика
Электроника

 

 

 

 


Обчислення обернених матриць




 

В курсі вищої математики обернена матриця обчислюється за допомогою алгебраїчних доповнень. Але цей метод для комп'ютера непридатний. Тому розроблено метод "приклеювання" для обчислення обернених матриць [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. Отримаємо четвертий головний рядок матриці A 4, який множимо відповідно на (–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). Отримаємо матрицю A 4, яка має такий вигляд:

 

.

Після четвертої ітерації маємо:

Отже, шукана обернена матриця А -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





Поделиться с друзьями:


Дата добавления: 2016-07-29; Мы поможем в написании ваших работ!; просмотров: 495 | Нарушение авторских прав


Поиск на сайте:

Лучшие изречения:

Люди избавились бы от половины своих неприятностей, если бы договорились о значении слов. © Рене Декарт
==> читать все изречения...

2444 - | 2243 -


© 2015-2024 lektsii.org - Контакты - Последнее добавление

Ген: 0.01 с.