Наибольший общий делитель полинома - Polynomial greatest common divisor

В алгебре наибольший общий делитель (часто сокращенно GCD) двух многочлены - многочлен максимально возможной степени, т. е. фактор обоих двух исходных многочленов. Эта концепция аналогична наибольший общий делитель двух целых чисел.

В важном случае одномерный многочлены над поле полиномиальный НОД может быть вычислен, как и для целого НОД, с помощью Евклидов алгоритм с помощью длинное деление. Полиномиальный НОД определяется только вплоть до умножение на обратимую константу.

Сходство между целочисленным НОД и полиномиальным НОД позволяет распространить на одномерные многочлены все свойства, которые могут быть выведены из алгоритма Евклида и Евклидово деление. Более того, многочлен НОД обладает определенными свойствами, которые делают его фундаментальным понятием в различных областях алгебры. Обычно корни НОД двух многочленов являются общими корнями двух многочленов, и это дает информацию о корнях без их вычисления. Например, множественные корни полинома являются корнями НОД многочлена и его производной, а дальнейшие вычисления НОД позволяют вычислить бесквадратная факторизация полинома, который дает многочлены, корни которых являются корнями данного множественность исходного многочлена.

Наибольший общий делитель может быть определен и существует, в более общем смысле, для многомерные полиномы над полем или кольцом целых чисел, а также над уникальная область факторизации. Существуют алгоритмы для их вычисления, как только в кольце коэффициентов имеется алгоритм НОД. Эти алгоритмы выполняются рекурсия от числа переменных, чтобы свести задачу к варианту алгоритма Евклида. Они являются основным инструментом в компьютерная алгебра, потому что системы компьютерной алгебры используйте их систематически, чтобы упростить дроби. И наоборот, большая часть современной теории полиномиального НОД была разработана для удовлетворения потребности в эффективности систем компьютерной алгебры.

Общее определение

Позволять п и q быть полиномами с коэффициенты в область целостности Fобычно поле или целые числа. А наибольший общий делитель из п и q это многочлен d что разделяет п и q, и такой, что каждый общий делитель п и q также разделяет d. Каждая пара многочленов (не оба нулевые) имеет НОД тогда и только тогда, когда F это уникальная область факторизации.

Если F это поле и п и q оба не равны нулю, многочлен d является наибольшим общим делителем тогда и только тогда, когда он делит оба п и q, и он имеет наибольшую степень среди многочленов, обладающих этим свойством. Если п = q = 0, НОД равен 0. Однако некоторые авторы считают, что в данном случае он не определяется.

Наибольший общий делитель п и q обычно обозначается "gcd (п, q)".

Наибольший общий делитель не единственен: если d является НОД п и q, то многочлен ж является другим НОД тогда и только тогда, когда существует обратимый элемент ты из F такой, что

и

.

Другими словами, НОД уникален с точностью до умножения на обратимую константу.

В случае целых чисел эта неопределенность была решена путем выбора в качестве НОД единственного положительного значения (есть еще одно, противоположное ему). Согласно этому соглашению, НОД двух целых чисел также является наибольшим (при обычном порядке) общим делителем. Однако, поскольку нет естественного общий заказ для многочленов над областью целостности здесь нельзя поступать так же. За одномерный полиномов над полем, можно дополнительно потребовать, чтобы НОД моник (то есть иметь 1 как его коэффициент наивысшей степени), но в более общих случаях нет общего соглашения. Следовательно, равенства вида d = gcd (п, q) или же gcd (п, q) = gcd (р, s) распространены злоупотребления обозначениями, которые следует читать "d является НОД п и q" и "п и q имеют тот же набор НОД, что и р и s". Особенно, gcd (п, q) = 1 означает, что обратимые константы являются единственными общими делителями. В этом случае по аналогии с целочисленным случаем говорят, что п и q находятся взаимно простые многочлены.

Характеристики

  • Как указано выше, НОД двух многочленов существует, если коэффициенты принадлежат либо полю, кольцу целых чисел, либо, в более общем смысле, некоторому уникальная область факторизации.
  • Если c любой общий делитель п и q, тогда c делит их НОД.
  • для любого полинома р. Это свойство лежит в основе доказательства алгоритма Евклида.
  • Для любого обратимого элемента k кольца коэффициентов, .
  • Следовательно для любых скаляров такой, что обратимо.
  • Если , тогда .
  • Если , тогда .
  • Для двух одномерных многочленов п и q над полем существуют многочлены а и а, так что и делит каждую такую ​​линейную комбинацию п и q (Личность Безу ).
  • Наибольший общий делитель трех или более многочленов может быть определен так же, как и для двух многочленов. Его можно вычислить рекурсивно из НОД двух многочленов с помощью тождеств:
