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