Свойство квадратной матрицы - 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.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д