и

НОД вручную

Есть несколько способов найти наибольший общий делитель двух многочленов. Два из них:

  1. Факторизация многочленов, в котором можно найти факторы каждого выражения, а затем выбрать набор общих факторов, принадлежащих всем, из каждого набора факторов. Этот метод может быть полезен только в простых случаях, поскольку факторизация обычно сложнее, чем вычисление наибольшего общего делителя.
  2. В Евклидов алгоритм, который можно использовать для нахождения НОД двух многочленов так же, как и для двух чисел.

Факторинг

Чтобы найти НОД двух многочленов с помощью факторизации, просто полностью разложите два многочлена на множители. Затем возьмите произведение всех общих факторов. На этом этапе у нас не обязательно есть монический многочлен, поэтому, наконец, умножьте его на константу, чтобы сделать его моническим многочленом. Это будет НОД двух многочленов, поскольку он включает в себя все общие делители и является моническим.

Пример 1: найти НОД Икс2 + 7Икс + 6 и Икс2 − 5Икс − 6.

Икс2 + 7Икс + 6 = (Икс + 1)(Икс + 6)
Икс2 − 5Икс − 6 = (Икс + 1)(Икс − 6)

Таким образом, их НОД Икс + 1.

Евклидов алгоритм

Факторинг многочленов может быть трудным, особенно если многочлены имеют большую степень. В Евклидов алгоритм - это метод, который работает с любой парой многочленов. Он многократно использует Евклидово деление. При использовании этого алгоритма для двух чисел размер чисел уменьшается на каждом этапе. С полиномами степень полиномов уменьшается на каждом этапе. Последний ненулевой остаток, сделанный моник при необходимости - НОД двух многочленов.

Более конкретно, для нахождения НОД двух многочленов а(Икс) и б(Икс), можно предположить б ≠ 0 (в противном случае НОД будет а(Икс)), и

Евклидово деление дает два полинома q(Икс), то частное и р(Икс), то остаток такой, что

Полином грамм(Икс) разделяет оба а(Икс) и б(Икс) тогда и только тогда, когда он делит оба б(Икс) и р0(Икс). Таким образом

Параметр

можно повторить евклидово деление, чтобы получить новые многочлены q1(Икс), р1(Икс), а2(Икс), б2(Икс) и так далее. На каждом этапе у нас есть

поэтому последовательность в конечном итоге достигнет точки, в которой

и у одного есть НОД:

Пример: нахождение НОД Икс2 + 7Икс + 6 и Икс2 − 5Икс − 6:

Икс2 + 7Икс + 6 = 1 ⋅ (Икс2 − 5Икс − 6) + (12 Икс + 12)
Икс2 − 5Икс − 6 = (12 Икс + 12) (1/12 Икс1/2) + 0

С 12 Икс + 12 - последний ненулевой остаток, это НОД исходных многочленов, а моник НОД Икс + 1.

В этом примере нетрудно избежать введения знаменателей, вычитая 12 перед вторым шагом. Это всегда можно сделать, используя псевдоостаточные последовательности, но без осторожности это может привести к очень большим целым числам во время вычислений. Поэтому для компьютерных вычислений используются другие алгоритмы, которые описаны ниже.

Этот метод работает только в том случае, если можно проверить равенство нулю коэффициентов, возникающих при вычислении. Итак, на практике коэффициенты должны быть целые числа, рациональное число, элементы конечное поле, или должен принадлежать некоторым конечно порожденное расширение поля одного из предыдущих полей. Если коэффициенты равны числа с плавающей запятой которые представляют действительные числа которые известны только приблизительно, то необходимо знать степень НОД, чтобы иметь четко определенный результат вычислений (то есть численно стабильный результат; в этом случае могут использоваться другие методы, обычно основанные на разложение по сингулярным числам.

Одномерные многочлены с коэффициентами в поле

Случай одномерных многочленов над полем особенно важен по нескольким причинам. Во-первых, это самый элементарный случай, поэтому он появляется на большинстве первых курсов алгебры. Во-вторых, он очень похож на случай с целыми числами, и эта аналогия является источником понятия Евклидова область. Третья причина заключается в том, что теория и алгоритмы многомерный случае и для коэффициентов в уникальная область факторизации сильно основаны на этом конкретном случае. И последнее, но не менее важное: полиномиальные алгоритмы НОД и производные алгоритмы позволяют получать полезную информацию о корнях полинома, не вычисляя их.

Евклидово деление

Евклидово деление многочленов, которое используется в Алгоритм Евклида для вычисления GCD очень похож на Евклидово деление целых чисел. Его существование основано на следующей теореме: для двух одномерных многочленов а и б ≠ 0, определенное над полем, существует два многочлена qчастное) и ростаток) которые удовлетворяют

