Metoda tečen

Z Wikipedie, otevřené encyklopedie

Metoda tečen je iterační numerická metoda užívaná v numerické matematice k numerickému řešení soustav nelineárních rovnic. Nazývá se také Newtonova metoda a metodou tečen je označována, protože přesnější řešení rovnice f(x) = 0 je hledáno ve směru tečny funkce f(x).

Obsah

[editovat] Popis algoritmu

Newtonova metoda tečen slouží k nalezení řešení rovnice f(x) = 0 za předpokladu, že známe derivaci funkce f'(x), tedy směrnici tečny. Pro jednoduchost dále předpokládejme, že x i f(x) jsou skaláry.

Dalším nezbytným předpokladem je znalost počáteční hodnoty x0, v jejíž blízkosti hledáme řešení. Pokud se funkce f(x) „chová rozumně“ (je spojitá, hladká a monotónní v intervalu, ve kterém hledáme řešení), lze očekávat řešení v místě, kde tečna sestrojená z bodu f(x0) protíná osu x. (Směrnice této tečny je f'(x0).) Tento průsečík označíme x1 a vypočteme jej podle následujícího vztahu.

x_1 = x_0 - \frac{f(x_0)}{f'(x_0)}

Za splnění výše uvedených předpokladů by měla hodnota f(x1) být blíže nule než původní f(x0). Stejný postup můžeme opakovat a najít tak ještě přesnější hodnotu xk).

x_{k+1} = x_k - \frac{f(x_k)}{f'(x_k)}

Iteraci provádíme tak dlouho, dokud hodnota f(xk) neleží dostatečně blízko nuly. (Viz animovaná ukázka několika kroků metody tečen na německé Wikipedii.)

[editovat] Příklad: Výpočet druhé odmocniny

Úkolem je vypočítat druhou odmocninu kladného reálného čísla a.

x = \sqrt{a}

Problém lze definovat také jako nalezení kořenu funkce (matematika) f(x) = x2a, neboli řešení rovnice f(x) = 0.

Vypočteme derivaci f'(x).

f'(x) = 2x

Dosadíme do obecného vzorce a upravíme.

x_{k+1} = x_k - \frac{f(x_k)}{f'(x_k)} = x_k - \frac{x_k^2-a}{2x_k}
x_{k+1} = \frac{1}{2} \left( x_k + \frac{a}{x_k} \right)

Získáváme tak rekurentní rovnici, u které jako počáteční podmínku můžeme zvolit x0 = a.

Ukázka výpočtu , neboli x2 − 9 = 0, metodou tečen.
Ukázka výpočtu \sqrt{9}, neboli x2 − 9 = 0, metodou tečen.

Výpočet \sqrt{9} (druhé odmocniny z devíti) bude podle výše uvedeného algoritmu probíhat následovně.

a = 9
x = 9
    5
    3.4
    3.02352941176471
    3.00009155413138
    3.00000000139698
    3.00000000000000
    3.00000000000000

Je vidět, že po několika málo krocích se hodnota x nemění a ustálí se (konverguje) na hodnotě 3, což odpovídá správnému výsledku.

[editovat] Poznámky

[editovat] Aproximace derivace

Pokud známe pouze funkci f(x) a neznáme její derivaci f'(x), můžeme se pokusit derivaci nahradit numerickou derivací. Případně je možné řešit úlohu metodou sečen, která znalost derivace nevyžaduje.

[editovat] Vektory

Je-li funkce f(x) skalární funkcí vektorového argumentu („z vektoru vypočte skalár“), je nutné hledat xk+1 proti směru gradientu. Předpis pro iteraci lze potom napsat následovně.

\bold x_{k+1} = \bold x_k - \Delta \bold x_k
\Delta \bold x = \left[ \begin{matrix} \frac{f(\bold x)}{\frac{\partial f}{\partial x_1}}, \ldots, \frac{f(\bold x)}{\frac{\partial f}{\partial x_n}} \end{matrix} \right]^T

Pokud je funkce f(x) vektorovou funkcí vektorového argumentu („z vektoru vypočte vektor“), lze předpis pro iteraci napsat následovně.

\bold x_{k+1} = \bold x_k - \bold J (\bold x_k) ^ {-1} \bold f(\bold x_k)

Matice J je takzvaná Jacobiho matice (nebo též jakobián) obsahující parciální derivace.

\bold J(\bold x) = \frac{\partial f_i}{\partial x_j} = \left[ \begin{matrix}   \frac{\partial f_1}{\partial x_1} & \frac{\partial f_1}{\partial x_2} & \ldots & \frac{\partial f_1}{\partial x_n} \\   \frac{\partial f_2}{\partial x_1} & \frac{\partial f_2}{\partial x_2} & \ldots & \frac{\partial f_2}{\partial x_n} \\   \vdots & \vdots & \ddots & \vdots \\   \frac{\partial f_n}{\partial x_1} & \frac{\partial f_n}{\partial x_2} & \ldots & \frac{\partial f_n}{\partial x_n}\end{matrix} \right]

[editovat] Podívejte se také na

[editovat] Externí odkazy