Schemat Hornera
Z Wikipedii
Schemat Hornera – sposób obliczania wartości wielomianu dla danej wartości argumentu wykorzystujący minimalną liczbę mnożeń. Również algorytm dzielenia wielomianu W(x) przez dwumian x-c wiązany z nazwiskiem Hornera był jednak znany już Newtonowi, Ruffiniemu i matematykom chińskim w XII wieku.
Spis treści |
[edytuj] Teoria pierścieni
Niech P[X] będzie pierścieniem wielomianów. Jeśli
to współczynniki ilorazu
otrzymanego z dzielenia przez spełniają zależność:
dla , reszta z tego dzielenia (równa ) wynosi
- .
[edytuj] Dowód
Ten artykuł wymaga dopracowania zgodnie z zaleceniami edycyjnymi. Należy w nim poprawić: potrzebny dowód. Dokładniejsze informacje o tym, co należy poprawić, być może znajdziesz na stronie dyskusji tego artykułu. Po naprawieniu wszystkich błędów można usunąć tę wiadomość. |
[edytuj] 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:
- i podstawiamy
Warto dla porównania obliczyć tę wartość metodą "tradycyjną" nie korzystając z kalkulatora.
[edytuj] Algorytm Hornera
Dany wielomian
przekształcamy do postaci
Następnie rozpoczynając od najbardziej wewnętrznego działania definiujemy:
Jeśli podstawimy bn do tego wielomianu otrzymamy
tak więc b0 jest wartością wielomianu p od x.
[edytuj] Inne zastosowania
[edytuj] 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) = (x − c)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 co poprzednio, :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 |
Elementy dolnego wiersza są współczynnikami wielomianu B(x), natomiast skrajny prawy element jest resztą z dzielenia. Z twierdzenia Bezouta wynika natychmiast, że jest to wartość wielomianu
- W(x) = 2x4 − 5x2 + 4x + 1 dla .
[edytuj] Obliczanie wartości znormalizowanych pochodnych w punkcie
Dany wielomian
- w(y) = (y − x)jv(y) + r(y)
(gdzie r(y) jest stopnia mniejszego niż j) po j-krotnym zróżniczkowaniu
- w(j)(y) = j!v(y)
Z tego wynika, że v(y) jest j-tą znormalizowaną pochodną wielomianu w(y) w punkcie x.
Współczynniki wielomianu v i wartości v w punkcjie x obliczamy dzieląc wielomian w i kolejno otrzymywane ilorazy przez dwumian y-x.
- dla k = 1,...,j-1
- Twierdzenie
- Algorytm Hornera dla obliczania poczatkowych elementów wymaga dodawań i mnożeń.