и

где "deg (...)" обозначает степень, а степень нулевого многочлена определяется как отрицательная. Более того, q и р однозначно определяются этими отношениями.

Отличие от евклидова деления целых чисел состоит в том, что для целых чисел степень заменяется абсолютным значением, а для того, чтобы иметь уникальность, нужно предположить, что р неотрицательно. Кольца, для которых существует такая теорема, называются Евклидовы области.

Как и для целых чисел, евклидово деление многочленов может быть вычислено с помощью длинное деление алгоритм. Этот алгоритм обычно представлен для вычислений на бумаге и карандаше, но он хорошо работает на компьютерах, когда формализуется следующим образом (обратите внимание, что имена переменных точно соответствуют областям листа бумаги при вычислении длинных отрезков бумаги карандашом и бумагой). разделение). В следующем вычислении "deg" обозначает степень его аргумента (по соглашению град (0) <0), а lc обозначает старший коэффициент, коэффициент наивысшей степени переменной.

Евклидово делениеВход: а и б ≠ 0 два многочлена от переменной Икс;Выход: q, частное и р, остаток;Начинать    q := 0    р := а    d : = град (б)    c : = lc (б)    пока град (р) ≥ d делать        s := lc (р)/c Иксград (р)−d        q := q + s        р := рсб    конец делать    возвращаться (q, р)конец

Доказательство правильности этого алгоритма основывается на том факте, что в течение всего цикла while мы имеем а = бк + р и град (р) - неотрицательное целое число, которое уменьшается на каждой итерации. Таким образом, доказательство справедливости этого алгоритма также доказывает справедливость евклидова деления.

Алгоритм Евклида

Что касается целых чисел, евклидово деление позволяет нам определить Алгоритм Евклида для расчета НОД.

Начиная с двух многочленов а и б, Алгоритм Евклида состоит в рекурсивной замене пары (а, б) к (б, rem (а, б)) (куда "rem (а, б)"обозначает остаток от евклидова деления, вычисленного по алгоритму предыдущего раздела), пока б = 0. НОД - это последний ненулевой остаток.

Алгоритм Евклида можно формализовать в стиле рекурсивного программирования как:

В императивном стиле программирования тот же алгоритм становится, давая имя каждому промежуточному остатку:

за (; ; ) делать    конец делатьвозвращаться 

Последовательность степеней ря строго убывает. Таким образом, самое большее после того, как град (б) шагов, получается нулевой остаток, скажем рk. В качестве (а, б) и (б, rem (а,б)) имеют одинаковые делители, набор общих делителей не изменяется алгоритмом Евклида и, следовательно, все пары (ря, ря+1) имеют одинаковый набор общих делителей. Общие делители а и б таким образом, являются общими делителями рk−1 и 0. Таким образом рk−1 является НОД а и бЭто не только доказывает, что алгоритм Евклида вычисляет НОД, но также доказывает, что НОД существуют.

Идентичность Безу и расширенный алгоритм НОД

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

Если грамм является наибольшим общим делителем двух многочленов а и б (не оба равны нулю), то есть два многочлена ты и v такой, что

(Личность Безу)

и либо ты = 1, v = 0, или же ты = 0, v = 1, или же

Интерес этого результата в случае многочленов заключается в том, что существует эффективный алгоритм для вычисления многочленов ты и v, Этот алгоритм отличается от алгоритма Евклида тем, что на каждой итерации цикла выполняется еще несколько вычислений. Поэтому он называется расширенный алгоритм GCD. Другое отличие алгоритма Евклида состоит в том, что он также использует частное, обозначаемое «кво», евклидова деления, а не только остаток. Этот алгоритм работает следующим образом.

