Алгоритм Барейса

Материал из testwiki
Перейти к навигации Перейти к поиску

Алгоритм Барейса — алгоритм вычисления определителя или приведения к ступенчатому виду матрицы с целыми элементами с помощью исключительно целочисленной арифметики. Назван именем Э. Барейса. Любое деление, выполняемое по алгоритму, гарантирует точное деление (без остатка). Метод может быть использован также для вычисления определителя матрицы с (приблизительными) вещественными элементами, что исключает ошибки округления, за исключением ошибок, уже присутствующих во входных данных.

История

Общий алгоритм Барейса отличается от одноимённого алгоритма для обращения матриц Тёплица.

В некоторых испаноязычных странах алгоритм известен также как алгоритм Барейса — Монтанте, поскольку Рене Марио Монтанте Пардо, профессор автономного университета штата Нуэво Леон в Мексике, популяризовал метод среди студентов.

Обзор

Определение определителя использует только операции умножения, сложения и вычитания. Очевидно, что определитель будет целым, если все элементы матрицы целые. Однако фактическое вычисление определителя, исходя чисто из определения или используя формулу Лейбница, непрактично, поскольку требует O(n!) операций.

Метод Гаусса имеет сложность O(n3), но использует деление, которое приводит к ошибкам округления в случае реализации с помощью арифметики с плавающей запятой.

Шаблон:Iw можно избежать, если все числа хранить как дроби вместо чисел с плавающей запятой. Однако размер каждого элемента растёт экспоненциально в зависимости от числа строкШаблон:Sfn.

Барейс поставил вопрос проведения исключений в целых числах, сохраняя при этом величину промежуточных коэффициентов достаточно маленькой. Предложено два алгоритмаШаблон:SfnШаблон:Sfn:

  1. Алгоритм без деления — осуществляет сведение матрицы к треугольному виду вообще без операции деления.
  2. Алгоритм без остатков — использует деление для уменьшения промежуточных значений, но, вследствие Шаблон:Iw, преобразование остаётся целым (деление имеет нулевой остаток).

Для полноты Барейс предложил также методы исключений без умножения, но с дробямиШаблон:Sfn.

Алгоритм

Вычислительная структура этого алгоритма представляет собой простой тройной цикл, как и в обычном методе Гаусса. Однако в этом случае матрица модифицируется так, что каждый элемент Mk,k содержит ведущий главный минор [M]k, k. Правильность алгоритма легко показывается индукцией по kШаблон:Sfn.

Шаблон:Начало коробки

Шаблон:Конец коробки

Если предположение о неравенству нулю главных миноров окажется неверным, то есть Mk1,k1=0, а некоторые Mi,k10(i=k,,n), то мы можем переставить строки k-1 и i местами, сменив знак конечного значения.

Анализ

Во время выполнения алгоритма Барейса любое вычисленное целое является определителем подматрицы входной матрицы. Это позволяет с помощью неравенства Адамара ограничить размер целых чисел. В остальном алгоритм Барейса можно рассматривать как вариант метода Гаусса, который требует фактически того же числа арифметических операций.

Отсюда следует, что для n×n матрицы с максимальным (абсолютным) значением 2L для каждого элемента алгоритм Барейса работает за O(n3) элементарных операций с ограничением O(nn22nL) на абсолютную величину промежуточных значений. Вычислительная сложность алгоритма тогда составляет O(n5L2(log(n)2+L2)) при использовании элементарной арифметики или O(n4L(log(n)+L)log(log(n)+L))) при использовании Шаблон:Не переведено 5.

Примечания

Шаблон:Примечания

Литература

Шаблон:Численные методы линейной алгебры Шаблон:Rq