K numerickému řešení rovnic typu \(f(x) = 0\) existuje mnoho metod. My zatím známe jen metodu půlení intervalu (viz větu č. 5.41). V této kapitole si ukážeme Newtonovu metodu ( Sir Isaac Newton anglický fyzik a matematik, 1642 – 1727). Newtonův přístup podrobně prozkoumáme na následujícím příkladu.
Vypočtěte třetí odmocninu z kladného reálného čísla \(c\).
Zamyslete se, jak tento problém vyřešit, máme-li k dispozici kalkulátor umožňující pouze sčítat, odčítat, násobit a dělit čísla. Tedy operace, které může provádět stroj i člověk (s pomocí papíru). Tato otázka může vyvstat v praxi: máme-li zjistit jak velký má být poloměr kulového tankeru o daném objemu \(V\), dostáváme \(r = \sqrt[3]{\frac{3}{4\pi} V}\). Pro krychli dostaneme délku hrany rovnou \(a = \sqrt[3]{V}\). Vedle toho třetí odmocnina je jistě sama o sobě zajímavá funkce, jejíž funkční hodnotu je občas potřeba umět vyhodnotit.
Buď \(c>0\). Označme hledanou třetí odmocninu symbolem \(x\), tj. \(x = \sqrt[3]{c}\) (toto je ale jen symbolický zápis, jakou hodnotu \(x\) pro zadané \(c\) má?). Ekvivalentně to znamená řešit rovnici \(x^3 = c\) s neznámou \(c\). Označíme-li \(f(x) \ceq x^3 - c\), je námi hledané číslo \(x\) řešením rovnice \begin{equation*} f(x) = 0.\end{equation*} Tuto úlohu bychom se mohli pokusit řešit nám již známou metodou půlení intervalu (jaké dva počáteční body byste zvolili?). Nyní si však ukážeme další způsob, tzv. Newtonovu metodu.
Myšlenka Newtonovy metody spočívá v konstrukci posloupnosti \((x_n)_{n=1}^\infty\) aproximující řešení rovnice \(f(x) = 0\). Konstrukce posloupnosti je následující:
Obrázek 6.24: Dvě iterace Newtonovy metody.
Z předchozího obrázku se může zdát, že vše je jasné. Ihned se však nabízí následující otázky:
Odpovědí na tyto otázky se v obecném případě nebudeme zabývat. Vraťme se k našemu konkrétnímu případu s třetí odmocninou, kde uvidíme jak na některé z nich odpovědět.
Shrňme si dosavadní výsledky. Je dáno \(c>0\) a funkce \(f(x) = x^3 - c\). Newtonova metoda nám dává rekurentní vztah \begin{equation*} x_{n+1} \ceq x_n - \frac{f(x_n)}{f'(x_n)} = x_n - \frac{x_n^3 - c}{3x_n^2} = \frac{2}{3} x_n +\frac{c}{3x_n^2}.\end{equation*} V našem případě si lze snadno všimnout, že:
Nyní si tedy zbývá rozmyslet, jestli naše posloupnost \((x_n)_{n=1}^\infty\) skutečně konverguje.
Buď \(c>0\) a \((x_n)_{n=1}^\infty\) posloupnost kladných reálných čísel splňující rekurentní vztah \begin{equation*} x_{n+1} = \frac{2}{3} x_n + \frac{c}{3x_n^2}, \quad \text{pro všechna} \ n\in\mathbb{N}.\end{equation*} Potom tato posloupnost konverguje ke konečné kladné limitě.
Položme \(g(x) \ceq \frac{2}{3} x + \frac{c}{3x^2}\) pro \(x>0\). Vyšetřením průběhu zjistíme, že \(g(x) \geq \sqrt[3]{c}\), kde rovnost nastává právě tehdy, když \(x = \sqrt[3]{c}\). Tudíž:
Nyní víme, že posloupnost konverguje nezávisle na volbě první aproximace. To je dobré, ale k praktickému použití nedostatečné. Kdy máme iteraci zastavit? Je potřeba odhadnout chybu mezi členy posloupnosti a skutečnou (neznámou) hodnotou hledané třetí odmocniny.
Buď \((x_n)_{n=1}^\infty\) posloupnost popsaná v předešlé větě. Potom platí \begin{equation*} 0 \leq x_{n+1} - \sqrt[3]{c} \leq 2 (x_n - x_{n+1}), \quad \text{pro} \ n = 2,3\ldots.\end{equation*}
Z předešlé věty víme, že pro \(n=2,3,\ldots\) jistě platí \(\sqrt[3]{c} \leq x_{n+1} \leq x_n\). Potom pro tato \(n\) platí i \begin{equation*} 0 \leq x_{n+1} - \sqrt[3]{c} = -2 x_{n+1} + 3x_{n+1} - \sqrt[3]{c} = -2x_{n+1} + 2x_n + \underbrace{\frac{c}{x_n^2} - \sqrt[3]{c}}_{\leq 0} \leq 2 (x_n - x_{n+1}).\end{equation*}
\(\square\)Toto je pro praktické účely velmi důležitý výsledek. Pomocí dvou naposledy vypočtených členů posloupnosti můžeme odhadnout chybu mezi posledním členem a skutečnou hodnotou \(\sqrt[3]{c}\) (tu neznáme!) a tím dodržet požadovanou přesnost.
Shrňme si vlastnosti Newtonovy metody aplikované na problém hledání třetí odmocniny. Posloupnost \((x_n)_{n=1}^\infty\) zadaná rekurentně vztahem \begin{equation*} x_{n+1} = \frac{2}{3} x_n + \frac{c}{3x_n^2}, \quad n\in\mathbb{N},\end{equation*} konverguje pro libovolně zvolené \(x_1 > 0\) k číslu \(\sqrt[3]{c}\). Chybu mezi \(x_n\) a skutečnou hodnotou \(\sqrt[3]{c}\) lze odhadnout pomocí posledních dvou vypočtených členů: \begin{equation*} 0 < x_{n+1} - \sqrt[3]{c} < 2(x_n - x_{n+1}), \quad n=2,3,\ldots.\end{equation*} Tato informace nám umožňuje výpočet zastavit po dosažení požadované přesnosti.
Člen posloupnosti | Hodnota |
---|---|
\(x_1\) | \(7{,}0\) |
\(x_2\) | \(4{,}71428571428571428571428571428571429\) |
\(x_3\) | \(3{,}24784642966461148279330097511915694\) |
\(x_4\) | \(2{,}38643130490037593935668895758001112\) |
\(x_5\) | \(2{,}00066641679591817635777458039226767\) |
\(x_6\) | \(1{,}{\color{red}91}672239561208699369932626267864600\) |
\(x_7\) | \(1{,}{\color{red}91293}867672049370288664833049651171\) |
\(x_8\) | \(1{,}{\color{red}912931182}80174664702280424145842154\) |
\(x_9\) | \(1{,}{\color{red}912931182772389101199}56738659641893\) |
\(x_{10}\) | \(1{,}{\color{red}912931182772389101199116839548760}30\) |
\(\sqrt[3]{7}\) | \(1{,}91293118277238910119911683954876028\) |
Tabulka 6.2: Výpočet třetí odmocniny ze sedmi pomocí Newtonovy metody. Poslední řádek obsahuje přesnou hodnotu zaokrouhlenou na 36 desetinných míst.
Jako ukázku použití metody uvádíme tabulku 6.2 s výpočtem třetí odmocniny z čísla \(7\). Jako první iteraci volíme číslo \(7\) samotné. To není optimální volba.
Na výpočtu v tabulce 6.2 lze pozorovat, že od 6. iterace se počet správných cifer přibližně zdvojnásobuje. Tento efekt nazýváme kvadratickou konvergencí a přesně ho pro naši posloupnost formulujeme níže.
Je-li \(c > 1\) a \(x_1 > \sqrt[3]{c}\), pak pro každé \(n\in\mathbb{N}\) platí \begin{equation*} x_{n+1} - \sqrt[3]{c} \leq \Big( x_n - \sqrt[3]{c} \Big)^2.\end{equation*}
Vynecháváme.
\(\square\)Je-li tedy chyba \(n\)-tého členu například \(10^{{\color{red}-5}}\), pak chyba dalšího členu je již pouze \(10^{{\color{red}-10}}\)!
Rekurentní posloupnost pocházející z Newtonovy metody se pro „špatně“ zvolenou počáteční podmínku může chovat neočekávaně. Například může oscilovat (tj. posloupnost vůbec nebude mít limitu), nebo může divergovat do nekonečna.
Zkoumejte chování Newtonovy metody aplikované na \(p(x) = x^5 - x^4 - x + 2\) s počátečním bodem \(x_1 = 2\). Rekurentní vzorec Newtonovy metody v tomto případě zní \begin{equation*} x_{n+1} = x_n - \frac{x_n^5 - x_n^4 - x_n + 2}{5x_n^4 - 4x_n^3 - 1}.\end{equation*} Na obrázku uvádíme prvních několik členů této rekurentní posloupnosti
Obrázek 6.25: Patologické chování posloupnosti aproximací generovaných Newtonovou metodou. Problém zřejmě spočívá ve špatné volbě počáteční aproximace.