Вычисления результанта 2-ч полиномов
Курсовая работа, 01 Февраля 2015, автор: пользователь скрыл имя
Описание работы
Изучение полиномиальных уравнений и их решений составляло едва ли не главный объект «классической алгебры». С изучением многочленов связан целый ряд преобразований в математике: введение в рассмотрение нуля, отрицательных, а затем и комплексных чисел, а также появление теории групп как раздела математики и выделение классов специальных функций в анализе. Техническая простота вычислений, связанных с многочленами, по сравнению с более сложными классами функций, а также тот факт, что множество многочленов плотно в пространстве непрерывных функций на компактных подмножествах евклидова пространства (см. аппроксимационная теорема Вейерштрасса), способствовали развитию методов разложения в ряды и полиномиальной интерполяции в математическом анализе.
Содержание работы
1. Введение 3
2. Полиномиальные алгоритмы 5
2.1 Алгоритм вычисления ad mod m 5
2.2 Дихотомический алгоритм возведения в степень 6
2.3 Алгоритм Евклида 7
2.4 Алгоритм решения уравнения ax + by = 1 9
2.5 Полиномы Чебышева 9
3. Полиномиальная арифметика 12
3.1. Алгоритм нахождения делителей многочлена f(x) в кольце Fp[x] 13
3.2. Произведение и возведение в степень многочленов, заданных
массивами 14
3.3. Небольшие оптимизации для произведения многочленов 17
Список литературы
Файлы: 1 файл
Курсовая Милена.docx
— 72.88 Кб (Скачать файл)T n +1 ( x )+ T n -1 ( x )=2 cos (
n q ) cos ( q )=2 xT n ( x );
T n+1 (x)=2xT n (x)-T n-1 (x)
Применяя полученные
формулы можно найти любой полином Чебышева.
Например, Т 3 ( x )=2 xT 2 ( x )- T 1 ( x ). Подставляя
значения T 2 ( х ) и Т 1 ( х ) имеем
Т 3 ( х )=2х(2х 2 -1)-х=4х 3 -3х. Графически
первые 10 полиномов Чебышева изображены
ниже. Последующие полиномы по-прежнему
колеблются между +1 и -1, причём период
колебания уменьшаются с ростом порядка
полинома. Преобразования q=arccos(x) можно
рассмотреть как проекцию пересечений
полукруга с множеством прямых, имеющих
углы равные между собой. Таким образом,
множество точек x j , на котором
система чебышевских многочленов T n ( x ) ортогональна,
есть: ( j =0, 1, 2, …, N -1). Так как T n ( x ) есть, по
существу, cos ( n q ), то они являются равноколеблющимися
функциями, и так как они многочлены, то
обладают всеми свойствами, которые имеют
ортогональные многочлены
Чебышев доказал, что из всех многочленов
Рn (x) степени
n старшим коэффициентом 1, у многочлена
точная верхняя грань абсолютных значений
на интервале -1 Ј x Ј 1 наименьшая. Так как
верхняя грань T n (x )=1, указанная
верхняя грань равна.
- Полиномиальная арифметика
Рассмотрим вероятностный алгоритм, позволяющий эффективно находить решения полиномиальных сравнений по простому модулю. Пусть p – простое число, которое предполагается большим, и f(x)ÎZ[x] – многочлен, степень которого предполагается ограниченной. Задача состоит в отыскании решений сравнения f(x) º 0 (mod p). (1)
Например, речь может идти о решении квадратичных сравнений, если степень многочлена f(x) равна 2. Другими словами, мы должны отыскать в
поле Fp = Z/pZ все элементы, удовлетворяющие уравнению f(x) = 0.
Согласно малой теореме Ферма, все элементы поля Fp являются однократными корнями многочлена xp - x. Поэтому, вычислив наибольший общий делитель d(x) = (xp - x, f(x)), мы найдём многочлен d(x), множество корней которого в поле Fp совпадает с множеством корней многочлена f(x), причём все эти корни однократны. Если окажется, что многочлен d(x) имеет нулевую степень, т. е. лежит в поле Fp, это будет означать, что сравнение (1) не имеет решений.
Для вычисления многочлена d(x) удобно сначала вычислить многочлен
c(x)ºxp (mod f(x)), пользуясь алгоритмом, подобным описанному выше алгоритму возведения в степень (напомним, что число p предполагается большим). А затем с помощью аналога алгоритма Евклида вычислить d(x) = (c(x) – x, f(x)). Всё это выполняется за полиномиальное количество арифметических операций.
Таким образом, обсуждая далее задачу нахождения решений сравнения (1) мы можем предполагать, что в кольце многочленов Fp[x] справедливо равенство f(x) = (x – a1)*.*(x – an), aiÎFp, ai ¹ aj.
3.1 Алгоритм нахождения делителей многочлена f(x) в кольце Fp[x]
1. Выберем каким-либо способом элемент ( (Fp.
2. Вычислим наибольший общий делитель
g(x) = ( f(x), (x + ()(p-1)/2 – 1).
3. Если многочлен g(x) окажется собственным делителем f(x), то многочлен f(x) распадается на два множителя и с каждым из них независимо нужно будет проделать все операции, предписываемые настоящим алгоритмом для многочлена f(x).
4. Если окажется, что g(x) = 1 или g(x) = f(x), следует перейти к шагу 1 и,
выбрав новое значение (продолжить выполнение алгоритма.
Количество операций на шаге 2 оценивается величиной O(ln p), если
вычисления проводить так, как это указывалось выше при нахождении d(x). Выясним теперь, сколь долго придётся выбирать числа (, пока на шаге 2 не будет найден собственный делитель f(x).
Количество решений уравнения (t + a1)(p – 1)/2 = (t + a2)(p – 1)/2 в
поле Fp не превосходит (p-3)/2. Это означает, что подмножество D ( Fp,
состоящее из элементов (удовлетворяющих условиям
(( + a1)(p – 1)/ 2 ( (( + a2)(p – 1)/ 2, ( ( -a1, ( ( -a2, состоит не менее чем (p – 1)/2 из элементов. Учитывая теперь, что каждый ненулевой элемент b(Fp удовлетворяет одному из равенств b(p – 1)/2 = 1, либо b(p – 1)/2 = –1, заключаем, что для ( ( D одно из чисел a1, a2 будет корнем многочлена (x + () (p – 1)/2 – 1, а другое – нет. Для таких элементов ( многочлен, определённый на шаге 2 алгоритма, будет собственным делителем многочлена f(x).
Итак, существует не менее (p –1)/2 «удачных» выборов элемента (, при
которых на шаге 2 алгоритма многочлен f(x) распадается на два собственных множителя. Следовательно, при «случайном» выборе элемента ( ( Fp, вероятность того, что многочлен не разложится на множители после k
повторений шагов алгоритма 1-4, не превосходит 2-k. Вероятность с ростом k убывает очень быстро. И действительно, на практике этот алгоритм работает достаточно эффективно.
Заметим, что при оценке вероятности мы использовали только два корня
многочлена f(x). При n > 2 эта вероятность, конечно, ещё меньше. Более
тонкий анализ с использованием оценок А. Вейля для сумм характеров
показывает, что вероятность для многочлена f(x) не распасться на множители при однократном проходе шагов алгоритма 1-4 не превосходит 2-n + O(p-1/2). Здесь постоянная в O(.) зависит от n. В настоящее время известно элементарное доказательство оценки А. Вейля.
Если в сравнении (1) заменить простой модуль p составным модулем m, то
задача нахождения решений соответствующего сравнения становится намного более сложной. Известные алгоритмы её решения основаны на сведении сравнения к совокупности сравнений (1) по простым модулям – делителям m, и, следовательно, они требуют разложения числа m на простые сомножители, что, как уже указывалось, является достаточно трудоёмкой задачей.
3.2 Произведение и возведение в степень многочленов, заданных массивами
Условимся представлять многочлены массивами, индексированными, начиная с 0, в которых элемент с индексом i означает коэффициент многочлена степени I type
Polynome=array[1..Nmax] of Ring_Element;
Следующий алгоритм даёт функцию умножения двух многочленов и , где многочлен степени (который даёт результат в конце алгоритма) должен быть предварительно инициализирован нулём.
for i:= 0 to degP do
for j:= 0 to degQ do
R[i+j]:=R[i+j]+P[i](Q[i];
Изучая предыдущий алгоритм, устанавливаем, что его сложность как по числу перемножений, так и сложений, равна произведению высот двух многочленов: (deg P + 1)(degQ + 1), но в этом алгоритме, который не учитывает случай нулевых коэффициентов, можно рассматривать высоту многочлена как число всех коэффициентов. Значит, возможно улучшить предыдущий алгоритм, исключив все ненужные перемножения:
for i:= 0 to degP do
if P[i] ( 0 then
for j:= 0 to degQ do
if Q[j] ( 0 then
R[i+j]:=R[i+j]+P[i]Q[i];
Очень просто вычислить сложность алгоритма возведения в степень последовательными умножениями, если заметить, что когда P – многочлен степени d, то Pi – многочлен степени id. Если обозначить Cmul(n) сложность вычисления Pn, то рекуррентное соотношение
Cmul(i + 1) = Cmul(i) + (d+1)(id +1)
Что касается возведения в степень с помощью дихотомии (т.е. повторяющимися возведениями в квадрат), вычисления несколько сложнее: зная, вычисляем с мультипликативной сложностью.
Предварительное заключение, которое можно вывести из предыдущих
вычислений, складывается в пользу дихотомического возведения в степень: если n есть степень двойки (гипотеза ad hoc), этот алгоритм ещё выдерживает конкуренцию, даже если эта победа гораздо скромнее в данном контексте (n2d2/3 против n2d2/2), чем когда работаем в Z/pZ (2log2 n против n).
Но мы не учли корректирующие перемножения, которые должны быть выполнены, когда показатель не является степенью двойки. Если n = 2l+1–1, нужно добавить к последовательным возведениям в квадрат перемножения всех полученных многочленов. Умножение многочлена степени (2i-1)d на многочлен степени 2id вносит свой вклад из
((2i – 1)d + 1)( 2i d+1) умножений, которые, будучи собранными по всем корректирующим вычислениям, дают дополнительную сложность.
Теперь можно заключить, что дихотомическое возведение в степень не
всегда является лучшим способом для вычисления степени многочлена с помощь перемножений многочленов. Число перемножений базисного кольца, которыенеобходимы, Csqr(n), — в действительности заключено между n2d2/3 и 2n2d2/3, тогда как простой алгоритм требует всегда n2d2/2 перемножений. В частности, если исходный многочлен имеет степень, большую или равную 4, возведение в степень наивным методом требует меньше перемножений в базисном кольце, чем бинарное возведение в степень, когда n имеет форму 2l – 1.
Можно довольно просто доказать, что если n имеет вид 2l +2l – 1 + c
(выражения, представляющие двоичное разложение n), то метод вычисления последовательными перемножениями лучше метода, использующего возведение в квадрат (этот последний метод требует корректирующего счёта ценой, по крайней мере, n2d2/9). Всё это доказывает, что наивный способ является лучшим для этого класса алгоритмов, по крайней мере, в половине случаев.
Действительно, МакКарти [3] доказал, что дихотомический алгоритм
возведения в степень оптимален среди алгоритмов, оперирующих повторными умножениями, если действуют с плотными многочленами (антоним к разреженным) по модулю m, или с целыми и при условии оптимизации возведения в квадрат для сокращения его сложности наполовину (в этом случае сложность действительно падает приблизительно до n2d2/6 + n2d2/3 = n2d2/2).
3.3 Небольшие оптимизации для произведений многочленов
В принципе вычисление произведения двух многочленов степеней n и m соответственно требует (n +1)( m +1) элементарных перемножений. Алгоритм оптимизации возведения в квадрат состоит просто в применении формулы квадрата суммы: что даёт n +1 умножений для первого члена и n( n +1)/2 – для второго, или в целом (n +1)( n +2)/2 умножений, что близко к половине предусмотренных умножений, когда n большое. Для произведения двух многочленов первой степени
P = aX + b и Q = cX + d достаточно легко находим формулы
U = ac, W = bd, V = (a + b)(c + d) и PQ=UX2 + (V – U – W)X +W, в которых появляются только три элементарных умножения, но четыре сложения. Можно рекурсивно применить этот процесс для умножения двух многочленов P и Q степени 2l – 1, представляя их в виде и применяя предыдущие формулы для вычисления PQ в зависимости от A, B, C и D, где каждое произведение AB, CD и (A + B)(C + D) вычисляется с помощью рекурсивного применения данного метода (это метод Карацубы). Всё это даёт мультипликативную сложность ((2l) и аддитивную сложность ((2l) такие, что:
((2l) = 3((2l – 1),…, ((2) = 3((1), ((1) = 1,
((2l) = 3((2l – 1) + 3(2l,…, ((2) = 3((1) + 6, ((1) = 1.
В этой последней формуле член 3(2l представляет собой число элементарных сложений, необходимых, чтобы сделать два сложения многочленов степени 2l – 1 – 1 (a + b и c + d) и два вычитания многочленов степени 2l – 1 (U –V – W). Суммируя каждое из этих выражений, находим для n, являющегося степенью двойки:
((n) = nlog3/log2 ( n1,585 и ((2) =7 nlog3/log2 – 6n.
К сожалению, этот принцип остаётся теоретическим, и на его основе нужно построить итерационный алгоритм, чтобы получить разумную эффективность (цена управления рекурсией очень велика).
Cписок литературы
1. Введение в криптографию под общей редакцией Ященко, М.: МЦНМО: «Черо», 1999.
2. Алгебраическая алгоритмика, Ноден П., Китте К., М.: «Мир», 1999.