Быстрые алгоритмы деления. Деление чисел методом Ньютона

Страницы работы

5 страниц (Word-файл)

Фрагмент текста работы

6. Быстрые алгоритмы деления

Деление чисел методом Ньютона

Для определенности будем считать, что делимое  и делитель  записаны в позиционной системе счисления по основанию . При этом длины чисел  и  равны, соответственно,  и .

Предварительное обсуждение

Задача нахождения частного сводится к определению приближенного значения дроби  с точностью ½, с последующим его округлением до ближайшего целого, и, возможно его уточнением. Уточнение частного требуется, если округление приближенного значения дроби  происходит не в ту сторону. Пусть — полученное частное. Тогда , и, значит, искомое частное отличается от полученного, не более чем на 1. Для уточнения частного вычислим остаток  и, если , то частное надо уменьшить на 1. Если , то частное надо увеличить на 1.

Приближенное значение дроби  с точностью до ½ можно получить как произведение  на приближенное значение дроби с точностью . Последний факт следует из неравенства . В свою очередь, приближенное значение дроби  можно получить, решая уравнение  методом Ньютона (методом касательных).

Описание метода

Пусть  — некоторое начальное приближение к дроби . О методах выбора  поговорим ниже. Допустим, на -ой итерации построено приближение . Уравнение касательной в точке  к функции  имеет вид . Точка пересечения касательной с осью абсцисс равна . Взяв эту точку в качестве следующего приближения , повторим процесс. И так до тех пор, пока не будет достигнута требуемая точность приближения.

Условия сходимости

Обозначим через  погрешность приближенного решения , т.е. . При  имеем , или .

Из полученной рекуррентной формулы  выводим  или . Из равенства  вытекает, что величина  стремится к нулю с ростом k только тогда, когда .

Выбор начального приближения

Укажем способ выбора , при котором выполняется неравенство . Положим  равным , где  — ближайшее целое, не превосходящее дроби . Трудоемкость вычисления значащих разрядов  имеет порядок . Далее, . Подставим вместо  выражение , где , получим . Поскольку в модуле стоит разность одинаковых по знаку чисел, то  не превосходит наибольшего из них. Так как и , то .

Оценка числа итераций метода

Оценим число итераций метода Ньютона, необходимое для достижения требуемой точности. Из равенства  и неравенства  выводим соотношение . Из неравенства  и  находим , или . Таким образом, число итераций методом Ньютона не больше .

Влияние погрешности вычислений на число итераций

Полученная оценка числа итераций метода Ньютона справедлива, если на каждой итерации  выполняется неравенство .

Выполнение этих неравенств гарантировано при точном вычислении  по формуле . Однако, точное вычисление  по этой формуле приводит к быстрому росту числа знаков после запятой. Чтобы избежать роста числа знаков после запятой предлагается округлить , но так чтобы неравенство  сохранилось.

Для определенности, пусть . В силу выпуклости функции  величина  всегда находится левее , т.е. . Действительно, . Таким образом, если округлить величину  в сторону увеличения с точностью до , то неравенство  сохранится. Обозначим через τ ошибку округления . Тогда . Поскольку под модулем стоит разность одинаковых по знаку чисел, то . Отсюда, учитывая неравенства τ< и выводим .

Оценим трудоемкость k-ой итерации метода Ньютона (k ≥ 1). Из сказанного ранее следует, что xk-1 можно округлить в сторону возрастания с точностью до. Таким образом, число знаков после запятой xk-1 больше 2k-1+n. Из неравенств и b≥pn-1делаем вывод, что первые n-1 разрядов после запятой равны нулю. То есть, число xk-1 представляется в виде , где zk-1 — целое число по длине не больше 2k-1+1.

Общая оценка трудоемкости

Пусть трудоемкость умножения целых чисел длины s и l равна Tу(s + l). Тогда трудоемкость вычисления xk по формуле (2-k-1)хk-= (2, с последующим округлением в  разрядах по порядку определяется величиной О(Tу(2k+n)). Общая трудоемкость метода Ньютона не превосходит по порядку О.

Приведем оценку трудоемкости операции деления методом Ньютона в предположении, что умножение проводится с использованием быстрого преобразования Фурье. В этом случае Tу(l) = О(l∙logl) и вычисление xk лучше вести по формуле . При этом, образы ,  вычисляются сразу. Потом над ними проводятся соответствующие операции умножения, вычитания, и только после этого восстанавливается результат. Поскольку , то длина произведения  не превосходит 2k-1+1+n. Таким образом, трудоемкость k-ой итерации деления по порядку не превосходит О, а, значит, трудоемкость всего метода ограничена сверху величиной О O(m log m log (m-n)).

Тем самым доказана

Теорема. Трудоемкость деления чисел с остатком ограничена сверху величиной O(m log m log (m-n)).

Деление целых чисел без остатка

Если числа а и b заведомо делятся друг на друга, то можно воспользоваться версией метода Ньютона в р-адической арифметике. В дальнейшем будем считать р простым числом. Если b делится на pk, то его последние k разрядов равны 0. Поскольку а делится на b, то а делится на pk. Отбрасывая последние k нулевых разрядов чисел а и b, приходим к задаче деления, где b не делится на р. Так как р — простое число и b0≠0, то наибольший общий делитель b0 и р равен 1. Расширенным алгоритмом Евклида найдем числа u и v, что ub0+рv = 1. Положим х0 = u. Далее проводим итерации метода Ньютона, вычисляя хk по формуле хk = (2-хk-1b)хk-1. Поскольку р — основание системы счисления, то, по сути, мы проводим операции над младшими 2k разрядами, отбрасывая старшие. Обозначим через ηk величину 1-k. Индукцией по k покажем сравнение ηk ≡ 0 . При k = 0 имеем: η0 = 1-0 ≡ 1- b0u ≡ 0(mod р). Пусть ηk-1≡0. Тогда, ηk=1-k≡1-b(2-хk-1b)хk-1

≡(1-k-1)2 .

Единственным решением сравнения а(mod рm-n) является частное а/b. Поэтому, не более чем через log2(m-n)+1 итерацию метода, частное будет найдено. Трудоемкость метода Ньютона в этом случае не превосходит O(). Если для умножения используется быстрое преобразование Фурье, то Ту(l) = O(l logl). Трудоемкость метода в этом случае оценивается величиной O(. Как видим, за счет более экономной схемы умножения, трудоемкость деления чисел нацело, по порядку, имеет ту же трудоемкость, что и умножение.

Тем самым доказана

Теорема. Трудоемкость деления чисел без остатка ограничена сверху величиной .

Резюме

•В лекции подробно разобраны быстрые алгоритмы деления.

•Приведены оценки трудоемкости.

Контрольные вопросы и упражнения:

•Возможность распараллеливания алгоритма деления.

•Как изменится алгоритм деления чисел без остатка, если основание системы счисления будет составное.

•Насколько принципиальный характер носит отличие верхних оценок трудоемкости алгоритмов деления с остатком и без остатка.

•Составить алгоритм деления целых чисел без остатка при основании равном 10.

•Составить алгоритм деления целых чисел без остатка при основании равном 2k.


Похожие материалы

Информация о работе