Курсовая работа: Численные методы при решении задач
for (i = 0; i < (siz - 1); i++)// Проходим по столбцам матрицы res
{
if (i == xel) ki = 1; // Пропустить текущий столбец
*(res + j * (siz - 1) + i) = *(m + (j+kj) * siz + (i+ki));
}
ki = 0; // Для следующей строчки (yel строку уже пропустили)
}
}
///////////////////////////////////////////////////////////////////////////////
// Вычисление определителя матрицы m размером (dim * dim)
// (Рекурсивная функция)
double Determinant (double *m, int dim)
{
// Все переменные - ОБЯЗАТЕЛЬНО ЛОКАЛЬНЫЕ!!!
doubled = 0, k = 1; // Определитель и флажок
int ki, kj, di, dj, i; // Коэффициенты, индексы, смещения
double *mm; // Новая матрица с вычеркнутой строкой и столбцом
if (dim < 1) { printf ("\nНеправильные аргументы"); abort (); }
if (dim == 1) return *m; // Если матрица 1х1
// Выделяем память для минора
if ((mm = malloc ((dim - 1) * (dim - 1) * sizeof (double))) == 0)
{ printf ("\nОшибка распределения памяти\n"); abort (); }
// Если матрица 2х2
if (dim == 2) d = ((*m) * (*(m + 3)) - (*(m + 2) * (*(m + 1))));
else // Размер больше чем 2
// Раскладываем матрицу по нулевой строке
for (i = 0; i < dim; i++)
{
MMinor (m, mm, dim, i, 0); // Вычеркнем столбец и