Расширенный НОД алгоритмВход: а, б, одномерные многочленыВыход:    грамм, НОД а и б    ты, v, как в заявлении выше а1, б1, так что Начинать          за (я = 1; ря ≠ 0; я = я+1) делать                    конец делать        конец

Доказательство того, что алгоритм удовлетворяет своей выходной спецификации, основывается на том факте, что для каждого я у нас есть

последнее равенство, подразумевающее

Утверждение о степенях следует из того, что на каждой итерации степени sя и тя не больше, чем степень ря уменьшается.

Интересной особенностью этого алгоритма является то, что, когда необходимы коэффициенты тождества Безу, можно бесплатно получить частное входных многочленов по их НОД.

Арифметика алгебраических расширений

Важным применением расширенного алгоритма GCD является то, что он позволяет вычислять деление в расширения алгебраических полей.

Позволять L алгебраическое расширение поля K, порожденная элементом, минимальный многочлен которого ж имеет степень п. Элементы L обычно представлены одномерными многочленами над K степени меньше чем п.

Добавление в L это просто сложение многочленов:

Умножение в L - это умножение многочленов с последующим делением на ж:

Обратный ненулевой элемент а из L это коэффициент ты в личности Безу au + fv = 1, который может быть вычислен расширенным алгоритмом НОД. (НОД равен 1, поскольку минимальный многочлен ж неприводимо). Неравенство степеней в спецификации расширенного алгоритма НОД показывает, что дальнейшее деление на ж не требуется для получения deg (ты) ж).

Субрезультанты

В случае одномерных многочленов существует сильная связь между наибольшими общими делителями и результирующие. Точнее, результат двух многочленов п, Q является полиномиальной функцией коэффициентов при п и Q который имеет нулевое значение тогда и только тогда, когда НОД п и Q не является постоянным.

Теория подрезультантов является обобщением этого свойства, которое позволяет в общем охарактеризовать НОД двух многочленов, и результирующий результат является 0-м подрезультатным многочленом.[1]

В я-го подрезультант полином Sя(п ,Q) двух многочленов п и Q является многочленом степени не выше я коэффициенты которого являются полиномиальными функциями от коэффициентов п и Q, а я-го главный промежуточный коэффициент sя(п ,Q) - коэффициент степени я из Sя(п, Q). Они обладают тем свойством, что НОД п и Q имеет степень d если и только если

.

В этом случае, Sd(п ,Q) является НОД п и Q и

Каждый коэффициент подрезультатных многочленов определяется как определитель подматрицы матрицы Матрица Сильвестра из п и Q. Это означает, что субрезультаты хорошо «специализируются». Более точно, подрезультаты определены для многочленов над любым коммутативным кольцом р, и обладают следующим свойством.

Позволять φ - кольцевой гомоморфизм р в другое коммутативное кольцо S. Он продолжается до другого гомоморфизма, также обозначаемого φ между кольцами многочленов над р и S. Тогда, если п и Q - одномерные многочлены с коэффициентами в р такой, что

и

тогда подрезультатные полиномы и главные подрезультантные коэффициенты φ(п) и φ(Q) являются изображением φ из тех из п и Q.

Подрезультаты обладают двумя важными свойствами, которые делают их фундаментальными для вычисления на компьютерах НОД двух многочленов с целыми коэффициентами. Во-первых, их определение через определители позволяет ограничивать через Неравенство Адамара, размер коэффициентов НОД. Во-вторых, эта граница и свойство хорошей специализации позволяют вычислить НОД двух полиномов с целыми коэффициентами через модульное вычисление и Китайская теорема об остатках (видеть ниже ).

Техническое определение

Позволять

- два одномерных многочлена с коэффициентами в поле K. Обозначим через то K векторное пространство размерности я многочлены степени меньше, чем я. Для неотрицательного целого числа я такой, что ям и яп, позволять

- линейное отображение такое, что

В результирующий из п и Q является определителем Матрица Сильвестра, которая представляет собой (квадратную) матрицу на основании полномочий Икс. Точно так же я-подрезультатный полином определяется через определители подматриц матрицы

Опишем эти матрицы более точно;

Позволять пя = 0 для я <0 или я > м, и qя = 0 для я <0 или я > п. В Матрица Сильвестра это (м + п) × (м + п) -матрица такая, что коэффициент при я-й ряд и j-й столбец пм+jя за jп и qjя за j > п:[2]

