Свойство квадратной матрицы - Pascal
Формулировка задачи:
Доброго времени суток!
Помогите составить программу проверки свойства квадратной матрицы
A*A-1=E, где E-единичная матрица
Решение задачи: «Свойство квадратной матрицы»
textual
Листинг программы
const n=5;
type matr=array[1..n,1..n] of real;
function Det(size:integer; var m:matr):real;forward;
function AlgDop(size:integer;m:matr;row,col:integer):real;
var temp:matr; {нахождение алгебраических дополнений}
i,j:integer;
begin
for i:=1 to row-1 do
begin
for j:=1 to col-1 do temp[i,j]:=m[i,j];
for j:=col+1 to size do temp[i,j-1]:=m[i,j];
end;
for i:=row+1 to size do
begin
for j:=1 to col-1 do temp[i-1,j]:=m[i,j];
for j:=col+1 to size do temp[i-1,j-1]:=m[i,j];
end;
if (row+col) mod 2 = 0 then AlgDop := det(size-1,temp)
else AlgDop := -det(size-1,temp);
end;
function Det(size:integer; var m:matr):real; {нахождение определителя}
var i:integer;
r:real;
begin
if size=1 then Det:=m[1,1]
else
if size=2 then Det:=(m[1,1]*m[2,2]-m[1,2]*m[2,1])
else
begin
r:=0;
for i:=1 to size do
r:=r+m[1,i]*AlgDop(size,m,1,i);
Det:=r;
end;
end;
procedure ObrMatr(a:matr;var am:matr);
{нахождение обратной матрицы}
var i,j:integer;
dt:real;
begin
dt:=det(n,a);
for i:=1 to n do
for j:=1 to n do
am[i,j]:=AlgDop(n,a,j,i)/dt;
end;
var a,ao,e:matr;
i,j,k:byte;
begin
randomize;
writeln('Матрица A:');
for i:=1 to n do
begin
for j:=1 to n do
begin
a[i,j]:=5*random;
write(a[i,j]:5:1);
end;
writeln;
end;
writeln('Обратная матрица:');
ObrMatr(a,ao);
for i:=1 to n do
begin
for j:=1 to n do
write(ao[i,j]:5:1);
writeln;
end;
for i:=1 to n do
for j:=1 to n do
begin
e[i,j]:=0;
for k:=1 to n do
e[i,j]:=e[i,j]+a[i,k]*ao[k,j];
end;
writeln('Матрица E=A*Ao:');
for i:=1 to n do
begin
for j:=1 to n do
write(e[i,j]:5:1);
writeln;
end;
end.
Объяснение кода листинга программы
- В первой строке кода определяется переменная n, которая будет использоваться для определения размера матрицы.
- Затем определяется тип данных matr, который представляет собой массив целых чисел.
- Далее определяется функция Det, которая вычисляет определитель матрицы. Эта функция использует вложенную функцию AlgDop, которая вычисляет алгебраические дополнения.
- В функции ObrMatr определяется обратная матрица. Сначала вычисляется определитель матрицы размером n. Затем происходит итерация по всем элементам матрицы и их значения присваиваются соответствующим элементам обратной матрицы.
- В конце кода происходит генерация случайной матрицы A и ее обратной матрицы Ao. Затем вычисляется матрица E, которая является результатом умножения матрицы A на ее обратную матрицу Ao.