I_R_W14_M30_C++ Schemat Hornera - efektywna metoda obliczania wartości wielomianów
Schemat Hornera – do czego służy?
Schematu Hornera używamy do obliczania wartości wielomianu. Ten sposób działania zmniejsza liczbę potrzebnych mnożeń, dzięki czemu jest on wydajniejszy niż obliczanie wartości wielomianu w sposób standardowy. Jest to możliwe, ponieważ komputer nie zużywa czasu na zbędne mnożenia. Obliczając wartość wielomianu w sposób tradycyjny, musimy wykonać mnożeń oraz dodawań. Natomiast przy wykorzystaniu schematu Hornera wystarczy mnożeń oraz dodawań.
Wprowadzenie do algorytmu
W celu zrozumienia działania algorytmu obliczającego wartość wielomianu z wykorzystaniem schematu Hornera, wyjaśnijmy kilka pojęć:
stopień wielomianu – najwyższa potęga, do jakiej podnosimy ,
– liczba, dla której obliczamy wartość wielomianu,
współczynniki – liczby, przez które mnożymy kolejne składniki wielomianu.
Zadaniem algorytmu wykorzystującego schemat Hornera jest jak największe zredukowanie liczby mnożeń potrzebnych do obliczenia wartości wielomianu.
Postać ogólna wielomianu -tego stopnia wygląda następująco:
Zwróć uwagę na ostatni składnik. Tę postać można zapisać również następująco:
W tej postaci mamy do czynienia z operacją potęgowania, która okazuje się zbędna, jeżeli za pomocą schematu Hornera przekształcimy wielomian. Zacznijmy od wyłączenia przed nawias:
Wewnątrz nawiasu powstał wielomian o stopniu . Możemy go również przekształcić przez wyłączanie przed nawias:
Proces powtarzamy do momentu, w którym w najbardziej wewnętrznym nawiasie znajdzie się wielomian stopnia 1.
Chcąc wyznaczyć liczbę mnożeń, możemy zaobserwować, w jaki sposób obliczamy wartość powyższego wyrażenia dla danej wartości . Zaczynamy od najbardziej zagnieżdżonego nawiasu. Wykonujemy jedno mnożenie oraz jedno dodawanie. Obliczyliśmy wartość wielomianu pierwszego stopnia. Następnie wynik mnożymy przez oraz dodajemy kolejny współczynnik. Obliczyliśmy wartość wielomianu stopnia drugiego. Czynności powtarzamy, aż do obliczenia wartości wielomianu stopnia , czyli razy. W każdej czynności wykonujemy jedno mnożenie oraz jedno dodawanie. Wyznaczona liczba mnożeń wynosi zatem .
Przykład
Przeanalizujmy przekształcenie wielomianu:
na formę odpowiadającą schematowi Hornera.
Zgodnie z postacią ogólną nasz wielomian będzie wyglądał następująco:
Stopień tego wielomianu jest równy najwyższej potędze, do której jest podnoszona liczba . Zatem w omawianym wypadku jest on równy 3. Współczynniki tego wielomianu to liczby, przez które są mnożone kolejne potęgi liczby . W tym wypadku wynoszą one: 5, 3, -1, 4.
Obliczając wartość tego wielomianu metodą standardową, wykonalibyśmy następującą liczbę mnożeń:
Trzy mnożenia, gdyż mnożymy 5 razy do potęgi 3, dwa mnożenia, by obliczyć 3 razy do kwadratu oraz mnożenie razy -1.
Przekształćmy teraz wyrażenie według zaprezentowanego algorytmu. Wyłączmy przed nawias:
Jak możemy zauważyć, występuje zarówno przy 5, jak i przy 3, zatem ponownie wyłączmy przed nawias:
Policzmy, ile mnożeń wykonamy, chcąc obliczyć wartość tego wielomianu za pomocą schematu Hornera. Odpowiedź to 3.
Zmniejszenie liczby mnożeń wynika z tego, że wyłączyliśmy przed nawias dwa razy.
Algorytm zapisany w sposób iteracyjny
Wzór iteracyjny algorytmu:
wynik = wspolczynnik[0]wynik = wynik * x + wspolczynnik[i] dla i=1, 2,..., n
Specyfikacja:
Dane:
stopienWielomianu– zmienna określająca stopień wielomianu, który mamy obliczyćwspolczynniki[]– tablica przechowująca współczynniki, przez które mnożymy daną potęgę liczby, dla której wartość wielomianu obliczamyx– liczba, dla której obliczamy wartość wielomianu
Dane wyjściowe:
wynik– liczba, która określa obliczoną wartość wielomianu dla argumentux.
Krok 1
Wczytaj dane.
Przy wczytywaniu współczynników wielomianu nie zapominajmy o wyrazie wolnym, który znajduje się przy wartości zmiennej podniesionej do potęgi 0. Dlatego współczynników jest o jeden więcej niż wynosi wartość stopnia wielomianu.
Krok 2
Do zmiennej wynik przypisz wartość zmiennej zapisanej w tablicy wspolczynniki pod indeksem 0.
Krok 3
Do zmiennej wynik przypisz wartość: wynik * x + wspolczynniki[i].
Krok 4
Wypisz „Wartość wielomianu dla argumentu x = wynik”.
Przykładowe wykonanie algorytmu iteracyjnego
Oblicz wartość wielomianu, wykorzystując schemat Hornera:
dla argumentu x = 4.
Dane po wczytaniu:
stopienWielomianu = 4 x = 4 wspolczynniki = {1, 2, 0, 1, -15}
Współczynnik zapisany pod indeksem 2 ma wartość zero, ponieważ w omawianym wielomianie nie ma zapisanego xIndeks górny 22.
Krok 1
wynik = 1
Krok 2
Po tym kroku wynik wynosi:
Krok 3
Aktualnie wynik równa się:
Krok 4
Po tym kroku wynik to:
Krok 5
W tym momencie wynik wynosi:
Tak obliczyliśmy wartość wielomianu metodą iteracyjnąiteracyjną.
Słownik
przepis postępowania prowadzący do rozwiązania ustalonego problemu, określający ciąg czynności elementarnych, które należy w tym celu wykonać
technika programowania polegająca na powtarzaniu tych samych operacji w pętli określoną liczbę razy lub do momentu, aż zostanie spełniony zadany warunek
przypadek, dla którego funkcja rekurencyjna nie wywołuje samej siebie, a zamiast tego zwraca z góry określoną wartość
technika programowania polegająca na odwoływaniu się procedur lub funkcji do samych siebie, aż do momentu spełnienia warunku podstawowego
najwyższa potęga przy zmiennej, która nie jest równa zero
wyrażenie algebraiczne będące sumą jednomianów, czyli wyrażeń postaci aIndeks dolny nnxIndeks górny nn
brytyjski matematyk żyjący w latach 1786–1837; w wieku 14 lat został asystentem nauczyciela w szkole w Bristolu, a w 1809 roku założył własną szkołę w Bath; podał sposób wyznaczania wartości wielomianu z wykorzystaniem minimalnej liczby operacji możenia
moment, gdy funkcja rekurencyjna zwraca konkretną wartość zamiast kolejnego wywołania rekurencyjnego