метод, находит и возвращает определитель матрицы

метод, находит и возвращает определитель матрицы

   public double CalculateDeterminant()
{
    return CalculateDeterminant(data);
}
public double GetDeterminant()
{
    if (n != n)
    {
        return 0;
    }
    return CalculateDeterminant(data);
}

public double CalculateDeterminant(double[,] data)
{
    int n = data.GetLength(0);

    if (n == 2)
    {
        return data[0, 0] * data[1, 1] - data[0, 1] * data[1, 0];
    }

    double det = 0;

    for (int j = 0; j < n; j++)
    {
        double[,] smallMatrix = new double[n - 1, n - 1];

        int row = 0;
        int col = 0;
        for (int k = 1; k < n; k++)
        {
            for (int l = 0; l < n; l++)
            {
                if (l == j)
                {
                    continue;
                }

                smallMatrix[row, col] = data[k, l];
                col++;
            }
            row++;
            col = 0;
        }
        det += Math.Pow(-1, j) * data[0, j] * CalculateDeterminant(smallMatrix);
    }


    return det;
}

Как оптимизировать поиск детерминанта матрицы и обратную матрицу. В матрице 20 на 20 очень долго ищет детерминант(40+ мин)


Ответы (0 шт):