Матрица Тя из это (м + пя) × (м + п − 2я) -подматрица S который получается удалением последнего я строки нулей в подматрице столбцов с 1 по пя и п +1 к м + пя из S (это удаление я столбцы в каждом блоке и я последние строки нулей). В главный промежуточный коэффициент sя является определителем м + п − 2я первые ряды Тя.

Позволять Vя быть (м + п − 2я) × (м + пя) матрица определяется следующим образом. Сначала добавляем (я + 1) столбцы нулей справа от (м + п − 2я − 1) × (м + п − 2я − 1) единичная матрица. Затем ограничиваем нижнюю часть получившейся матрицы строкой, состоящей из (м + пя - 1) нули с последующими Икся, Икся−1, ..., Икс, 1:

В этих обозначениях я-го подрезультант полином - определитель матричного произведения VяТя. Его коэффициент степени j - определитель квадратной подматрицы матрицы Тя состоящий из м + п − 2я - 1 первые ряды и (м + пяj)-бросать.

Набросок доказательства

Неочевидно, что, согласно определению, подрезультаты имеют желаемые свойства. Тем не менее, доказательство довольно просто, если объединить свойства линейной алгебры и свойства многочленов.

Как определено, столбцы матрицы Тя - векторы коэффициентов некоторых многочленов, принадлежащих образу . Определение я-й подрезультатный многочлен Sя показывает, что вектор его коэффициентов представляет собой линейную комбинацию этих векторов-столбцов, и, таким образом, что Sя принадлежит имиджу

Если степень НОД больше, чем я, тогда Личность Безу показывает, что любой ненулевой многочлен в образе имеет степень больше, чем я. Отсюда следует, что Sя=0.

Если, с другой стороны, степень НОД равна я, то тождество Безу снова позволяет доказать, что кратные НОД, имеющие степень ниже, чем м + пя находятся в образе . Векторное пространство этих кратных имеет размерность м + п − 2я и имеет базу из многочленов попарно различных степеней не меньше я. Отсюда следует, что подматрица матрицы м + п − 2я первые ряды колонного эшелона формы Тя является единичной матрицей и, следовательно, sя не равно 0. Таким образом Sя является многочленом по образу , который кратен НОД и имеет ту же степень. Таким образом, это наибольший общий делитель.

НОД и поиск корней

Факторизация без квадратов

Наиболее алгоритмы поиска корней плохо себя вести с полиномами, которые множественные корни. Поэтому полезно обнаруживать и удалять их перед вызовом алгоритма поиска корня. Вычисление НОД позволяет обнаружить наличие нескольких корней, поскольку кратные корни многочлена являются корнями НОД многочлена и его производная.

После вычисления НОД полинома и его производной дальнейшие вычисления НОД обеспечивают полное бесквадратная факторизация полинома, который является факторизацией

где для каждого я, многочлен жя либо равно 1, если ж не имеет корня из множественности я или является многочленом без квадратов (то есть многочленом без кратного корня), корни которого в точности корни кратности я из ж (видеть Алгоритм Юна ).

Таким образом, факторизация без квадратов сводит нахождение корня многочлена с кратными корнями к нахождению корня из нескольких бесквадратных многочленов более низкой степени. Факторизация без квадратов также является первым шагом в большинстве полиномиальная факторизация алгоритмы.

Последовательность Штурма

В Последовательность Штурма полинома с действительными коэффициентами - это последовательность остатков, полученная с помощью варианта алгоритма Евклида, примененного к полиному и его производной. Чтобы получить последовательность Штурма, нужно просто заменить инструкцию

алгоритма Евклида

Позволять V(а) быть количеством изменений знаков в последовательности при оценке в точке а. Теорема Штурма утверждает, что V(а) − V(б) - количество действительных корней многочлена в интервале [а, б]. Таким образом, последовательность Штурма позволяет вычислить количество действительных корней в заданном интервале. Подразделение интервала до тех пор, пока каждый подынтервал не будет содержать не более одного корня, это обеспечивает алгоритм, который находит действительные корни в интервалах произвольной малой длины.

НОД над кольцом и его полем дробей

В этом разделе мы рассматриваем многочлены над уникальная область факторизации р, обычно кольцо целых чисел, и над его поле дробей F, обычно поле рациональных чисел, и обозначим р[Икс] и F[Икс] кольца многочленов от множества переменных над этими кольцами.

