ОБРАТНАЯ МАТРИЦА

15
НАХОЖДЕНИЕ ОБРАТНОЙ МАТРИЦЫ Выполнила: Бараева М.Д.

Upload: it1315

Post on 17-Jun-2015

429 views

Category:

Education


4 download

TRANSCRIPT

Page 1: ОБРАТНАЯ МАТРИЦА

НАХОЖДЕНИЕ ОБРАТНОЙ МАТРИЦЫ

Выполнила: Бараева М.Д.

Page 2: ОБРАТНАЯ МАТРИЦА

Понятие обратной матрицы вводится лишь

для квадратных матриц, определитель которых

отличен от нуля, то есть для невырожденных

квадратных матриц.

Page 3: ОБРАТНАЯ МАТРИЦА

Определение:

Матрица А-1 называется обратной для матрицы

, i=1,2..n, j=1,2..n, определитель которой отличен от

нуля , если справедливы равенства ,

где E-единичная матрица порядка n n.

ijaA

0A EAAAA 11

Page 4: ОБРАТНАЯ МАТРИЦА

Определение:

Минор k-ого порядка матрицы А порядка m n-это

определитель матрицы порядка k k, которая получается

из элементов матрицы А, находящихся в выбранных

k строках и k столбцах.

Page 5: ОБРАТНАЯ МАТРИЦА

Минор (n-1)-ого порядка, который составляется

из элементов всех строк, кроме i-ой, и всех

столбцов, кроме j-ого, квадратной матрицы А

порядка n n обозначим как .

Минор получается из квадратной матрицы А

порядка n n вычеркиванием элементов i-ой

строки и j-ого столбца.

ij

M

ijM

Page 6: ОБРАТНАЯ МАТРИЦА

Определение:

Алгебраическим дополнением элемента

квадратной матрицы , i=1,2..n, j=1,2..n называют

минор (n-1)-ого порядка, который получается из матрицы

А, вычеркиванием элементов ее i-ой строки и j-ого

столбца, умноженный на .

Алгебраическое дополнение элемента обозначается

как . Таким образом, .

ija

ijaA

