Понкратьев Е. В. - Элементы КА
.pdf21. АЛГОРИТМЫ, ОСНОВАННЫЕ НА ВЫБОРЕ МАЛОГО ВЕКТОРА 205
А39. АЛГОРИТМ (выделить-неприводимый-множитель).
Дано: f (x) Z[x], deg f (x) = m
Надо: g(x) Z[x], g(x) неприводим в Z[x]
Переменные: решетка L
Начало
вычислить начальное приближение α˜ корня α и значение S, такое, что в шаре с центром α˜ радиуса S содержится ровно один
корень многочлена f L.базис[0] := 1
успех := "нет"
цикл для n от 1 до m − 1 пока не успех
L.базис[n] := xn
минимальный многочлен (L, успех)
конец цикла если успех то
g(x) := L.базис[0]
иначе
g(x) := f (x)
конец если Конец
21.5. p-адическая метрика. Переходим к подробному изложению алгоритма факторизации многочленов от одной переменной, основанному на использовании p-адической метрики и построении редуцированного базиса решетки. Предполагаем, что мы нашли неприводимый по модулю некоторого простого числа p множитель многочлена f (x) Z[x], и что мы подняли этот неприводимый множитель до некоторого множителя h(x), делящего многочлен f (x) по модулю некоторой степени числа p. Предположим также, что старший коэффициент многочлена h(x) равен 1 и что многочлен f (x) не делится на h2(x) по модулю p. Таким образом, предполагаем, что
lc(h) = 1 |
(21.16) |
|
(h |
mod pk ) делит (f mod pk) в (Z/pk Z)[x] |
(21.17) |
(h |
mod p) неприводим в Fp[x] |
(21.18) |
(h |
mod p)2 не делит (f mod p) в кольце Fp[x] |
(21.19) |
Положим l = deg(h), тогда 0 < l 6 n = deg(f ).
Покажем, что множество многочленов g(x) Z[x], которые делятся по модулю p на многочлен h(x), образуют в Z[x] главный
206 |
ГЛАВА 5. ФАКТОРИЗАЦИЯ МНОГОЧЛЕНОВ |
|
|
идеал, порожденный некоторым неприводимым множителем h0(x) многочлена f (x).
Другими словами, пусть ϕk обозначает естественный гомоморфизм кольца Z[x] на факторкольцо (Z/pkZ)[x], ядро гомоморфизма ϕk совпадает с главным идеалом (pk) кольца Z[x], ϕ1 обозначим просто ϕ. Пусть H — главный идеал кольца Z[x], порожденный многочленом h, удовлетворяющим условиям (21.16)–(21.19). Тогда существует h0 Z[x], такой, что при любом k в Z[x] совпадают
идеалы ϕ−k 1(ϕk(H)) = ϕ−1(ϕ(H)) = (h0). Многочлен h0 является неприводимым в Z[x] и делит f (x).
21.3. ПРЕДЛОЖЕНИЕ. Существует неприводимый в кольце Z[x] множитель h0(x) многочлена f (x), для которого (h mod p) делит (h0 mod p), и этот множитель определен однозначно с точностью до знака. Кроме того, если g(x) Z[x] и g(x) делит f (x), то следующие условия эквивалентны.
(h |
mod p) делит (g |
mod p) в кольце Fp[x] |
(21.20) |
(h |
mod pk) делит (g |
mod pk) в кольце (Z/pk Z)[x] |
(21.21) |
h0 делит g в кольце Z[x] |
(21.22) |
Вчастности, (h mod pk) делит (h0 mod pk) в кольце (Z/pk Z)[x].
Втеоретико-кольцевых терминах эти условия переписываются следующим образом:
ϕ(g) (ϕ(h)) Fp[x] |
(21.20′) |
ϕk (g) (ϕk (h)) (Z/pkZ)[x] |
(21.21′) |
g (h0) Z[x] |
(21.22′) |
В частности,
ϕk (h0) (ϕk(h)) (Z/pkZ)[x]
ДОКАЗАТЕЛЬСТВО. Существование многочлена h0 следует из того, что ϕ(f ) делится на ϕ(h). Поскольку многочлен ϕ(h) неприводим, на него делится ϕ(hi) хотя бы для одного из неприводимых делителей hi многочлена f , а так как эти делители взаимно просты, то делится в точности один из них.
Поскольку ϕ является кольцевым гомоморфизмом, и разлагается в композицию гомоморфизмов ψk · ϕk, где ψk — естественный гомоморфизмом кольца Z/pk Z[x] → Fp[x], как из (21.22), так и из (21.21) следует (21.20).
Покажем, что из (21.20) следует (21.21) и (21.22).
21. АЛГОРИТМЫ, ОСНОВАННЫЕ НА ВЫБОРЕ МАЛОГО ВЕКТОРА 207
Пусть выполнено условие (21.20). Тогда ϕ(f /g) / (ϕ(h)) в силу (21.19) и однозначности разложения на множители в Fp[x]. Значит, f /g / (h0) ϕ−1(ϕ(h)). Из однозначности разложения на множители в Z[x] следует, что g (h0), т. е. выполнено (21.22).
Пусть снова выполнено условие (21.20). Поскольку Fp[x] является областью главных идеалов, из (21.20) следует, что существуют
u(x), v(x) Fp[x], такие, что u·ϕ(h)+v ·ϕ(f /g) = 1 в Fp[x]. Поскольку ϕ — эпиморфизм, ядро которого порождено числом p, выписанное
соотношение можно поднять до равенства в кольце Z[x]
u′ · h + v′ · f /g = 1 − p · w. |
|
(21.23) |
Обозначим w′ = 1 + pw + p2w2 + · · · + pk−1wk−1.′ |
Применяя ϕk к |
|
предыдущему соотношению, умноженному на g · w |
, получим |
|
ϕk(g · w′ · u′) · ϕk(h) + ϕk (w′ · v′) · ϕk(f ) = ϕk(g). |
(21.24) |
|
Из этого соотношения и (21.17) следует (21.21). |
|
Рассмотрим на кольце многочленов R[x] фильтрацию по степеням многочленов, т. е. для любого неотрицательного целого s векторное пространство, состоящее из многочленов степени не выше s, обозначается Rs[x]. Введенная фильтрация индуцирует фильтрацию на кольце Z[x]: Zs[x] = Z[x] T Rs[x]. Rs[x] образует вещественное линейное пространство размерности s + 1, а Zs[x] является в нем решеткой (свободным Z-модулем максимального ранга).
Рассмотрим целое число m > l. Через L = L(m, k) обозначим множество всех многочленов в кольце Z[x], которые делятся на h(x) по модулю pk и степень которых не превосходит m, т. е. L(m, k) = Zm[x] T ϕ−k 1((ϕk (h))). Другими словами, L состоит из тех многочленов, коэффициенты остатков от деления которых на h(x) в p-адической метрике не превосходят p−k−1, т. е. являются малыми величинами. Легко видеть, что базис решетки L образует следующее множество многочленов
{pkxi | 0 6 i < l} {h · xj | 0 6 j 6 m − l}. |
(21.25) |
В качестве базиса всего вещественного пространства многочленов степени не выше m удобно выбрать одночлены xi, 0 6 i 6 m. Длиной многочлена назовем евклидову длину этого многочлена в выбранном базисе, который мы предполагаем ортонормированным. Oтождествляем многочлен с вектором его коэффициентов в выделенном базисе. Матрица коэффициентов базиса (21.25) имеет в этом базисе треугольную форму и легко видеть, что d(L) = pkl.
208 |
ГЛАВА 5. ФАКТОРИЗАЦИЯ МНОГОЧЛЕНОВ |
|
|
Покажем, что элементы решетки L с малой длиной лежат в главном идеале, порожденном многочленом h0(x) в Z[x].
21.4. ПРЕДЛОЖЕНИЕ. Предположим, что многочлен b L удовлетворяет неравенству
pkl > |f |m · |b|n. |
(21.26) |
Тогда b делится на h0(x) в кольце Z[x], в частности, НОД(f, b) 6= 1.
ДОКАЗАТЕЛЬСТВО. Можно считать, что b 6= 0. Положим g = = НОД(f, b). Достаточно показать, как следует из предыдущего предложения, что ϕ(g) (ϕ(h)). Предположим противное. Пользуясь неприводимостью ϕ(h) и эпиморфностью гомоморфизма ϕ, получаем существование многочленов u, v, w Z[x], таких, что
u · h + v · g = 1 − p · w. |
(21.27) |
Напомним, что l = deg(h), n = deg(f ), m + 1 — размерность решетки L. Положим m′ = deg(b) и e = deg(g).
Очевидно, что 0 6 e 6 m′ 6 m. Положим s = n + m′ − e − 1.
Пусть Mf = Zs[x] ∩(f ), Mb = Zs[x] ∩(b), и M = Mf + Mb, т. е. M является Z-модулем, состоящим из всех многочленов вида u ·f + v ·b,
где u Zm′−e−1[x], v Zn−e−1[x]. Покажем, что множество элементов
xif | 0 6 i < m′ − e} {xj b | 0 6 j < n − e |
(21.28) |
образует базис Z-модуля M . Очевидно, что они порождают M , остается только показать, что выписанная система многочленов линейно независима над Z. Предположим, что u · f + v · b = 0, где deg(u) < < m′ − e, deg(v) < n − e. Разделим это соотношение на g. Получим, u · (f /g) + v · (b/g) = 0. Пользуясь взаимной простотой многочленов f /g и b/g и ограничениями на степени u и v, получаем, что u = v = 0.
Рассмотрим проекцию
π : Rs[x] → Rs[x]/Re−1[x]. |
(21.29) |
Пусть M ′ = π(M ). Покажем, что M ′ — решеткa в Rs[x]/Re−1[x]. Для этого достаточно показать, что M ∩ker π = 0, т. е. M ∩Ze−1[x] =
= 0. Пусть w M ∩ Ze−1[x], тогда w = u · f + v · b по определению M , следовательно, w делится на g (= НОД(f, b)). Посколь-
ку deg(w) < deg(g), получаем w = 0. Учитывая линейную независимость элементов множества (21.28) над Z, получаем, что эти элементы образуют базис решетки M ′. Неравенство Адамара (19.3)
21. АЛГОРИТМЫ, ОСНОВАННЫЕ НА ВЫБОРЕ МАЛОГО ВЕКТОРА |
|
209 |
||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||
утверждает, что |
′ |
|
6 |
|f | |
m′−e |
n−e 6 |
f |
| |
m |
b |
n. Пользуясь пред- |
|||||||||
|
|
d(M |
|
) |
|
|
|
·|b| ′ |
|
|
|kl |
|
·| | |
|
|
|
|
|||
положением теоремы, получаем d(M |
) < p . |
|
|
|
|
|
|
|||||||||||||
Для получения желаемого противоречия, покажем, что из (21.27) |
||||||||||||||||||||
следует обратное неравенство d(M ′) > pkl. |
|
|
|
|
|
|
|
|||||||||||||
Покажем, что для kлюбого элемента µ M , если deg µ < e + l, то |
||||||||||||||||||||
ϕk (µ) = 0 |
, т. е. µ p Z. Домножим соотношение (21.27) на µ/g |
× |
||||||||||||||||||
|
k−1 |
k−1 |
). Получим u1 |
·h+v1 ·µ ≡ |
µ/g (mod p |
k |
|
|||||||||||||
×(1+pw +· · ·+p |
w |
|
|
|
|
Z[x]), |
||||||||||||||
где u1, v1 — некоторые |
многочлены |
из кольца Z[x]. Поскольку |
µ M , ϕ(µ) делится на ϕk(h), следовательно, ϕk(µ/g) также делится на ϕk(h). Сравнивая степени, получаем, что ϕk(µ) = 0.
Для завершения доказательства достаточно теперь показать, что
базис be, be+1, . . . , bn+m′−e−1 решетки M ′ можно выбрать таким образом, что deg(bj ) = j. Это упражнение на приведение невырожденной
целочисленной матрицы к треугольному виду оставляется читателю. При таком выборе базиса, старшие коэффициенты первых l многочленов делятся на pk. Значит d(M ′), который в полученном базисе равен произведению старших коэффициентов, удовлетворяет неравенству d(M ′) > pkl, что завершает доказательство теоремы.
Следующий результат позволяет находить неприводимый делитель многочлена f .
21.5. ПРЕДЛОЖЕНИЕ. Пусть f , p, k, n, h, l выбраны так, как предполагалось в начале параграфа, L — решетка, заданная базисом (21.25). Предположим, что b1, . . . , bm+1 — редуцированный базис решетки L и что выполняется неравенство
2m |
n/2 |
|
||
pkl > 2mn/2 m |
|f |m+n. |
(21.30) |
||
Если h0 — неприводимый над Z многочлен, делящийся на h, |
||||
то deg(h0) 6 m тогда и только тогда, когда |
|
|||
|
pkl |
1/n |
|
|
|
|
|
||
|b1| < |
|
. |
(21.31) |
|
|f |m |
ДОКАЗАТЕЛЬСТВО. Если условие (21.31) выполнено, то по предложению 21.4 многочлен b1 делится на h0. Решетка L выбрана так, что deg b 6 m для любого b L, следовательно, deg(h0) 6 m.
Предположим теперь, что deg(h0) 6 m. Тогда h0 L по предложению 21.4.
Полагая x = h0 в предложении 19.9, получим |b1| 6 2m/2 · |h0|.
Теперь из задачи 7.6 следует неравенство |
|
6 |
|
m/2 |
2m |
1/2 |
. |
|
|
|
· m |
|
|||
Подставляя сюда (21.30), получим (21.31). |
b1 |
|
2 |
|
|
· |f | |
210 |
ГЛАВА 5. ФАКТОРИЗАЦИЯ МНОГОЧЛЕНОВ |
|
|
Теперь можно сформулировать следующий алгоритм нахождения неприводимого в Z[x] многочлена, делящегося по модулю p на неприводимый по модулю p многочлен h(x).
А40. АЛГОРИТМ (неприводимый-множитель (f, h, g, p)).
Дано: p Z, f, h Z[x]
h — неприводимый по модулю p многочлен, делящий f по
модулю p
Надо: g — неприводимый над Z многочлен, делящий f и деля-
щийся по модулю p на h.
Обозначения: n == f .степень l == h.степень
Переменные: целое k
решетка L
Начало
найден множитель := "нет"
цикл для m от l до n − 1 пока не найден множитель вычислить k, такое, чтобы выполнялось неравенство (21.30)
пользуясь леммой Гензеля, поднять сравнение h · u ≡ f (mod p) до сравнения по модулю pk
получить базис решетки L по формулам (21.25) редуцировать базис решетки L
если L.базис[1] удовлетворяет (21.31) то g.степень := m
g.коэффициенты := L.базис[1] найден множитель := "да"
конец если конец цикла Конец
Недостаток этого алгоритма заключается в том, что для каждого значения m нужно применять алгоритм Гензеля, строить новую решетку и редуцировать ее базис. Следующее предложение позволяет применять алгоритм построения редуцированного базиса решетки только один раз для максимального возможного значения m = n −1.
21.6. ПРЕДЛОЖЕНИЕ. Предположим, что обозначения выбраны так же, как и в предложении 21.5, и что выполнены те же предположения. Предположим кроме того, что существуют индексы j, такие, что
pkl |
1/n |
|
|
|
|
|bj | < |f |m . |
(21.32) |
21. АЛГОРИТМЫ, ОСНОВАННЫЕ НА ВЫБОРЕ МАЛОГО ВЕКТОРА 211
Пусть t — наибольшее значение j, для которого выполнено
(21.32). Тогда
deg(h0) = m + 1 − t, h0 = НОД(b1, . . . , bt)
и неравенство (21.32) выполнено для всех j, таких, что 1 6 j 6 t.
ДОКАЗАТЕЛЬСТВО. Пусть J обозначает множество индексов j{1, . . . , m}, для которых выполнено неравенство (21.32), #J — мощность множества J . Тогда h0 делит bj для любого j J , следовательно, h0 делит многочлен h1 = НОД({bj | j J }). Положим s = m − deg(h1). Поскольку deg(bj ) 6 m для всех j J , эти многочлены принадлежат Z-модулю Zs[x] · h1(x), ранг которого равен s + 1 = m + 1 − deg(h1). В силу линейной независимости векторов bj получаем
#J 6 m + 1 − deg(h1). |
(21.33) |
||
Применяя результат задачи 7.6 к многочленам h0xi, получаем |
|||
kh0xik = kh0k 6 |
2m |
1/2 |
|
m |
· kf k для всех |
i > 0. |
Для 0 6 i 6 m − deg(h0) имеем h0xi L, так что из предложения 19.9 получаем
kbj k 6 2m/2 |
2m |
|
1/2 |
· m |
· kf k для 1 6 j 6 m − deg(h0). |
Из неравенства (21.30) следует, что индексы от 1 до m + 1 − − deg(h0) принадлежат множеству J . Поскольку h1 делится на h0 и выполняется неравенство (21.33), получаем {1, . . . , m+1−deg(h0)}
J , откуда deg(h0) = deg(h1) = m + 1 − t.
Остается установить, что h1 с точностью до знака совпадает с h0. Для этого достаточно показать, что многочлен h1 примитивный, т. е. наибольший общий делитель его коэффициентов равен 1, а примитивность многочлена h1 легко вытекает из примитивности хотя бы
одного bj , j J .
Возьмем произвольный индекс j J и пусть dj = cont (bj ). Тогда многочлен bj /dj делится на h0, следовательно, bj /dj L, так как h0 L. Поскольку bj принадлежит базису решетки L, получаем dj = 1.
Полученный результат используется в следующем алгоритме.
212 |
ГЛАВА 5. ФАКТОРИЗАЦИЯ МНОГОЧЛЕНОВ |
|
|
А41. АЛГОРИТМ (неприводимый-множитель (f, h, g, p)). |
|
Дано: |
p Z, f, h Z[x] |
|
h — неприводимый по модулю p многочлен, делящий f по |
|
модулю p |
Надо: |
g — неприводимый над Z многочлен, делящий f и деля- |
щийся по модулю p на h.
Обозначения: n == f .степень l == h.степень
Переменные: цел k, t
решетка L
Начало
найден множитель := "нет"
вычислить k, такое, чтобы выполнялось неравенство (21.30) для
m = n − 1
пользуясь леммой Гензеля, поднять сравнение h · u ≡ f (mod p) до сравнения по модулю pk
построить базис решетки L по формулам (21.25) редуцировать базис решетки L
найти максимальное значение t, для которого L.базис[t] удовлетворяет (21.31)
если t > 0 то g.степень := n − t
g.коэффициенты := НОД (L.базис[1], . . . , L.базис[t]) найден множитель := "да"
конец если Конец
Глава 6
Интегрирование в конечном виде
22. Интегрирование полиномов и рациональных функций
Для решения простейших дифференциальных уравнений вида
y′ = f (x) |
(22.1) |
существует множество методов, которые применимы для функций f (x) из некоторых классов. При этом обычно недостаточно четко задается класс функций, в котором выбираются решения. Решение g(x) уравнения (22.1) определяется с точностью до произвольной константы и называется неопределенным интегралом или первообразной функции f (x).
Прежде чем переходить к основной части данного раздела, напомним некоторые результаты математического анализа.
Вэтом разделе символом A будем обозначать класс функций,
ккоторому принадлежит функция f (x) из правой части уравнения (22.1), а символом B — класс функций, в котором выбирается решение.
Прежде всего рассмотрим случай, когда A — кольцо полиномов K[x] от одной переменной над некоторым кольцом K характеристики 0. Предполагается, что мы умеем выполнять арифметические операции в поле K, в частности, K может совпадать с полем Q. В этом случае любое уравнение вида (22.1) имеет решение в этом же
классе функций, и алгоритм его нахождения хорошо известен: если
|
n |
n |
ai |
|
|
|
f (x) = |
aixi, то первообразная имеет вид g(x) = |
P |
xi+1 |
+ c, |
||
|
||||||
|
iP |
i+1 |
|
|
||
|
=0 |
i=0 |
|
|
|
где c — произвольная константа (константа интегрирования). Следующим по сложности идет случай, когда A — поле раци-
ональных функций K(x) от одной переменной. Для простоты будем считать, что поле коэффициентов K совпадает с полем рациональных чисел Q. Если класс B совпадает с A, то решение уравнения (22.1) существует далеко не всегда. Однако можно класс B
214 ГЛАВА 6. ИНТЕГРИРОВАНИЕ В КОНЕЧНОМ ВИДЕ
несколько расширить, добавив к нему алгебраические числа и операцию логарифмирования полиномов. Полученный класс будем обозна-
чать = ¯(x, +, , , /, log), и тогда любое уравнение вида (22.1),
B
A
−
где f (x) Q(x), разрешимо в классе B.
Напомним два метода решения уравнения (22.1) в этом случае. I метод. Пусть f (x) = pq((xx)) . Предположим, что мы умеем находить разложение функции f (x) в сумму простейших дробей: f (x) =
= p0 |
+ |
|
|
cij |
|
. Проинтегрировать сумму почленно не представляет |
||||||
(x−αi) |
j |
|||||||||||
|
|
i,j |
|
|
|
|
|
|
|
|
|
|
|
|
пользуясь тем, что |
|
|
|
|
||||||
труда, P |
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
1 |
dx = |
ln(x − α) + c |
|
при j = 1 |
||
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
1 |
|
|
|
|
|
|
Z |
(x − α)j |
|
(− |
|
+ c |
при j > 1. |
|||
|
|
|
|
(j−1)(x−α)j−1 |
Основная сложность этого метода приходится на нахождение полюсов функции f (x), т. е. корней αi ее знаменателя и разложение функции f (x) в сумму простейших дробей.
II метод. Как и прежде, предполагаем, что f (x) = p(x) и что мы
q(x)
нашли все полюса αi функции f (x) на комплексной плоскости. Разложим в окрестности каждого полюса αi функцию f (x) в ряд Лора-
1
на, точнее, вычислим главную часть разложения, P cij (x − αi)−j ,
j=ni
где ni — порядок полюса в точке αi. Если g(x) — первообразная функции f (x), то главная часть разложения функции g(x) в точке αi имеет вид
2 |
|
cij |
|
jXi |
|
(x − αi)−j+1 + ci1 ln(x − αi). |
|
− |
|
||
g¯i(x) = |
|
j + 1 |
|
=n |
|
|
|
Функция g(x) −P g¯i(x) не имеет особенностей в комплексной плос-
i
кости и является просто полиномом, степень которого равна max(deg p − deg q, −1) + 1. Для нахождения этого полинома можно также проинтегрировать главную часть разложения функции f (x) в точке ∞.
При реализации обоих методов основная трудность состоит в нахождении полюсов αi функции f (x). При этом приходится работать в алгебраическом расширении Q(α1, . . . , αm) поля Q. Однако для записи ответа часто оказывается достаточным меньшее расширение
поля Q, чем Q(α1, . . . , αm).
Читателю из курса анализа известно, что интегрирование рациональных функций с действительными коэффициентами осуществ-