Примитивная часть – факторизация содержимого

В содержание полинома пр[Икс], обозначается "cont (п) ", является НОД его коэффициентов. Полином qF[Икс] может быть написано

куда пр[Икс] и cр: достаточно взять за c кратное всем знаменателям коэффициентов q (например, их продукт) и п = cq. В содержание из q определяется как:

В обоих случаях содержание определяется с точностью до умножения на единица измерения из р.

В примитивная часть полинома от р[Икс] или же F[Икс] определяется

В обоих случаях это многочлен от р[Икс] то есть примитивный, что означает, что 1 - НОД своих коэффициентов.

Таким образом, каждый многочлен из р[Икс] или же F[Икс] может быть разложено на множители как

и эта факторизация уникальна до умножения содержания на единицу р а примитивной части - инверсией этого устройства.

Из леммы Гаусса следует, что произведение двух примитивных многочленов примитивно. Следует, что

и

Связь между НОД по р и более F

Отношения предыдущего раздела подразумевают сильную связь между НОД в р[Икс] И в F[Икс]. Во избежание двусмысленности обозначение "gcd"будут проиндексированы в дальнейшем кольцом, в котором вычисляется НОД.

Если q1 и q2 принадлежать F[Икс], тогда

Если п1 и п2 принадлежать р[Икс], тогда

и

Таким образом, вычисление полиномиальных НОД - это, по сути, та же проблема над F[Икс] и более р[Икс].

Для одномерных многочленов от рациональных чисел можно подумать, что алгоритм Евклида является удобным методом вычисления НОД. Однако при этом упрощается большое количество дробей целых чисел, и полученный алгоритм неэффективен. По этой причине были разработаны методы для модификации алгоритма Евклида для работы только с многочленами от целых чисел. Они заключаются в замене евклидова деления, вводящего дроби, так называемым псевдоделение, и заменяя остаточную последовательность алгоритма Евклида так называемым псевдоостаточные последовательности (видеть ниже ).

Доказательство существования НОД для многомерных многочленов

В предыдущем разделе мы видели, что НОД многочленов от р[Икс] может быть выведено из НОД в р И в F[Икс]. Более пристальный взгляд на доказательство показывает, что это позволяет нам доказать существование НОД в р[Икс], если они существуют в р И в F[Икс]. В частности, если НОД существуют в р, и если Икс сводится к одной переменной, это доказывает, что НОД существуют в р[Икс] (Алгоритм Евклида доказывает существование НОД в F[Икс]).

Многочлен от п переменные можно рассматривать как одномерный многочлен над кольцом многочленов от (п - 1) переменные. Таким образом, рекурсия по количеству переменных показывает, что если НОД существуют и могут быть вычислены в р, то они существуют и могут быть вычислены в любом кольце многомерных многочленов над р. В частности, если р является либо кольцом целых чисел, либо полем, то НОД существуют в р[Икс1,..., Иксп], а то, что предшествует, предоставляет алгоритм для их вычисления.

Доказательство того, что кольцо многочленов над уникальной областью факторизации также является уникальной областью факторизации, аналогично, но не дает алгоритма, потому что не существует общего алгоритма факторизации одномерных многочленов над полем (есть примеры полей, для которых есть не существует никакого алгоритма факторизации для одномерных многочленов).

Псевдоостаточные последовательности

В этом разделе мы рассмотрим область целостности Z (обычно кольцо Z целых чисел) и его поле дробей Q (обычно поле Q рациональных чисел). Даны два полинома А и B в кольце одномерных многочленов Z[Икс], евклидово деление (над Q) из А к B обеспечивает частное и остаток, которые могут не принадлежать Z[Икс].

Ведь если применить алгоритм Евклида к следующим многочленам [3]

и

последовательные остатки алгоритма Евклида

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

В псевдоделение был введен, чтобы разрешить вариант алгоритма Евклида, для которого все остатки принадлежат Z[Икс].

Если и и аб, то псевдо-остаток псевдоделения А к B, обозначаемый prem (А,B) является

куда lc (B) старший коэффициент B (коэффициент Иксб).

Псевдо-остаток от псевдоразделения двух многочленов от Z[Икс] всегда принадлежит Z[Икс].

А псевдоостаточная последовательность - последовательность (псевдо) остатков ря получается заменой по инструкции

алгоритма Евклида

