Другие языки программирования и технологии

программа в паскале, составить обратную матрицу

Задача: дана матрица 5*5. элементы задаются случайным образом и являются целыми числами. построить обратную матрциу.я понимаю что нужно сначала найти произведение обычной матрицы на транспонированную и разделить на определитель, с определителем смогу разобраться, а вот с транспонированной-никак... помогите плиииз
Транспонированная матрица-это когда строки менются местами со столбцами:

for i:=1 to n do
for j:=1 to n do
matrix1[j]:=matrix2[j];
на паскале как-то так наверное

на С++ вот так
//Функция вычисления алгебраического дополнения
//элемента a[i,j] квадратной матрицы A размерностью n*n
double alg_add(matrix A, int n, int i, int j)
{
matrix A1;
double M;
int k,h;
for (k = 0; k < i; k++){
for (h = 0; h < j; h++)
A1[k][h] = A[k][h];
for (h = j+1; h < n; h++)
A1[k][h-1] = A[k][h];
}
for (k = i+1; k < n; k++){
for (h = 0; h < j; h++)
A1[k-1][h] = A[k][h];
for (h = j+1; h < n; h++)
A1[k-1][h-1] = A[k][h];
}
M = det(A1,n-1);
if ((i+j)%2 != 0) M = -M;
return M;
}
//---------------------------------------------------------------------------
//Функция вычисления определителя матрицы A размерностью n*n
double det(matrix A, int n)
{
double d;
if (n != 1){
d = 0;
for (int j = 0; j < n; j++)
d += A[0][j] * alg_add(A,n,0,j);
}
else d = A[0][0];
return d;
}
//---------------------------------------------------------------------------
//Функция вычисления матрицы, обратной матрице A размерностью n*n
void inv_matr(matrix A, matrix B, int n)
{
double d = det(A,n);
for (int i = 0; i < n; i++)
for (int j = 0; j < n; j++)
B[j] = alg_add(A,n,j,i)/d;
}
//---------------------------------------------------------------------------
//Функция транспонирования матрицы A размерностью n*m
void trans_matr(matrix A, matrix B, int n, int m)
{
for (int i = 0; i < n; i++)
for (int j = 0; j < m; j++)
B[j] = A[j];
}
Миша Цветков
Миша Цветков
1 286
Лучший ответ