Распознанный текст, спецсимволы и формулы могут содержать ошибки, поэтому с корректным вариантом рекомендуем ознакомиться на отсканированных изображениях учебника выше
Также, советуем воспользоваться поиском по сайту, мы уверены, что вы сможете найти больше информации по нужной Вам тематике
3.1.2. Метод Руффини-Горнера
В этом разделе мы рассмотрим два эффективных алгоритма, которые помогут нам (1) вычислить значение полинома
в данной точке
и (2) вычислить новый полином
где
.
Рассмотрим область целостности
и полином
из этой области, значение которого в точке
мы хотим вычислить. Очевидно, наиболее прямой способ достигнуть этого состоит в том, чтобы заменить
на а в выписанном полиномиальном выражении и вычислять каждый член отдельно. Заметим, что это довольно трудоемкий процесс. Существует, однако, другой способ, а именно можно использовать метод Руффини-Горнера. [Он хорошо известен как метод Горнера, но Руффини опередил Горнера на 15 лет; см. статью Кайори (Cajori, 1911).]
Метод Руффини-Горнера для эффективного вычисления
работает следующим образом. Положим
умножив это равенство на а и прибавив
получим
Затем,
умножив
на а и прибавив
получим
и т.д. То есть рекурсивная схема этого процесса такова:
и мы получаем вложенную форму
Анализ времени работы метода Руффини-Горнера.
Мы рассмотрим следующие два случая:
Случай а. Коэффициенты полинома
и точка а принадлежат (конечному) полю. В этом случае мы имеем
операций сложения и умножения с одинарной точностью, где
поэтому
вычисляется за время
Случай b. Коэффициенты полинома
и точка а принадлежат кольцу целых чисел. В этом случае мы имеем
сложений и умножений длинных целых чисел, и, как мы отмечали в разд. 1.2, время умножений доминирует над временем сложений; поэтому мы предполагаем, что только умножаем
различных членов на а, где
Если
— значение наибольшего члена, полученного при выполнении метода Руффини-Горнера, то, очевидно,
Чтобы оценить положим
[наибольший по абсолютному значению коэффициент
и рассмотрим «наихудший» возможный случай, когда все коэффициенты полинома
равны
тогда
получается из следующей схемы:
То есть наибольший член, получающийся в течение вычислений, — это значение
в точке
Однако
и, следовательно,
Однако во всех практических приложениях
и, поскольку
мы имеем
Пример. Вычислим значение полинома
в точке
работая с целыми числами. Пользуясь методом Руффини-Горнера, получаем
Мы действуем следующим образом. В первой строке выписываем все коэффициенты полинома
включая нулевые; старший коэффициент стоит слева. Вторая строка получается так: первый (крайний левый) элемент второй строки — это старший коэффициент полинома
Этот первый элемент умножаем на а, прибавляем к произведению второй элемент (первой строки) и записываем сумму как второй элемент второй строки; в нашем примере
и мы имеем
. В общем случае, чтобы вычислить «следующий» элемент второй строки, умножаем последний вычисленный элемент второй строки на а и прибавляем к произведению «следующий» коэффициент из первой строки. Таким образом, продолжая наш пример, мы имеем
что дает
Заметим, что
последний элемент второй строки в приведенном примере, — остаток, полученный при делении
на
. Частное
этого деления также вычисляется в упомянутой выше схеме и получается из остальных элементов второй строки; а именно
Этот метод известен также как синтетический алгоритм деления.
Рассмотрим теперь в области целостности
следующий полином от
из которого мы хотим получить другой полином от у, где
. Очевидно, что полином от у может быть вычислен с использованием теоремы о разложении Тейлора, согласно которой
Однако мы можем действовать лучше; заметим, что эта подстановка дает уравнение от у с коэффициентами
как показывают следующие соотношения:
Пример. Рассмотрим полиномиальное уравнение
для которого мы хотим вычислить полином
Повторным применением синтетического алгоритма деления преобразованный полином от у может быть получен двумя следующими способами:
Руффини (1804) Горнер (1819)
В обоих случаях преобразованное уравнение от у имеет вид
. (В каждом случае читайте коэффициенты последнего столбца снизу вверх.)