ji )1(

ijA

ij

ji

ijMA )1(

ija

Page 7: ОБРАТНАЯ МАТРИЦА

Определение:

Транспонированная матрица –

матрица, полученная из исходной матрицы А

порядка n n, заменой строк на столбцы.

, i=1,2..n, j=1,2..n.

TA

ji

T

ijAA

Page 8: ОБРАТНАЯ МАТРИЦА

Определение:

Произведение матрицы , i=1,2..n, j=1,2..n и

действительного числа - матрица, элементы которой

получаются умножением соответствующих элементов

исходной матрицы на число , то есть, ,

i=1,2..n, j=1,2..n .

ijaA

ijaA

Page 9: ОБРАТНАЯ МАТРИЦА

На основании свойств определителя, определения

операции умножения матрицы на число и понятия обратной

матрицы справедливо равенство ,

где - транспонированная матрица, элементами которой

являются алгебраические дополнения .

Матрица является обратной для матрицы А,

если выполняются равенства .

T

ijA

AA 11

T

ijA

ijA

T

ijA

AA 11

EAAAA 11

Page 10: ОБРАТНАЯ МАТРИЦА

Алгоритм нахождения обратной матрицы

● Вычислить определитель матрицы А и убедиться, что он

отличен от нуля (в противном случае матрица А необратима).

● Транспонировать матрицу A, получается .

● Построить - матрицу из алгебраических дополнений .

● Умножить каждый элемент матрицы на число .

● Провести проверку результата, вычисляя произведения

и . Если , то обратная матрица

найдена верно, в противном случае где-то была допущена

ошибка.

TA

TA~

TA

TA~

A

1

1 AA

AA 1 EAAAA 11

Page 11: ОБРАТНАЯ МАТРИЦА

Код программы:

uses crt;

const t=0.000001;{ограничиваем числа,

близкие к нолю, на них делить}

type Tmatr=array[1..3,1..3]of real;

procedure Per(n,k:integer;a:Tmatr;var

p:integer);{перестановка строк с макс.

главным элементом}

var z:real;

j,i:integer;

begin

z:=abs(a[k,k]);

i:=k;

p:=0;

for j:=k+1 to n do

begin

if abs(a[j,k])>z then

begin

z:=abs(a[j,k]);

i:=j;

p:=p+1;

end;

end;

if i>k then

for j:=k to n do

begin

z:=a[i,j];

a[i,j]:=a[k,j];

a[k,j]:=z;

end;

end;

function znak(p:integer):integer;{изменение

знака при перестановке строк матрицы}

begin

if p mod 2=0 then

znak:=1 else znak:=-1;

end;

Page 12: ОБРАТНАЯ МАТРИЦА

function znak1(i,m:integer):integer;{изменение

знака при перестановке строк при нахождении

дополнений}

begin

if (i+m) mod 2=0 then

znak1:=1 else znak1:=-1;

end;

procedure opr(n,p:integer;a:Tmatr;var det:real;var

f:byte);{нахождение определителя матрицы}

var k,i,j:integer;

r:real;

begin

det:=1.0;f:=0;

for k:=1 to n do

begin

if a[k,k]=0 then per(k,n,a,p);

det:=znak(p)*det*a[k,k];

if abs(det)<t then

begin

f:=1;

writeln('Обратной матрицы нет!');

readln;

exit;

end;

for j:=k+1 to n do

begin

r:=a[j,k]/a[k,k];

for i:=k to n do

a[j,i]:=a[j,i]-r*a[k,i];

end;

end;

end;

procedure opr1(n,p:integer;d:Tmatr;var

det1:real);{нахождение определений для

дополнений}

var k,i,j:integer;

r:real;

begin

det1:=1.0;

for k:=2 to n do

begin

if d[k,k]=0 then per(n,k,d,p);

det1:=znak(p)*det1*d[k,k];

for j:=k+1 to n do

begin

r:=d[j,k]/d[k,k];

for i:=k to n do

d[j,i]:=d[j,i]-r*d[k,i];

end;

end;

end;

Page 13: ОБРАТНАЯ МАТРИЦА

procedure Vyvod(var a:Tmatr; n:integer);{вывод

матриц на экран}

var k,j:integer;

begin

for k:=1 to n do

begin

for j:=1 to n do

write(a[k,j]:7:2);

writeln;

end;

end;

var n,k,j,i,p:integer;{n-размер матрицы,k-счетчик

по строкам,j-счетчик по столбцам,p-счетчик

перестановок}

a,at,b,c,e:Tmatr;{a-исходная, at-

транспонированная, b-матрица дополнений, e-

обратная, с-проверка}

det,det1:real;{det-определитель исходной

матрицы,det1-определители-дополнения}

f:byte;{признак несуществования обратной

матрицы}

begin

clrscr;

n:=3;

for k:=1 to n do

for j:=1 to n do

begin

write('a[',k,',',j,']=');

readln(a[k,j]);

end;

clrscr;

writeln('Исходная матрица:');

Vyvod(a,n);

Opr(n,p,a,det,f); {vychislenie

opredelitelja}{считаем определитель}

if f=1 then exit;

Transp(a,n,b); {транспонируем матрицу}

Peresch(n,p,b,det1,e); {считаем дополнения}

writeln('Obratnaja matrica:');

for k:=1 to n do

for j:=1 to n do

e[k,j]:=e[k,j]/det; {создаем обратную матрицу}

Vyvod(e,n);

writeln('Proverka:');

Proverka(a,e,n,c); {делаем проверку}

Vyvod(c,n);

readln

end.

Page 14: ОБРАТНАЯ МАТРИЦА

Результаты:

Вывод обратной матрицы

и проверки

Ввод исходной матрицы

Page 15: ОБРАТНАЯ МАТРИЦА

СПАСИБО ЗА ВНИМАНИЕ!