@yana_adamovich

Как найти определитель матрицы методом гаусса по столбцу?

Вычисление определителя матрицы методом Гаусса с выбором главного элемента по столбцу. Для тестирования найти определитель матрицы размерности 4.
  • Вопрос задан
  • 9292 просмотра
Решения вопроса 1
Cyapa
@Cyapa
void GetDeterminant(double **matrix, int size, double epsilon)
{
    //Предполагается, что матрица квадратная
    int pivot_index = -1;
    double pivot_value = 0;
    double determinant = 1;
    
    for(int i = 0; i < size; i++)
    {
        for(int j = i; j < size; j++)
        {
            if(abs(matrix[j][i]) > pivot_value)
            {
                pivot_index = j;
                pivot_value = abs(matrix[j][i]);
            }
        }
        
        //Если опорный элемент равен нулю (эпсилон для сброса погрешности)
        if(pivot_value < epsilon)
        {
            //Матрица вырождена
            return 0;
        }
        
        if(pivot_index != i)
        {
            //Обменяем строки местами
            SwapRows(matrix, pivot_index, i)
            determinant *= -1;
        }
        
        for(int j = i + 1; j < size; j++)
        {
            if(matrix[j][i] != 0)
            {
                multiplier = 1 / matrix[i][i] * matrix[j][i];
                
                for(int k = i; k < size; k++)
                {
                    matrix[j][k] -= matrix[i][k] * multiplier;
                }
            }
        }
        
        determinant *= matrix[i][i];
    }
    
    return determinant;
}


С сями не работал уже сто лет, так что синтаксические ошибки обеспечены. Особенно с типами.
Но, думаю, смысл понятен.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
gbg
@gbg Куратор тега Программирование
Любые ответы на любые вопросы
Методом Гаусса можно привести матрицу к треугольному виду, после чего получится, что ее определитель равен произведению элементов главной диагонали.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы