ОБРАТНАЯ МАТРИЦА
TRANSCRIPT
НАХОЖДЕНИЕ ОБРАТНОЙ МАТРИЦЫ
Выполнила: Бараева М.Д.
Понятие обратной матрицы вводится лишь
для квадратных матриц, определитель которых
отличен от нуля, то есть для невырожденных
квадратных матриц.
Определение:
Матрица А-1 называется обратной для матрицы
, i=1,2..n, j=1,2..n, определитель которой отличен от
нуля , если справедливы равенства ,
где E-единичная матрица порядка n n.
ijaA
0A EAAAA 11
Определение:
Минор k-ого порядка матрицы А порядка m n-это
определитель матрицы порядка k k, которая получается
из элементов матрицы А, находящихся в выбранных
k строках и k столбцах.
Минор (n-1)-ого порядка, который составляется
из элементов всех строк, кроме i-ой, и всех
столбцов, кроме j-ого, квадратной матрицы А
порядка n n обозначим как .
Минор получается из квадратной матрицы А
порядка n n вычеркиванием элементов i-ой
строки и j-ого столбца.
ij
M
ijM
Определение:
Алгебраическим дополнением элемента
квадратной матрицы , i=1,2..n, j=1,2..n называют
минор (n-1)-ого порядка, который получается из матрицы
А, вычеркиванием элементов ее i-ой строки и j-ого
столбца, умноженный на .
Алгебраическое дополнение элемента обозначается
как . Таким образом, .
ija
ijaA
ji )1(
ijA
ij
ji
ijMA )1(
ija
Определение:
Транспонированная матрица –
матрица, полученная из исходной матрицы А
порядка n n, заменой строк на столбцы.
, i=1,2..n, j=1,2..n.
TA
ji
T
ijAA
Определение:
Произведение матрицы , i=1,2..n, j=1,2..n и
действительного числа - матрица, элементы которой
получаются умножением соответствующих элементов
исходной матрицы на число , то есть, ,
i=1,2..n, j=1,2..n .
ijaA
ijaA
На основании свойств определителя, определения
операции умножения матрицы на число и понятия обратной
матрицы справедливо равенство ,
где - транспонированная матрица, элементами которой
являются алгебраические дополнения .
Матрица является обратной для матрицы А,
если выполняются равенства .
T
ijA
AA 11
T
ijA
ijA
T
ijA
AA 11
EAAAA 11
Алгоритм нахождения обратной матрицы
● Вычислить определитель матрицы А и убедиться, что он
отличен от нуля (в противном случае матрица А необратима).
● Транспонировать матрицу A, получается .
● Построить - матрицу из алгебраических дополнений .
● Умножить каждый элемент матрицы на число .
● Провести проверку результата, вычисляя произведения
и . Если , то обратная матрица
найдена верно, в противном случае где-то была допущена
ошибка.
TA
TA~
TA
TA~
A
1
1 AA
AA 1 EAAAA 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;
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;
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.
Результаты:
Вывод обратной матрицы
и проверки
Ввод исходной матрицы
СПАСИБО ЗА ВНИМАНИЕ!