3. Персславцева О.Н. Вычислительные эксперименты с алгоритмами вычисления характеристических полиномов матриц // Вестник Тамбовского Университета. Серия: Естественные и технические науки. Тамбов. 2007. Т. 12. Вып.1. С.126-128.
Реализация алгоритма Карацубы и оценки сложности
© А.О.Лапаев
Проведем оценку сложности алгоритма Карацубы [1]. Пусть машинное слово содержит г бит, p = 2r, числа u = (ui,u2, ...,un) и v = (v\,v2,..., vn) состоят из n = 2k машинных слов, и производится их умножение по следующей схеме:
(apn + b)(cpn + d) =
= acpn + ((a + b)(c + d) — ac — bd)p n + bd, где a = (ui,...,un), b = (un+i,...,un^ c = (vi,...,vn), d = (vn+i,...,Vn) .
Обозначим q(n) умножения машинных слов в такой схеме. Тогда q(n) = 3q( n)
и q(2) = 3 находим q(n) = nl°923.
Обозначим через s(n) чисто операдий сложения. Тогда s(n) = 3s(n) + 5n и s(2) = 10. Отсюда s(n) = 10nl°923 — 10n
Общее количество операций сложения и умножения в алгоритме Карацубы составляет 11nl°923 — 10n
В работе [1] приведена схема реализации алгоритма Карацубы. Программа была написана на языке Java. Проводилось сравнение двух методов умножения: стандартного умножения чисел типа Biglnteger и алгоритма Карацубы. Эксперимент ставился на ЭВМ Intel Хеоп 3000, ОС RedHat Linux Enterprise 9.0. В таблице приведены результаты эксперимента.
Размер чисел Стандартное умножение, ms Алгоритм Карацубы, ms
64 0.074286 0.071259
128 0.293707 0.203316
256 1.168254 0.592347
512 4.665816 1.929762
100 200 300 400 500 п
Рис. 1. Зависимость времепи вычисления произведения от размеров входных чисел: 1 стандартное умножение. 2 алгоритм Карацубы. 3 алгоритм Карацубы (теоретическая кривая)
£ = (11 и1°923 — 10п) ■ с где с = 4 ■ 10-6
Как видно из графика, теоретические и экспериментальные оценки алгоритма Карацубы в точках п = 2к очень близки друг к другу. Реализация алгоритма Карацубы выигрывает при п > 64.
Литература
1. Малашонок Г.11.. Лапаев А.О., Пирютин И.А. Быстрое умножение в кольце целых чисел // Вестник Тамбовского универститета. Серия: Естественные и технические науки. Тамбов, 2007. Т. 12. Вып.1. С. 130.
2. Кнут Д. Искусство программирования, М., СПб.; Киев, 2004. Т. 2.
Поступила в редакцию 15 декабря 2007г.
Вычисление комплексных корней полиномов
© Г.И.Малашонок , © А.А.Бетин
Предлагается метод вычисления комплексных корней полиномов. Особенностью метода является то, что задача сводится к вычислению действительных корней полиномов, все остальные вычисления являюся точными символьно-численными.
Дан полином над полем комплексных чисел степени п
/ (г) = аог” + аіг” 1 + ... + + яп+1. (1)
Задача состоит в нахождении всех корней уравнения
/ (*) = 0
с заданной точностью Е. Е - это максимальная по модулю абсолютная ошибка вычисления действительной и мнимой части каждого корня.
Вычисление корней полинома проведем в два этапа. Сначала разложим многочлен на множители, не содержащие кратных корней, а затем найдем все корни каждого из сомножителей.
Лемма 1.
Существует алгоритм разложения полинома на множители свободные от квадратов с использованием только точных символьно-численных операций.
Доказательство.
Рассмотрим полином над полем комплексных чисел
/ (2) = ао2и + 1 + ... + а„£ + а„+1.
Этот полином имеет п комплексных корней, с учетом их кратности, поэтому может быть записан в виде
г г
/(г) = ао П(г - 23 , ^ т3 = Щ
3 = 1 3=1
где ш3- - кратность корня 23.
Введм некоторые обозначения. Пусть I = {1, • • • , - множество номеров несовпадающих корней.
Пусть среди чисел ш3- (^’ = 1 • • • £) встречается в различных натуральных чисел п1,п2, • • • , п8,п1 <
П2 < п3 < ••• < пя. Выделим подмножества корней, имеющих одинаковую кратность: N С /,
в
N = ^ : 23 - корень кратности щ}. Получим разбиение множества I та подмножества I = У
i=1
Введем функцию определенную для 1 < г < п^, которая указывает та наименьшее из чисел п^, которое не меньше чем натуральное г:
^ = шш Л.. (*)
ик>г