куда α является элементом Z который делит ровно каждый коэффициент числителя. Различные варианты α дают разные псевдоостаточные последовательности, которые описаны в следующих подразделах.

Поскольку общие делители двух многочленов не изменяются, если многочлены умножаются на обратимые константы (в Q) последний ненулевой член в последовательности псевдоостаточных остатков является НОД (в Q[Икс]) входных полиномов. Следовательно, последовательности псевдоостаточных остатков позволяют вычислять НОД в Q[Икс] без дроби в Q.

В некоторых случаях важно контролировать знак ведущего коэффициента псевдоостаточного остатка. Обычно это происходит при вычислении результирующие и субрезультаты, или для использования Теорема Штурма. Этот контроль можно сделать либо путем замены lc (B) по его абсолютному значению в определении псевдоостаточного остатка или путем управления знаком α (если α делит все коэффициенты остатка, то же верно и для α).[1]

Тривиальная псевдоостаточная последовательность

Простейшая (определяемая) остаточная последовательность состоит в том, чтобы всегда брать α = 1. На практике это не интересно, поскольку размер коэффициентов экспоненциально растет с увеличением степени входных полиномов. Это ясно видно на примере предыдущего раздела, для которого последовательные псевдоостаточные числа

Количество разрядов коэффициентов последовательных остатков увеличивается более чем вдвое на каждой итерации алгоритма. Это типичное поведение тривиальных последовательностей псевдоостаточных остатков.

Примитивная псевдоостаточная последовательность

В примитивная псевдоостаточная последовательность состоит в том, чтобы принять за α содержание числителя. Таким образом, все ря являются примитивными многочленами.

Примитивная последовательность псевдоостаточного остатка - это последовательность псевдоостаточного остатка, которая генерирует наименьшие коэффициенты. Однако для этого требуется вычислить количество НОД в Z, и поэтому не является достаточно эффективным для использования на практике, особенно когда Z само является кольцом многочленов.

При том же вводе, что и в предыдущих разделах, последующие остатки после деления по их содержанию

Небольшой размер коэффициентов скрывает тот факт, что было вычислено количество целых чисел НОД и делений НОД.

Субрезультант псевдоостаточной последовательности

Подрезультатная последовательность также может быть вычислена с помощью псевдоостаточных остатков. Процесс заключается в выборе α таким образом, чтобы каждый ря является подрезультатным многочленом. Удивительно, но вычисление α очень просто (см. ниже). С другой стороны, доказательство правильности алгоритма затруднено, потому что оно должно учитывать все возможности разности степеней двух последовательных остатков.

Коэффициенты в подрезультатной последовательности редко бывают намного больше, чем коэффициенты примитивной псевдоостаточной последовательности. Как вычисления GCD в Z не нужны, подрезультатная последовательность с псевдоостаточными остатками дает наиболее эффективные вычисления.

При том же вводе, что и в предыдущих разделах, последующие остатки

Коэффициенты имеют разумный размер. Они получены без вычисления НОД, только точные деления. Это делает этот алгоритм более эффективным, чем алгоритм примитивных последовательностей псевдоостаточных остатков.

Алгоритм вычисления подрезультатной последовательности с псевдоостаточными остатками приведен ниже. В этом алгоритме вход (а, б) является парой многочленов от Z[ИКС]. В ря последовательные псевдоостаточные числа в Z[X], переменные я и dя неотрицательные целые числа, а греческие буквы обозначают элементы в Z. Функции град () и rem () обозначают степень полинома и остаток от евклидова деления. В алгоритме этот остаток всегда находится в Z[ИКС]. Наконец, деления, обозначенные /, всегда точны и имеют результат либо в Z[X] или в Z.

за (; ; ) делать        если  тогда            еще            конец, если    конец делать.

Примечание: «lc» обозначает старший коэффициент, коэффициент наивысшей степени переменной.

Этот алгоритм вычисляет не только наибольший общий делитель (последний ненулевой ря), но также и все подрезультатные полиномы: остаток ря это (град (ря−1) − 1)-й подрезультатный многочлен. Если град (ря) ря−1) − 1, то град (ря)-й подрезультатный многочлен равен lc (ря)град (ря−1) −deg (ря)−1ря. Все остальные подрезультатные полиномы равны нулю.

Последовательность Штурма с псевдоостаточными остатками

