Преобразование полиномов в схему Горнера(Horner)
Подпакет Horner в системе Mathematica 4 реализует хорошо известную схему вычисления полиномов – схему Горнера. При ней операции возведения в степень заменяются операциями умножения. Для этого служит функция Horner:
- Horner [poly] – устанавливает полином poly в форму Горнера;
- Horner [poly, vars] – устанавливает полином ряда переменных vars в форму Горнера.
Примеры преобразования полиномов в схему Горнера:
<
<
NumericalMath`Horner`
Horner[
11
x
^
3
-
4
x
^
2
+
7
x
+
2
]
2
+
x (
7
+
x (
-
4
+
11x
))
Horner[ a x
^
3
+
bx
^
2
+
c x
+
d, x ]
d
+
x (c
+
x (b
+
ax))
Horner[ x
^
(
1
/
3
)
+
x
+
x
^
(
3
/
2
) ]
Схема Горнера может использоваться и для отношения полиномов:
Horner [poly1
/
poly2] и Horner [poly1
/
poly2, vars1,vars2]
Эти функции можно использовать для улучшенного представления аппроксимации Паде, что демонстрирует следующий пример:
<
<
Calculus`Fade`
approx
=
Padef Exp[Log[x]
-
x], {x,
0
,
3
,
2
}]]
Horner[ approx ]
Переход к схеме Горнера дает ряд преимуществ перед обычным вычислением полиномов: уменьшается время вычислений, повышается их точность, уменьшается вероятность расхождения численных методов, в которых используются полиномы. В системе Mathematica 3 подпакет Corner находился в пакете расширения NumberMath, что было не вполне логично.