Schemat Hornera
- 1 -
Jednym z często rozwiązywanych zadań numerycznych jest obliczanie wartości wielomianu.
Wynika to z waŜnego faktu matematycznego, zgodnie, z którym kaŜdą funkcję ciągłą, nawet o najbardziej
skomplikowanej postaci, moŜna lokalnie zastąpić wielomianem, którego postać zaleŜy od tego, jaką
chcemy uzyskać dokładność obliczeń i oczywiście od samej funkcji. Dla przykładu, wartości niektórych
standardowych funkcji w języku Pascal są obliczane, jako wartości odpowiednio dobranych wielomianów
lub ilorazów wielomianów.
Naszym zadaniem jest obliczenie wartości wielomianu:
(*)
dla ustalonej wartości argumentów x=z.
Wyznaczmy najpierw liczbę dodawań i mnoŜeń potrzebnych do obliczenia
ze wzoru (*).
Dla obliczenia kolejnych potęg z
2
, z
3
, …, z
n
naleŜy wykonać n-1 mnoŜeń. Następnie potrzeba n mnoŜeń
by obliczyć wartość jednomianów
dla i = 0, 1, …, n-1 i n dodawań, aby je zsumować. Zatem
obliczenie wartości wielomianu ze wzoru (*) wymaga wykonania 2n-1 mnoŜeń i n dodawań.
Wielomian (*) moŜna przedstawić w innej postaci sugerując odmienny sposób liczenia jego
wartości. PokaŜemy to najpierw na przykładzie wielomianu stopnia 3:
który moŜna zastąpić następująco:
Postać ta podpowiada następujący sposób obliczania wartości w
3
(z):
Szukaną wartością wielomianu jest
. ZauwaŜmy, Ŝe z wyjątkiem pierwszego kroku w kaŜdym
następnym są wykonywane te same działania: mnoŜenie poprzedniej wartości b przez z i dodanie do tego
iloczynu kolejnego współczynnika wielomianu. MoŜemy uogólnić tę obserwację i zastosować do
wielomianu dowolnego stopnia. Otrzymamy wtedy następującą postać wielomianu:
…
(**)
Schemat Hornera
- 2 -
i odpowiadający jej sposób obliczania wartości dla argumentu z, zwany schematem Hornera:
, 1, 2, … ,
(***)
Liczba działań arytmetycznych potrzebnych do obliczenia wartości wielomianu za pomocą schematu
Hornera wynosi n mnoŜeń i n dodawań, a więc jest o n-1 mnoŜeń mniejsza niŜ w przypadku stosowania
metody bezpośredniej wynikającej z postaci (*).
Wzory (***) są przykładem zaleŜności rekurencyjnej, którą tworzą współczynniki b: kolejny
współczynnik
oblicza się korzystając z wartości poprzedniego współczynnika
, a współczynnik
jest równy
.
Wielkość
występujące we wzorach (***) mają bardzo ciekawą interpretację. Wyrazy
są
współczynnikami ilorazu
otrzymanego z dzielenia wielomianu
przez dwumian
, a
jest resztą z tego dzielenia.