Schemat Hornera

Schemat Hornera

Schemat Hornera – sposób obliczenia wartości wielomianu dla danej wartości argumentu wykorzystujący minimalną liczbę mnożeń, również algorytm dzielenia wielomianu W(x) przez dwumian xc. Wiązany z nazwiskiem Hornera, był jednak znany już Newtonowi, Ruffiniemu i matematykom chińskim w XII wieku. Przy dzieleniu wielomianów schemat Hornera wolno stosować tylko jeżeli w dwumianie nie ma przy x żadnej potęgi lub liczby. Dla przykładu: przy dwumianie x − 5 wolno nam stosować schemat Hornera. Jednak przy dwumianie 4x2 − 1 schematu Hornera stosować już nie wolno. Przy dwumianie 3x − 6 można stosować schemat Hornera, jeżeli najpierw podzielić przez 3 ten dwumian oraz wielomian Koncepcja

Jeśli dany jest wielomian , to dla obliczenia jego wartości dla zadanego x bezpośrednio z podanego wzoru należy wykonać 1 + 2 + 3 + ... + (n − 1) + n = n(n + 1) / 2 mnożeń oraz n dodawań. Tymczasem proste przekształcenie pokazuje, że wystarczy jedynie n mnożeń i n dodawań. Mnożenia są operacją czasochłonną i eliminacja zbędnych mnożeń jest jednym z podstawowych problemów optymalizacji algorytmów.

Dla przykładu, niech:

W(x) = 2x4 − 5x2 + 4x + 1; chcemy obliczyć wartość tego wielomianu dla x = 3 / 2.

Zapisujemy:

podstawiamy

Warto dla porównania obliczyć tę wartość metodą "tradycyjną" nie korzystając z kalkulatora.

Algorytm Hornera dla obliczenia wartości wielomianu

Dany wielomian

Przekształcamy do postaci

Następnie definiujemy:

Tak otrzymane b0 będzie równe W(x). Rzeczywiście, jeśli podstawimy kolejno do tego wielomianu, otrzymamy

Inne zastosowania

Dzielenie wielomianu przez dwumian

Schemat Hornera dzielenia wielomianu W(x) przez dwumian x–c oparty jest na podobnej zasadzie. Zauważmy, że jeśli : i W(x) = (xc)B(x) + r, to z teorii wynika, że B(x) jest wielomianem stopnia n–1, a r jest liczbą. Jeżeli napiszemy:

to po wymnożeniu i porównaniu współczynników obu stron mamy:

bn − 1 = an,

Dla przykładu, podzielmy ten sam wielomian W(x) = 2x4 − 5x2 + 4x + 1 przez dwumian . Mamy tutaj . Obliczenia praktycznie jest przeprowadzać w tabeli: w jej pierwszym wierszu wypisujemy wszystkie, czyli również zerowe współczynniki wielomianu W(x), a w dolnym wpisujemy kolejno wyniki obliczeń według reguły danej wyżej:

 2   0   -5   4   1 
 2 

Elementy dolnego wiersza są współczynnikami wielomianu B(x), natomiast skrajny prawy element jest resztą z dzielenia.

Oprócz tego, z twierdzenia Bézouta wynika natychmiast, że ta reszta równa się jednocześnie co właśnie i było udowodniono wyżej przez inną metodę.

Rozkład względem potęg dwumianu

Rozpatrzmy, co będzie, jeżeli po zbadanemu wyżej dzieleniu wielomianu W(x) przez xc znów podzielimy przez xc otrzymany wielomian B(x) i będziemy kontynuować dalej analogicznie. Będziemy odpowiednio przekształcać dany wielomian W(x):

W(x) = (xc)B(x) + r,

W(x) = (xc)((xc)B1(x) + r1) + r = (xc)2B1(x) + r1(xc) + r,

W(x) = (xc)2((xc)B2(x) + r2) + r1(xc) + r = (xc)3B2(x) + r2(xc)2 + r1(xc) + r,

Otrzymaliśmy więc rozkład wielomianu W(x) względem potęg dwumianu xc. Taki rozkład można przeprowadzić, stosując schemat Hornera kolejno do i biorąc reszty jako współczynniki (im później jest otrzymana reszta, tym przy większej potędze jest ona współczynnikem).

Obliczanie wartości znormalizowanych pochodnych w punkcie

Dany wielomian

w(x) = (x − α)jv(x) + r(x),

gdzie r(x) jest stopnia mniejszego niż j. Po j-krotnym zróżniczkowaniu:

w(j)(x) = j!v(x).

Z tego wynika, że v(x) jest j-tą znormalizowaną pochodną wielomianu w(x) w punkcie α:

.

Współczynniki wielomianu v i wartości v w punkcjie α obliczamy dzieląc wielomian w i kolejno otrzymywane ilorazy przez dwumian x − α:

dla .

Algorytm Hornera dla obliczania początkowych elementów wymaga dodawań i mnożeń.

Uogólnienie na abstrakcyjny pierścień wielomianów

Podane wyżej można uogólnić na przypadek abstrakcyjnego pierścienia wielomianów.

Niech P[x] będzie pierścieniem wielomianów, gdzie P jest dowolnym ciałem. Jeśli

to współczynniki ilorazu

otrzymanego z dzielenia przez spełniają zależność:

dla reszta z tego dzielenia (równa ) wynosi

.


Wyszukiwarka