Схема Горнера

Обычно многочлен представлен в виде:

$f(x)=\sum\limits_{k=0}^{n} a_k x^k$

или

f(x) = a0 + a1x + a2x2 + ... + akxk

Где ak это действительные числа, представляющие коэффициенты многочлена и
xk это переменные многочлена.

Вышеупомянутый многочлен называют многочленом n-ой степени, то есть deg(f(x)) = n, где n представляет наивысшую степень переменной.

Схема Горнера для деления многочлена - это алгоритм упрощения вычисления значения многочлена f(x) при определённой величине x = x0 методом деления многочлена на одночлены (многочлены 1ой степени). Каждый одночлен включает в себя максимум один процесс умножения и один процесс сложения. Результат, полученный из одного одночлена, прибавляют к результату полученному от следующего одночлена и так далее в аккумулятивной манере. Такой процесс деления также называют синтетическим делением.

Чтобы объяснить вышесказанное, давайте перепишем многочлен в развёрнутой форме;

f(x0) = a0 + a1x0 + a2x02 + ... + anx0n

Это также может быть записано как:

f(x0) = a0 + x0(a1 + x0(a2 + x0(a3 + ... + (an-1 + anx0)....)

Алгоритм, предложенный данной схемой, основан на нахождении значений одночленов образованных выше, начиная с тех которые заключены в больше скобок и двигаясь наружу, для нахождения значения одночленов во внешних скобках.

Алгоритм приводится в действие, следуя нижеизложенным шагам:

1. Дано k = n
2. Пусть bk = ak
3. Пусть bk - 1 = ak - 1 + bkx0
4. Пусть k = k - 1
5. Если k ≥ 0, то вернуться на шаг 3
иначе Конец

Этот алгоритм может быть также графически визуализирован, принимая во внимание данный многочлен 5ой степени:

f(x) = a0 + a1x + a2x2 + a3x3 + a4x4 + a5x5

значение которого находится как x = x0, путём перестановки его следующим образом:

f(x0) = a0 + x0(a1 + x0(a2 + x0(a3 + x0(a4 + a5x0))))

Другим способом представить результаты используя этот алгоритм можно в виде данной ниже таблицы:

K 5 4 3 2 1 0
b5 = a5 b4 = a4 + x0b5 b3 = a3 + x0b4 b2 = a2 + x0b3 b1 = a1 + x0b2 b0 = a0 + x0b1

Пример: Найти значение многочлена f(x) = x4 + 3x3 + 5x2 + 7x + 9 at x = 2

Решение:

Так как многочлен 4ой степени, то n = 4

K 4 3 2 1 0
Шаг b4 = 1 b3 = 3 + 2 * 1 b2 = 5 + 2 * 5 b1 = 7 + 2 * 15 b0 = 9 + 2 * 37
Результат 1 5 15 37 83

Таким образом, f(2) = 83.

Почему нам это необходимо делать?

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

Метод, с помощью которого компьютер обрабатывает проблему, зависит, в основном, от того как Вы, как программист, описываете это компьютеру. Вы можете разработать Вашу программу для нахождения значения многочлена методом прямой подстановки значения переменной или использовать синтетическое деление, данное в схеме Горнера. Единственное отличие между этими двумя подходами это скорость, с которой компьютер будет находить решение том или ином случае.

Преимущество схемы Горнера в том, что оно снижает количество операций умножения. Принимая во внимание то, что время обработки каждого процесса умножения от 5 до 20 раз больше, чем время обработки процесса сложения, Вы можете утверждать, что построение программы для нахождения значения многочлена по схеме Горнера существенно уменьшит затрачиваемое компьютером время вычисления.

Калькулятор деления полиномов


Электронная почта:

© 2005 - 2023
Копирование запрещено! В случае копирования администрация сайта обратится в компетентные органы.