Курсовая работа: Численные методы при решении задач
// Транспонируем F
for (j = 0; j < n; j++) // Цикл по строкам TF
{
for (i = 0; i < yr; i++) // И по её столбцам
{
*(TF + (j * yr + i)) = *(F + (i * n + j));
}
}
// Считаем TMP = TF * F
MatrixMultiply (TF, n, yr, F, n, TMP);
// Далее считаем оперделитель от TMP
if ((dt = Determinant (TMP, n)) == 0)
{
printf ("\nТак, как определитель матрицы TF*F равен 0,\n"
"невозможно посчитать обратную к ним матрицу\n");
free (F); abort();
}
// Составляем обратную матрицу.
for (j = 0; j < n; j++)
{
for (i = 0; i < n; i++)
{
// Берём Минор элемента ij
MMinor (TMP, AC2, n, i, j);
// Знак элемента
flag = ((i + j) % 2 == 0) ? 1. : -1.;
// Сразу транспонирование
*(REV + (i * n) + j) = flag * Determinant (AC2, (n - 1)) / dt;
}