Можно использовать псевдоостаточные остатки для построения последовательностей, имеющих те же свойства, что и Последовательности Штурма. Это требует контроля знаков последовательных псевдоостаточных остатков, чтобы они имели те же знаки, что и в последовательности Штурма. Это можно сделать, задав модифицированный псевдоостаточный остаток следующим образом.

Если и и аб, модифицированный псевдоостаточный остаток prem2 (А, B) псевдоделения А к B является

где | lc (B) | - модуль старшего коэффициента B (коэффициент Иксб).

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

Обратите внимание, что приведенный выше алгоритм вычисления подрезультантной псевдоостаточной последовательности будет вычислять неправильные подрезультатные полиномы, если используется вместо .

Модульный алгоритм GCD

Если ж и грамм являются многочленами от F[Икс] для некоторого конечно порожденного поля F, алгоритм Евклида - наиболее естественный способ вычисления их НОД. Однако современные компьютерная алгебра системы используют его, только если F конечно из-за явления, называемого набухание промежуточной экспрессии. Хотя градусы продолжают уменьшаться во время алгоритма Евклида, если F не является конечный тогда битовый размер многочленов может увеличиваться (иногда значительно) во время вычислений, потому что повторяющиеся арифметические операции в F имеет тенденцию приводить к более крупным выражениям. Например, сложение двух рациональных чисел, знаменатели которых ограничены б приводит к рациональному числу, знаменатель которого ограничен б2, поэтому в худшем случае размер битов может почти удвоиться всего за одну операцию.

Чтобы ускорить расчет, возьмите кольцо D для которого ж и грамм находятся в D[Икс] и возьмем идеал я такой, что D/я конечное кольцо. Затем вычислите НОД над этим конечным кольцом с помощью алгоритма Евклида. Используя методы реконструкции (Китайская теорема об остатках, рациональная реконструкция и т. д.) можно восстановить НОД ж и грамм из его образа по модулю ряда идеалов я. Можно доказать[4] что это работает при условии, что один отбрасывает модульные изображения с неминимальными степенями и избегает идеалов я по модулю, при котором старший коэффициент обращается в нуль.

Предполагать , , и . Если мы возьмем тогда это конечное кольцо (не поле, так как не является максимальным в ). Алгоритм Евклида, примененный к изображениям в выполняется успешно и возвращает 1. Это означает, что НОД в также должно быть 1.Обратите внимание, что этот пример можно легко обработать любым методом, поскольку степени были слишком малы для возникновения раздува выражения, но он показывает, что если два полинома имеют НОД 1, то модульный алгоритм, вероятно, завершится после одного идеала. .

Смотрите также

Рекомендации

  1. ^ а б Басу, Поллак и Рой 2006
  2. ^ Многие авторы определяют матрицу Сильвестра как транспонирование S. Это нарушает обычное соглашение о написании матрицы линейной карты.
  3. ^ Кнут 1969
  4. ^ ван Хойдж и Монаган 2004
  • Басу, Саугата; Поллак, Ричард; Рой, Мари-Франсуаза (2006). Алгоритмы в реальной алгебраической геометрии, глава 4.2. Springer-Verlag.CS1 maint: ref = harv (связь)
  • Давенпорт, Джеймс Х.; Сирет, Ивон; Турнье, Эвелин (1988). Компьютерная алгебра: системы и алгоритмы алгебраических вычислений. Перевод с французского А. Давенпорта и Дж. Х. Давенпорт. Академическая пресса. ISBN  978-0-12-204230-0.CS1 maint: ref = harv (связь)
  • van Hoeij, M .; Монаган, М. (2004), Алгоритмы вычисления полиномиального НОД над полями алгебраических функций, стр. 297–304
  • Javadi, S.M.M .; Монаган, М. (2007), Разреженный модульный алгоритм НОД для полиномов над полями алгебраических функций, стр. 187–194
  • Кнут, Дональд Э. (1969). Искусство программирования II. Эддисон-Уэсли. С. 370–371.CS1 maint: ref = harv (связь)
  • Кнут, Дональд Э. (1997). Получисловые алгоритмы. Искусство программирования. 2 (Третье изд.). Ридинг, Массачусетс: Эддисон-Уэсли. С. 439–461, 678–691. ISBN  0-201-89684-2.CS1 maint: ref = harv (связь)
  • Лоос, Рудигер (1982), «Обобщенные полиномиальные последовательности остатков», в Б. Бухбергере; Р. Лоос; Г. Коллинз (ред.), Компьютерная алгебра, Springer Verlag