кой, что #(z) = P(z)D(z). Если P(z) не является делителем Я(z), то в ре-
зультате деления H(z) на ?(z) получается частное и остаток $${z) J#(z) =
= Р(г)Д(г) +Л(г). Степень остатка меньше степени полинома Р(г) (записы-
вается degi? (z) < degP(z)).Bce полиномы, дающие при делении на Р(г) один и
тот же остаток, называются сравнимыми по модулю P(z). Записывается
R(z) = H(z)modP(z), а сам остаток называется полиномиальным вычетом,
(_ Вернемся теперь к задаче вычисления полиномов — остатков. Она сводит-
ся к приведению полинома p(z) по модулю полинома m(z). Пусть m(z) ~
N-i , 7V-1
= z + 2 т.z
1
. Тогда по свойству сравнений m(z) = 0, т. e. z — — 7) т.г
г=0
!
1=1 ''
и, следовательно, z можно заменить полиномом — У, m.z
1
. В частном слу-
/=о •
чае, когда m(z) = z -а, имеем p(z) mod (z «в )= р(д) .
Пример 2. 6» Вычислим остаткиот деления полинома р(г) = z
3
- 2z
2
+ Зг+1 (из
примера 2.3) на полиномы т^ (г) = z
2
+ г, т^ (z) = z
3
- 3z + 2. Учитывая, что z
2
^ -г для
т
а
(z),
получаем
p(z)modm
(z) = z
2
(z - 2) + 3z+ 1 =
-z(z-2)
+ 3z + 1 = -z
2
-K2Z+
3Z +
+ 1 = 6z + 1.
Аналогично для m
2
(z) записываем: p(z)modm
2
(z)= z
2
(z ~2) + 3z + 1 = (3z - 2) X
X (z - 2) + 3z + 1 = 3z
2
- 5z + 5 = 9JL- 6
r
5z + 5 = 4z -"*"l.
2.5. УМНОЖЕНИЕ ПОЛИНОМОВ
2.5.1. Алгоритм "разделяй и властвуй"
Для решения той или иной задачи ее разбивают на части и из их решения
строят общее решение. Данный прием можно использовать рекурсивно, что
позволяет получить довольно эффективное решение. Примером этого может
служить рассмотренная в § 2.4 процедура вычисления полинома в точках.
Описанный способ часто называют алгоритмом "разделяй и властвуй". Приме-
ним его для вычисления произведения двух полиномов.
Рассмотрим два полинома степени vV—1:
Их произведение равно
где
Вычисление произведения p(z)q(z) фактически сводится к определению
коэффициентов c
fc
, каждый из которых равен сумме произведений ар. с усло-
вием i + j = к .
22
Число различных произведений вида а Ь. равно N
2
, а полином-произведе-
ние имеет 2N — 1 коэффициентов. Поэтому сложность реализации прямого ме-
тода равна N
2
операциям умножения^
2
— 27V+ 1 операциям сложения. На-
пример, если p(z) = a
x
z + a
Q
и q (z) = b
y
z + b
Q
, то произведение этих поли-
н
омов равно a
l
b
y
z
2
+ i.a
l
b
Q
+a
o
bj) z
+
a
Q
b
0
• На вычисление затрачивается
четыре операции умножения (a
1
b
l
, a
1
b
Q
, а
0
Ь
г
, а
0
Ь
0
)иодна операция сложе-
ния а
х
Ь
0
+a
o
b
l
. —"
Для построения более эффективного алгоритма рассмотрим сначала умно-
жение полиномов первой степени p{z) = a
l
z + a
Q
, q(z) = Ъ
x
z + b
Q
. Произ-
ведение этих полиномов можно вычислить за три операции умножения (вмес-
то четырех) по следующему алгоритму:
Нетрудно учидеть, что этот алгоритм совпадает с алгоритмом умножения
комплексных чисел, если заменить z на / . Хотя в данном случае требуется че-
тыре операции сложения (вместо одной), алгоритм оказывается полезным
при умножении полиномов более высоких степеней. Для иллюстрации рас-
смотрим случай,когдаN= 4,т. е. p(z)= a
3
z
3
+ a^
2
+a^z +a
Q
, q(z) -b^ +
" Прямой метод требует 16 операций умножения и 9 операций сложения.
Разделим оба сомножителя на две части и представим их в виде:
где
Произведение этих полиномов равно p(z)q(z) =j(z)u(z)z
4
+ (s(z)v(z) +
+ f
(Z)M(Z))
z
2
+ f (z)y(z). Воспользуемся теперь рассмотренным способом
умножения полиномов первой степени за три операции умножения. Запишем
произведения:
Искомый полином равен
Полный алгоритм запишется следующим образом: