Полиномиальный наибольший общий делитель
Эта статья нуждается в дополнительных цитатах для проверки . ( сентябрь 2012 г. ) |
В алгебре наибольший общий делитель (часто называемый НОД) двух многочленов — это многочлен максимально возможной степени, который является делителем обоих исходных многочленов. Это понятие аналогично наибольшему общему делителю двух целых чисел.
В важном случае одномерных полиномов над полем полином НОД может быть вычислен, как и целочисленный НОД, с помощью алгоритма Евклида с использованием длинного деления . Полином НОД определен только с точностью до умножения на обратимую константу.
Сходство между целочисленным НОД и полиномиальным НОД позволяет распространить на одномерные многочлены все свойства, которые можно вывести из алгоритма Евклида и евклидова деления . Более того, полином НОД обладает специфическими свойствами, которые делают его фундаментальным понятием в различных областях алгебры. Обычно корни НОД двух многочленов являются общими корнями двух многочленов, и это дает информацию о корнях без их вычисления. Например, кратные корни многочлена являются корнями НОД многочлена и его производной, а дальнейшие вычисления НОД позволяют вычислить бесквадратную факторизацию многочлена, которая дает многочлены, корни которых являются корнями заданной кратности . исходный полином.
Наибольший общий делитель может быть определен и существует, в более общем смысле, для многомерных многочленов над полем или кольцом целых чисел, а также над уникальной областью факторизации . Существуют алгоритмы для их вычисления, как только в кольце коэффициентов есть алгоритм НОД. Эти алгоритмы используют рекурсию по числу переменных, чтобы свести проблему к варианту алгоритма Евклида. Они являются фундаментальным инструментом компьютерной алгебры , поскольку системы компьютерной алгебры систематически используют их для упрощения дробей. И наоборот, большая часть современной теории полиномиального НОД была разработана для удовлетворения потребностей в эффективности систем компьютерной алгебры.
Общее определение
[ редактировать ]Пусть p и q — полиномы с коэффициентами в области целостности F , обычно это поле или целые числа. Наибольший общий делитель p и q — это многочлен d , который делит p и q , и такой, что каждый общий делитель p и q также делит d . Каждая пара полиномов (не оба равны нулю) имеет НОД тогда и только тогда, когда F — уникальная область факторизации .
Если F — поле и p и q не равны нулю, многочлен d является наибольшим общим делителем тогда и только тогда, когда он делит оба p и q , и он имеет наибольшую степень среди многочленов, обладающих этим свойством. Если p = q = 0 , НОД равен 0. Однако некоторые авторы считают, что в этом случае он не определен.
Наибольший общий делитель p и q обычно обозначается « НОД( p , q ) ».
Наибольший общий делитель не уникален: если d — НОД чисел p и q , то многочлен f является другим НОД тогда и только тогда, когда существует обратимый элемент u из F такой, что и Другими словами, НОД уникален с точностью до умножения на обратимую константу.
В случае целых чисел эта неопределенность устраняется путем выбора в качестве НОД единственного положительного числа (есть еще одно, противоположное ему). Согласно этому соглашению, НОД двух целых чисел также является наибольшим (для обычного порядка) общим делителем. Однако, поскольку для многочленов в области целочисленности не существует естественного полного порядка , здесь нельзя действовать таким же образом. Для одномерных многочленов над полем можно дополнительно потребовать, чтобы НОД был унитарным (то есть имел 1 в качестве коэффициента высшей степени), но в более общих случаях общего соглашения не существует. Следовательно, равенства типа d = НОД( p , q ) или НОД( p , q ) = НОД( r , s ) являются частым злоупотреблением обозначениями, которые следует читать « d — НОД чисел p и q » и « p и q». имеют тот же набор НОД, что и r и s ". В частности, НОД( p , q ) = 1 означает, что обратимые константы являются единственными общими делителями. В этом случае по аналогии с целочисленным случаем говорят, что p и q равны взаимно простые полиномы .
Характеристики
[ редактировать ]- Как указано выше, НОД двух многочленов существует, если коэффициенты принадлежат либо полю, кольцу целых чисел, либо, в более общем смысле, уникальной области факторизации .
- Если c — любой общий делитель p и q , то c делит их НОД.
- для любого полинома r . Это свойство лежит в основе доказательства алгоритма Евклида.
- Для любого обратимого элемента k кольца коэффициентов .
- Следовательно для любых скаляров такой, что является обратимым.
- Если , затем .
- Если , затем .
- Для двух одномерных многочленов p и q над полем существуют многочлены a и b такие, что и делит каждую такую линейную комбинацию p и q ( тождество Безу ).
- Наибольший общий делитель трех и более многочленов можно определить так же, как и для двух многочленов. Его можно вычислить рекурсивно из НОД двух полиномов с помощью тождеств: и
НОД вручную
[ редактировать ]Существует несколько способов найти наибольший общий делитель двух многочленов. Два из них:
- Факторизация полиномов , при которой находят факторы каждого выражения, затем выбирают набор общих факторов, принадлежащих всем, из каждого набора факторов. Этот метод может быть полезен только в простых случаях, поскольку факторизация обычно сложнее, чем вычисление наибольшего общего делителя.
- Алгоритм Евклида , который можно использовать для нахождения НОД двух многочленов так же, как и для двух чисел.
Факторинг
[ редактировать ]Чтобы найти НОД двух многочленов с помощью факторизации, просто факторизуйте два многочлена полностью. Затем возьмем произведение всех общих факторов. На этом этапе у нас не обязательно есть монический полином, поэтому, наконец, умножьте его на константу, чтобы получить монический полином. Это будет НОД двух многочленов, поскольку он включает в себя все общие делители и является моническим.
Пример первый. Найдите НОД числа x. 2 + 7 х + 6 и х 2 - 5 Икс - 6 .
Таким образом, их НОД равен x + 1 .
Евклидов алгоритм
[ редактировать ]Факторизация полиномов может быть затруднена, особенно если полиномы имеют большую степень. Алгоритм Евклида — это метод, который работает для любой пары полиномов. Он неоднократно использует евклидово деление . При использовании этого алгоритма для двух чисел размер чисел уменьшается на каждом этапе. В случае полиномов степень полиномов уменьшается на каждом этапе. Последний ненулевой остаток, при необходимости сделанный унитарным , представляет собой НОД двух полиномов.
Более конкретно, для нахождения НОД двух многочленов a ( x ) и b ( x ) можно предположить b ≠ 0 (в противном случае НОД равен a ( x ) ), и
Евклидово деление дает два многочлена q ( x ) — частное и r ( x ) , — остаток такие, что
Многочлен g ( x ) делит и ( x ) , и b ( x ) тогда и только тогда, когда он делит и b ( x ) , и r0 a ( x ) . Таким образом Параметр можно повторить евклидово деление, чтобы получить новые многочлены q 1 ( x ), r 1 ( x ), a 2 ( x ), b 2 ( x ) и так далее. На каждом этапе мы имеем поэтому последовательность в конечном итоге достигнет точки, в которой и у одного есть НОД:
Пример: нахождение НОД числа x 2 + 7 х + 6 и х 2 − 5 х − 6 :
Поскольку 12 x + 12 — это последний ненулевой остаток, это НОД исходных многочленов, а монический НОД — это x + 1 .
В этом примере нетрудно избежать введения знаменателей, вынеся 12 перед вторым шагом. Это всегда можно сделать, используя последовательности псевдоостатков , но без осторожности это может привести к появлению очень больших целых чисел во время вычислений. Поэтому для компьютерных вычислений используются другие алгоритмы, описанные ниже.
Этот метод работает только в том случае, если можно проверить равенство нулю коэффициентов, возникающих при вычислении. Итак, на практике коэффициенты должны быть целыми , рациональными числами , элементами конечного поля или должны принадлежать некоторому конечно сгенерированному расширению одного из предыдущих полей. Если коэффициенты представляют собой числа с плавающей запятой , которые представляют действительные числа , известные только приблизительно, то необходимо знать степень НОД для получения четко определенного результата вычисления (это численно стабильный результат; в этих случаях можно использовать другие методы). , обычно основанный на разложении по сингулярным значениям .
Одномерные полиномы с коэффициентами в поле
[ редактировать ]Случай одномерных полиномов над полем особенно важен по нескольким причинам. Во-первых, это самый элементарный случай и поэтому он встречается в большинстве первых курсов алгебры. Во-вторых, это очень похоже на случай целых чисел, и эта аналогия является источником понятия евклидовой области . Третья причина заключается в том, что теория и алгоритмы для многомерного случая и для коэффициентов в уникальной области факторизации в значительной степени основаны на этом конкретном случае. И последнее, но не менее важное: полиномиальные алгоритмы НОД и производные алгоритмы позволяют получить полезную информацию о корнях многочлена без их вычисления.
Евклидово деление
[ редактировать ]Евклидово деление многочленов, которое используется в алгоритме Евклида для вычисления НОД, очень похоже на евклидово деление целых чисел. Его существование основано на следующей теореме: для двух одномерных многочленов a и b ≠ 0, определенных над полем, существуют два многочлена q ( частное ) и r ( остаток ), которые удовлетворяют и где " deg(...) " обозначает степень, а степень нулевого многочлена определяется как отрицательная. Более того, q и r однозначно определяются этими соотношениями.
Отличие от евклидова деления целых чисел состоит в том, что для целых чисел степень заменяется абсолютным значением и что для обеспечения уникальности необходимо предположить, что r неотрицательно. Кольца, для которых существует такая теорема, называются евклидовыми областями .
Как и в случае с целыми числами, евклидово деление многочленов можно вычислить с помощью алгоритма деления в столбик . Этот алгоритм обычно представлен для вычислений с помощью карандаша и карандаша, но он хорошо работает на компьютерах, если его формализовать следующим образом (обратите внимание, что имена переменных точно соответствуют областям листа бумаги при вычислениях с использованием карандаша и бумаги для длинных вычислений). разделение). В следующих вычислениях «deg» обозначает степень аргумента (согласно соглашению deg(0) < 0 ), а «lc» обозначает старший коэффициент, коэффициент высшей степени переменной.
Euclidean division Input: a and b ≠ 0 two polynomials in the variable x; Output: q, the quotient, and r, the remainder; begin q := 0 r := a d := deg(b) c := lc(b) while deg(r) ≥ d do s := (lc(r)/c) ⋅ xdeg(r)−d q := q + s r := r − sb end do return (q, r) end
Доказательство правильности этого алгоритма основано на том факте, что на протяжении всего цикла «пока» мы имеем a = bq + r и deg( r ) — неотрицательное целое число, которое уменьшается на каждой итерации. Таким образом, доказательство справедливости этого алгоритма также доказывает справедливость евклидова деления.
Алгоритм Евклида
[ редактировать ]Что касается целых чисел, евклидово деление позволяет нам определить алгоритм Евклида для вычисления НОД.
Начиная с двух многочленов a и b , алгоритм Евклида состоит из рекурсивной замены пары ( a , b ) на ( b , rem( a , b )) (где « rem( a , b ) » обозначает остаток евклидова деления, вычисляется по алгоритму предыдущего раздела), пока b = 0. НОД — это последний ненулевой остаток.
Алгоритм Евклида можно формализовать в стиле рекурсивного программирования следующим образом:
В императивном стиле программирования делается тот же алгоритм, дающий имя каждому промежуточному остатку:
r0 := a r1 := b for (i := 1; ri ≤ 0; i := i + 1) do ri+1 := rem(ri−1, ri) end do return ri-1.
Последовательность степеней r i строго убывающая. Таким образом, после не более чем deg( b ) можно получить нулевой остаток, скажем rk . шагов Поскольку ( a , b ) и ( b , rem( a , b )) делители, набор общих делителей не изменяется алгоритмом Евклида и, таким образом, все пары ( ri , имеют ri одинаковые +1 ) имеют одинаковые множество общих делителей. Таким образом, общие делители a и b являются общими делителями rk − 1 и 0. Таким образом, rk − 1 является НОД a и b . Это не только доказывает, что алгоритм Евклида вычисляет НОД, но и доказывает, что НОД существуют.
Личность Безу и расширенный алгоритм НОД
[ редактировать ]Тождество Безу — это теорема, связанная с НОД, первоначально доказанная для целых чисел и справедливая для любой области главных идеалов . В случае одномерных многочленов над полем это можно сформулировать следующим образом.
и либо u = 1, v = 0 , либо u = 0, v = 1 , либо
Интерес этого результата в случае полиномов состоит в том, что существует эффективный алгоритм вычисления полиномов u и v . Этот алгоритм отличается от алгоритма Евклида тем, что на каждой итерации цикла выполняется несколько дополнительных вычислений. Поэтому он называется расширенным алгоритмом НОД . Еще одно отличие алгоритма Евклида состоит в том, что он также использует частное, обозначаемое «кво», евклидова деления, а не только остаток. Этот алгоритм работает следующим образом.
Extended GCD algorithm Input: a, b, univariate polynomials Output: g, the GCD of a and b u, v, as in above statement a1, b1, such that a = g a1 b = g b1 Begin (r0, r1) := (a, b) (s0, s1) := (1, 0) (t0, t1) := (0, 1) for (i := 1; ri ≠ 0; i := i+1) do q := quo(ri−1, ri) ri+1 := ri−1 − qri si+1 := si−1 − qsi ti+1 := ti−1 − qti end do g := ri−1 u := si−1 v := ti−1 a1 := (−1)i−1 ti b1 := (−1)i ti End
Доказательство того, что алгоритм удовлетворяет своей выходной спецификации, основано на том факте, что для каждого i имеем последнее равенство подразумевает Утверждение о степенях следует из того, что на каждой итерации степени s i и ti увеличиваются степени ri не более чем по мере уменьшения .
Интересной особенностью этого алгоритма является то, что, когда нужны коэффициенты тождества Безу, можно бесплатно получить частное входных полиномов по их НОД.
Арифметика алгебраических расширений
[ редактировать ]Важным применением расширенного алгоритма НОД является то, что он позволяет вычислять деление в расширениях алгебраических полей .
Пусть L — алгебраическое расширение поля K , порожденное элементом, минимальный многочлен f которого имеет степень n . Элементы L обычно представляются одномерными полиномами над K степени меньше n .
Сложение в L — это просто сложение полиномов:
Умножение в L — это умножение многочленов с последующим делением на f :
Обратным к ненулевому элементу a из L является коэффициент u в тождестве Безу au + fv = 1 , который можно вычислить с помощью расширенного алгоритма НОД. (НОД равен 1, поскольку минимальный многочлен f неприводим). Неравенство степеней в спецификации расширенного алгоритма НОД показывает, что дальнейшее деление на f не требуется, чтобы получить deg( u ) < deg( f ).
Промежуточные результаты
[ редактировать ]В случае одномерных полиномов существует сильная связь между наибольшими общими делителями и результирующими . Точнее, результат двух многочленов P , Q является полиномиальной функцией коэффициентов P и Q , которая имеет нулевое значение тогда и только тогда, когда НОД P и Q не является постоянным.
Теория подрезультатов является обобщением этого свойства, которое позволяет в общем случае охарактеризовать НОД двух полиномов, а результирующим является 0-й подрезультатный полином. [1]
подрезультатный i -й многочлен S i ( P , Q ) двух многочленов P и Q — это многочлен степени не выше i, коэффициенты которого являются полиномиальными функциями коэффициентов P и Q , а i -й главный подрезультатный коэффициент s i ( P , Q ) коэффициент i S i ( ) P , Q . степени Они обладают тем свойством, что НОД P и Q имеет степень d тогда и только тогда, когда
В этом случае S d ( P , Q ) является НОД P и Q и
коэффициент промежуточных полиномов определяется как определитель подматрицы матрицы Сильвестра P Каждый и Q . Это означает, что промежуточные результаты хорошо «специализируются». Точнее, промежуточные результаты определены для полиномов над любым коммутативным кольцом R и обладают следующим свойством.
Пусть φ кольцевой гомоморфизм кольца R в другое коммутативное кольцо S. — Он продолжается до другого гомоморфизма, обозначаемого также φ, между кольцами полиномов над R и S . Тогда, если P и Q — одномерные многочлены с коэффициентами из R такие, что и тогда промежуточные полиномы и главные промежуточные коэффициенты φ ( P ) и φ ( Q ) являются образом φ полиномов P и Q .
Промежуточные результаты обладают двумя важными свойствами, которые делают их фундаментальными для вычисления на компьютерах НОД двух полиномов с целыми коэффициентами. Во-первых, их определение через определители позволяет ограничить через неравенство Адамара размер коэффициентов НОД. Во-вторых, эта оценка и свойство хорошей специализации позволяют вычислять НОД двух многочленов с целыми коэффициентами с помощью модульных вычислений и китайской теоремы об остатках (см. ниже ).
Техническое определение
[ редактировать ]Позволять два одномерных многочлена с коэффициентами в поле K. — Обозначим через векторное пространство K размерности i полиномов степени меньше i . Для неотрицательного целого числа i такого, что i ≤ m и i ≤ n , пусть — линейное отображение такое, что
Результат и P , которая является является Q определителем матрицы Сильвестра (квадратной) матрицей на основе степеней X . Аналогично, i -подрезультирующий полином определяется через определители подматриц матрицы
Опишем эти матрицы более точно;
Пусть p i = 0 для i < 0 или i > m , и q i = 0 для i < 0 или i > n . Матрица Сильвестра — это ( m + n ) × ( m + n ) -матрица такая, что коэффициент i -й строки и j -го столбца pm равен + j - i для j ≤ n и q j - i для j > n : [примечание 1]
Матрица T i — это ( m + n − i ) × ( m + n − 2 i ) -подматрица матрицы S , полученная удалением последних i строк нулей в подматрице столбцов от 1 до n − i и от n + 1 до m. + n − i из S (то есть удаление i столбцов в каждом блоке и i последних строк нулей). Главный промежуточный коэффициент s i является определителем m + n − 2 i первых строк таблицы T i .
Пусть V i — матрица ( m + n - 2 i ) × ( m + n - i ) , определенная следующим образом. Сначала мы добавляем ( i + 1) столбцов нулей справа от ( m + n − 2 i − 1) × ( m + n − 2 i − 1) единичной матрицы . Затем мы ограничиваем нижнюю часть полученной матрицы строкой, состоящей из ( m + n − i − 1) нулей, за которыми следует X я , Х я -1 , ..., Х , 1 :
При таких обозначениях i - й промежуточный полином является определителем матричного произведения V i T i . Ее коэффициент степени j является определителем квадратной подматрицы T i, состоящей из ее m + n - 2 i - 1 первых строк и ( m + n - i - j ) -й строки.
Эскиз доказательства
[ редактировать ]Не очевидно, что, как определено, промежуточные результаты обладают желаемыми свойствами. Тем не менее, доказательство оказывается довольно простым, если объединить свойства линейной алгебры и полиномов.
Согласно определению, столбцы матрицы T i представляют собой векторы коэффициентов некоторых полиномов, принадлежащих образу . Определение i -го промежуточного многочлена S i что вектор его коэффициентов представляет собой линейную комбинацию этих вектор-столбцов и, таким образом, что Si показывает , принадлежит образу
Если степень НОД больше i , то тождество Безу показывает, что каждый ненулевой многочлен в образе имеет степень выше, чем я . Это означает, что S i = 0 .
Если, с другой стороны, степень НОД равна i , то тождество Безу снова позволяет доказать, что кратные НОД, имеющие степень ниже m + n − i, находятся в образе . Векторное пространство этих кратных имеет размерность m + n − 2 i и имеет базу из полиномов попарно разных степеней, не меньших i . Это означает, что подматрица m + n − 2 i первых строк формы эшелона столбцов T i является единичной матрицей и, следовательно, s i не равна 0. Таким образом, S i является многочленом в образе , которое кратно НОД и имеет ту же степень. Таким образом, это наибольший общий делитель.
НОД и поиск корня
[ редактировать ]Бесквадратная факторизация
[ редактировать ]Большинство алгоритмов поиска корней плохо работают с полиномами, имеющими несколько корней . Поэтому полезно обнаружить и удалить их перед вызовом алгоритма поиска корня. Вычисление НОД позволяет обнаружить существование кратных корней, поскольку кратные корни многочлена являются корнями НОД многочлена и его производной .
После вычисления НОД полинома и его производной дальнейшие вычисления НОД обеспечивают полную безквадратную факторизацию многочлена, которая представляет собой факторизацию где для каждого i многочлен f i либо равен 1, если f не имеет корня кратности i , либо является многочленом без квадратов (то есть многочленом без кратного корня), корни которого в точности являются корнями кратности i из f (см. алгоритм Юна ).
Таким образом, факторизация без квадратов сводит поиск корня многочлена с кратными корнями к поиску корня из нескольких многочленов без квадратов более низкой степени. Факторизация без квадратов также является первым шагом в большинстве алгоритмов полиномиальной факторизации .
Последовательность Штурма
[ редактировать ]Последовательность Штурма многочлена с действительными коэффициентами — это последовательность остатков, полученная с помощью варианта алгоритма Евклида, примененного к многочлену и его производной. Для получения последовательности Штурма достаточно просто заменить инструкцию алгоритма Евклида
Пусть V ( a ) — количество смен знаков в последовательности при оценке в точке a . Теорема Штурма утверждает, что V ( a ) − V ( b ) — это количество действительных корней многочлена в интервале [ a , b ] . Таким образом, последовательность Штурма позволяет вычислить количество вещественных корней в заданном интервале. Разделив интервал до тех пор, пока каждый подинтервал не будет содержать не более одного корня, это обеспечивает алгоритм, который находит действительные корни в интервалах произвольно малой длины.
НОД над кольцом и его полем дробей
[ редактировать ]В этом разделе мы рассматриваем полиномы над уникальной областью факторизации R , обычно кольцом целых чисел, и над его полем частных F , обычно полем рациональных чисел, и мы обозначаем R [ X ] и F [ X ] кольца многочленов от множества переменных над этими кольцами.
Примитивная факторизация части – содержания
[ редактировать ]Содержимое p многочлена p ∈ R [ X ] , обозначаемое « cont( ) » , является НОД его коэффициентов. Многочлен q ∈ F [ X ] можно записать где p ∈ R [ X ] и c ∈ R : достаточно взять в качестве c кратное всем знаменателям коэффициентов q (например, их произведение) и p = cq . Содержимое определяется q : как В обоих случаях содержание определяется с точностью до единицу R. на умножения
Примитивная часть многочлена в R [ X ] или F [ X ] определяется формулой
В обоих случаях это полином из R [ X ], который является примитивным , что означает, что 1 является НОД его коэффициентов.
Таким образом, каждый многочлен из R [ X ] или F [ X ] может быть факторизован как и эта факторизация уникальна с точностью до умножения содержания на единицу R и примитивной части на обратную эту единицу.
Лемма Гаусса подразумевает, что произведение двух примитивных многочленов примитивно. Отсюда следует, что и
Связь между НОД над R и над F
[ редактировать ]Соотношения предыдущего раздела подразумевают сильную связь между НОД в R [ X ] и в F [ X ] . Чтобы избежать двусмысленности, обозначение « НОД » в дальнейшем будет индексироваться по кольцу, в котором вычисляется НОД.
Если q1 и q2 , принадлежат F [ X ] то
Если p1 и p2 X принадлежат R [ ] , то и
Таким образом, вычисление полиномиальных НОД — это, по сути, одна и та же проблема над F [ X ] и над R [ X ] .
Для одномерных многочленов над рациональными числами можно подумать, что алгоритм Евклида является удобным методом вычисления НОД. Однако он предполагает упрощение большого количества дробей целых чисел, и полученный алгоритм неэффективен. По этой причине были разработаны методы для модификации алгоритма Евклида для работы только с полиномами над целыми числами. Они заключаются в замене евклидова деления, вводящего дроби, на так называемое псевдоделение и замене остаточной последовательности алгоритма Евклида так называемыми псевдоостаточными последовательностями (см. ниже ).
Доказательство существования НОД для многомерных многочленов.
[ редактировать ]В предыдущем разделе мы видели, что НОД полиномов в R [ X ] можно вывести из НОД в R и в F [ X ] . Более пристальный взгляд на доказательство показывает, что это позволяет нам доказать существование НОД в R [ X ] , если они существуют в R и в F [ X ] . В частности, если НОД существуют в R и если X сводится к одной переменной, это доказывает, что НОД существуют в R [ X ] (алгоритм Евклида доказывает существование НОД в F [ X ] ).
Полином от n переменных можно рассматривать как одномерный многочлен над кольцом многочленов от ( n - 1 ) переменных. Таким образом, рекурсия по числу переменных показывает, что если НОД существуют и могут быть вычислены в , то они существуют и могут быть вычислены в каждом кольце многомерных полиномов над R. R В частности, если R — либо кольцо целых чисел, либо поле, то НОД существуют в R [ x 1 , ..., x n ] , и то, что предшествует, предоставляет алгоритм для их вычисления.
Доказательство того, что кольцо полиномов над уникальной областью факторизации также является уникальной областью факторизации, аналогично, но оно не дает алгоритма, поскольку не существует общего алгоритма факторизации одномерных многочленов по полю (есть примеры полей, для которых не существует алгоритма факторизации одномерных многочленов).
Последовательности псевдоостатков
[ редактировать ]В этом разделе мы рассматриваем область целостности Z (обычно кольцо Z целых чисел) и ее поле частных Q (обычно поле Q рациональных чисел). Учитывая два многочлена A и B в кольце одномерных многочленов Z [ X ] , евклидово деление (над Q ) A на B дает частное и остаток, которые могут не принадлежать Z [ X ] .
Ибо, если применить алгоритм Евклида к следующим полиномам [2] и последовательные остатки алгоритма Евклида равны Видно, что, несмотря на малую степень и малый размер коэффициентов входных полиномов, приходится манипулировать и упрощать целые дроби достаточно большого размера.
The псевдоделение было введено, чтобы разрешить вариант алгоритма Евклида, для которого все остатки принадлежат Z [ X ] .
Если и и a ≥ b псевдоостаток , от псевдо деления A на B , обозначаемый prem( A , B ) равен где lc( B ) — старший коэффициент B (коэффициент X б ).
Псевдоостаток от псевдоделения двух многочленов из Z [ X ] всегда принадлежит Z [ X ] .
Последовательность псевдоостатков — это последовательность (псевдо)остатков r i, полученная заменой инструкции алгоритма Евклида где α — элемент Z , который делит ровно каждый коэффициент числителя. Разный выбор α дает разные последовательности псевдоостатков, которые описаны в следующих подразделах.
Поскольку общие делители двух многочленов не изменяются, если многочлены умножаются на обратимые константы (в Q ), последний ненулевой член в последовательности псевдоостатка является НОД (в Q [ X ] ) входных многочленов. Следовательно, последовательности псевдоостатков позволяют вычислять НОД в Q [ X ] без введения дробей в Q .
В некоторых контекстах важно контролировать знак старшего коэффициента псевдоостатка. Обычно это происходит при вычислении результирующих и промежуточных результатов или при использовании теоремы Штурма . Этот контроль можно осуществить либо путем замены lc( B ) его абсолютным значением в определении псевдоостатка, либо путем контроля знака α (если α делит все коэффициенты остатка, то же самое справедливо и для − α ). . [1]
Тривиальная последовательность псевдоостатка
[ редактировать ]Простейшая (для определения) остаточная последовательность состоит в том, чтобы всегда брать α = 1 . На практике это неинтересно, поскольку размер коэффициентов растет экспоненциально со степенью входных полиномов. Это ясно видно на примере предыдущего раздела, для которого последовательные псевдоостатки Количество разрядов коэффициентов последовательных остатков увеличивается более чем в два раза на каждой итерации алгоритма. Это типичное поведение тривиальных последовательностей псевдоостатков.
Примитивная последовательность псевдоостатка
[ редактировать ]Примитивная последовательность псевдоостатка состоит в том, что в качестве α принимается содержимое числителя. Таким образом, все r i являются примитивными полиномами.
Примитивная последовательность псевдоостатка — это последовательность псевдоостатка, которая генерирует наименьшие коэффициенты. Однако он требует вычисления нескольких НОД в Z и, следовательно, недостаточно эффективен для использования на практике, особенно когда Z само является кольцом полиномов.
При том же вводе, что и в предыдущих разделах, последовательные остатки после деления по их содержанию Небольшой размер коэффициентов скрывает тот факт, что было вычислено количество целых чисел НОД и делений на НОД.
Подрезультативная последовательность псевдоостатка
[ редактировать ]Промежуточную последовательность также можно вычислить с помощью псевдоостатков. Процесс заключается в выборе α таким образом, чтобы каждый r i был подрезультативным полиномом. Удивительно, но вычислить α очень просто (см. ниже). С другой стороны, доказательство корректности алгоритма затруднено, поскольку оно должно учитывать все возможности различия степеней двух последовательных остатков.
Коэффициенты в промежуточной последовательности редко намного превышают коэффициенты примитивной последовательности псевдоостатка. Поскольку вычисления НОД в Z не нужны, промежуточная последовательность с псевдоостатками дает наиболее эффективные вычисления.
При тех же входных данных, что и в предыдущих разделах, последовательные остатки Коэффициенты имеют разумный размер. Они получаются без каких-либо вычислений НОД, только точные деления. Это делает этот алгоритм более эффективным, чем алгоритм примитивных последовательностей псевдоостатков.
Алгоритм вычисления промежуточной последовательности с псевдоостатками приведен ниже. В этом алгоритме входные данные ( a , b ) представляют собой пару полиномов от Z [ X ] . r — i это последовательные псевдоостатки в Z [ X ] , переменные i и d i неотрицательные целые числа, а греческие буквы обозначают элементы в Z. — Функции deg()
и rem()
обозначают степень многочлена и остаток евклидова деления. В алгоритме этот остаток всегда находится в Z [ X ] . деления, обозначаемые /, всегда точны и дают результат либо в Z [ X ], либо в Z. Наконец ,
r0 := a r1 := b for (i := 1; ri ≠ 0; i := i+1) do di := deg(ri−1) − deg(ri) γi := lc(ri) if i = 1 then β1 := (−1)d1+1 ψ1 := −1 else ψi := (−γi−1)di−1 / ψi−1di−1−1 βi := −γi−1ψidi end if ri+1 := rem(γidi+1 ri−1, ri) / βi end for
Примечание: «lc» обозначает ведущий коэффициент, коэффициент высшей степени переменной.
Этот алгоритм вычисляет не только наибольший общий делитель (последний ненулевой r i ), но и все промежуточные полиномы: остаток r i представляет собой (deg( r i −1 ) − 1) -й промежуточный полином. Если deg( r i ) < deg( r i −1 ) − 1 , deg( r i ) -й промежуточный многочлен равен lc( r i ) ты( р я -1 )-deg( р я )-1 р я . Все остальные промежуточные полиномы равны нулю.
Последовательность Штурма с псевдоостатками
[ редактировать ]Псевдоостатки можно использовать для построения последовательностей, имеющих те же свойства, что и последовательности Штурма . Для этого необходимо контролировать знаки последовательных псевдоостатков, чтобы они имели те же знаки, что и в последовательности Штурма. Это можно сделать, определив модифицированный псевдоостаток следующим образом.
Если и и a ≥ b модифицированный псевдоостаток prem2( A , B ) псевдоделения A на B равен где | ЖК( Б ) | – абсолютное значение старшего коэффициента B (коэффициент X б ).
Для входных полиномов с целыми коэффициентами это позволяет получить последовательности Штурма, состоящие из полиномов с целыми коэффициентами. Полученная последовательность псевдоостатков может быть изменена аналогичным образом, и в этом случае знаки остатков совпадают со знаками, вычисленными по рациональным числам.
Обратите внимание, что алгоритм вычисления промежуточной последовательности псевдоостатка, приведенный выше, будет вычислять неправильные промежуточные полиномы, если использовать вместо .
Модульный алгоритм НОД
[ редактировать ]Если f и g являются полиномами от F [ x ] для некоторого конечно порожденного поля F , алгоритм Евклида является наиболее естественным способом вычисления их НОД. Однако современные системы компьютерной алгебры используют его только в том случае, если F конечно из-за явления, называемого увеличением промежуточного выражения . Хотя степени продолжают уменьшаться во время работы алгоритма Евклида, если F не конечно , то разрядность полиномов может увеличиваться (иногда резко) во время вычислений, поскольку повторяющиеся арифметические операции в F имеют тенденцию приводить к более крупным выражениям. Например, сложение двух рациональных чисел, знаменатели которых ограничены b, приводит к рациональному числу, знаменатель которого ограничен b. 2 , поэтому в худшем случае размер бита может почти удвоиться всего за одну операцию.
Чтобы ускорить вычисление, возьмем кольцо D, для которого f и g находятся в D [ x ] , и возьмем идеал I такой, что D / I — конечное кольцо. Затем вычислите НОД над этим конечным кольцом с помощью алгоритма Евклида. Используя методы реконструкции ( китайская теорема об остатках , рациональная реконструкция можно восстановить НОД функции f и g по ее образу по модулю числа идеалов I. и т. д.) , Можно доказать [3] что это работает при условии, что мы отбрасываем модульные изображения с неминимальными степенями и избегаем идеалов I по модулю, у которых старший коэффициент равен нулю.
Предполагать , , и . Если мы возьмем затем является конечным кольцом (не полем, поскольку не является максимальным в ). Алгоритм Евклида, примененный к изображениям в завершается успешно и возвращает 1. Это означает, что НОД в тоже должно быть 1. Обратите внимание, что этот пример можно легко обработать любым методом, поскольку степени были слишком малы для возникновения раздутия выражения, но он иллюстрирует, что если два многочлена имеют НОД 1, то модульный алгоритм, скорее всего, завершится после достижения единственного идеала. .
См. также
[ редактировать ]Примечания
[ редактировать ]- ^ транспонирование S. Многие авторы определяют матрицу Сильвестра как Это нарушает обычное соглашение о написании матрицы линейной карты.
Ссылки
[ редактировать ]Цитаты
[ редактировать ]Библиография
[ редактировать ]- Басу, Саугата; Поллак, Ричард; Рой, Мари-Франсуаза (2006). Алгоритмы реальной алгебраической геометрии, глава 4.2 . Спрингер-Верлаг .
- Давенпорт, Джеймс Х .; Сирет, Ивон; Турнье, Эвелин (1988). Компьютерная алгебра: системы и алгоритмы алгебраических вычислений . Перевод с французского А. Давенпорта и Дж. Х. Давенпорта. Академическая пресса. ISBN 978-0-12-204230-0 .
- ван Хой, М.; Монаган, МБ (2004). Алгоритмы вычисления полиномиального НОД над полями алгебраических функций . ISSAC 2004. стр. 297–304.
- Джавади, СММ; Монаган, МБ (2007). Разреженный модульный алгоритм НОД для полиномов над полями алгебраических функций . ISSAC 2007. стр. 187–194.
- Кнут, Дональд Э. (1969). Искусство компьютерного программирования II . Аддисон-Уэсли. стр. 370–371.
- Кнут, Дональд Э. (1997). Получисловые алгоритмы . Искусство компьютерного программирования. Том. 2 (Третье изд.). Ридинг, Массачусетс: Аддисон-Уэсли. стр. 439–461, 678–691. ISBN 0-201-89684-2 .
- Лоос, Рюдигер (1982), «Обобщенные полиномиальные остаточные последовательности», у Б. Бухбергера; Р. Лоос; Дж. Коллинз (ред.), Компьютерная алгебра , Springer Verlag