метод, находит и возвращает определитель матрицы
метод, находит и возвращает определитель матрицы
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+ мин)