Hornerovo schéma
Hornerovo schéma je efektivním algoritmem pro práci s polynomy. Polynom je matematickým výrazem, který lze zapsat anxn + an-1xn-1 + · · · + a1x + a0. Hornerův algoritmus lze využít pro určení kořenů polynomu, jejich dělení nebo určení funkční hodnoty polynomu v daném bodě. Zní to možná trochu složitě, takže lepší bude vše ukázat na příkladech.
Kořeny polynomu
Jak jistě víš, například rovnice kvadratická je zároveň polynomem druhého stupně. U takových rovnic je nalezení kořene hračka, ale u rovnic vyšších stupňů je výhodné využít Hornerovo schéma. Ukažme si na příkladu.
P(x) = x3 - 3x + 2
Krok 1. Přepíšeme koeficienty do řádku. Za chybějící x2 píšeme nulu.
1 0 -3 2
Krok 2. Nyní se podíváme na poslední koeficient a odhadujeme: 2 = 1·2 = (-1)·(-2). Vybrané číslo vepíšeme vlevo a do třetí řádky opíšeme první koeficient.
1 | 0 | -3 | 2 | |
1| | - | |||
1 |
Krok 3. Nyní vždy násobíme číslo v třetím řádku vybraným číslem vlevo před čarou a sčítáme s číslem nad. Opakujeme kolikrát je třeba. Tím, že jako poslední číslo třetího řádku vznikne nula jsme potvrdili, že 1 je kořenem polynomu.
1 | 0 | -3 | 2 | |
1| | - | 1 | 1 | -2 |
1 | 1 | -2 | 0 |
Konstanty v třetím řádku jsou ve skutečnosti koeficienty polynomu x2 + x - 2. Původní polynom jsme tedy vlastně rozložili na součin polynomu druhého stupně x2 + x - 2 a kořenového činitele x - 1.
P(x) = x3 - 3x + 2 = (x2 + x - 2)·(x - 1)
Pro hledání dalších kořenů opakujeme Hornerův algoritmus. Je dobré vyzkoušet, zda 1 není vícenásobným kořenem. Zkusme ji znovu.
1 | 1 | -2 | |
1| | - | 1 | 2 |
1 | 2 | 0 |
Číslo 1 je dvojnásobným kořenem polynomu P(x). Nyní už nám zbyl polynom x + 2. Jehož kořenem je očividně -2. Zde je výsledný rozklad na součin ireducibilních (dále nerozložitelných) reálných polynomů.
P(x) = x3 - 3x + 2 = (x + 2)·(x - 1)·(x - 1) = (x + 2)·(x - 1)2
Kořeny polynomů jsou tedy: dvojnásobný kořen 1 a jednoduchý kořen -2.
Pozn. Pokud by kořeny bylo komplexní číslo, čímž se ale v tomto článku zabývat nebudeme, a zápis by měl být také uskutečněn jako součin ireducibilních reálných polynomů, pak bychom se museli spokojit se zapsáním původního kvadratického polynomu. Například polynom s dvojnásobnými komplexními kořeny 1 + j a 1 - j a jedním jednoduchým kořenem -2 by vypadal v rozkladu na součin ireducibilních reálných polynomů následovně.
P(x) = (x2 - 2x + 5)2·(x + 2)
Dělení polynomů
Hledání kořene (tvar "samotný kořen") a tedy kořenového činitele (tvar "x - kořen") je zároveň dělení polynomu jeho kořenovým činitelem, tedy je jasné, že zbytek po dělení, tedy poslední číslo ve třetím řádku v tomto případě bude jasně nula. Stejným způsobem tedy můžeš určit i zbytek po dělení dvou polynomů. Ukažme si tedy příklad, kde dělíme takovým polynomem, který není kořenovým činitelem děleného polynomu a tedy vznikne na konci nenulový zbytek.
Dělme polynom P(x) = 4x3 + 2x2 - 2 polynomem Q(x) = 2x - 1
Kořenem polynomu Q(x) je očividně ½. Zápis do Hornerova schématu bude nepatrně složitější, protože musíme zohlednit koeficient 2 před x v polynomu Q(x). Tento polynom podělíme dvěmi, abychom získali koeficient 1 na místo 2x. Tím pádem také podělíme celý polynom P(x), aby poměr zůstal nezměněn.
P(x)/Q(x) = (4x3 + 2x2 - 2)/(2x - 1) = (2x3 + 1x2 - 1)/(x - ½)
Tedy následuje zápis do Hornerova schématu a výpočet.
2 | 1 | 0 | -1 | |
½| | - | 1 | 1 | ½ |
2 | 2 | 1 | -½ |
Výsledkem dělení je tedy následující polynom.
P(x)/Q(x) = 2x2 + 2x + 1 - ½/(x - ½) = 2x2 + 2x + 1 - 1/(2x - 1)
Funkční hodnota
Určení funkční hodnoty v bodě je zároveň i hledáním kořenů polynomu. Pokud je v tomto bodě funkční hodnota nulová, je jasné, že je bod kořenem polynomu. Ukažme si tedy na závěr příklad na určení funkční hodnoty.
f(x) = x6 - 3x5 + 6x2 + 2x + 1 v bodě x=2
1 | -3 | 0 | 0 | 6 | 2 | 1 | |
2| | - | 2 | -2 | -4 | -8 | -4 | -4 |
1 | -1 | -2 | -4 | -2 | -2 | -3 |
Funkční hodnota v bodě x=2 je rovna -3.
f(2) = -3
Možná se ti může zdát využívání Hornerova algoritmu při hledání funkční hodnoty zbytečné, ale velmi ho oceníš v případě, že nebudeš mít po ruce kalkulačku.