# 2. Numerické metody (90%) ###### tags: `matika`, `MA018` :::warning * Iterativní metody pro řešení nelineárních rovnic * Newtonova metoda a její modifikace. * Přímé metody pro řešení systému lineárních rovnic * Gaussova eliminace * Jacobi * Gauss-Seidel * relaxační metody * Numerická diferenciace, diferenciační schémata. ::: Keď tak, tu sú moje (Megi) poznámky, čo som si na skúšku písala https://www.dropbox.com/s/mw22d9gqlljd8lo/Numeriky.pdf?dl=0 :::info **Chyby** * $x$: přesná hodnota * $\tilde{x}$: aproximace $x$ * $x - \tilde{x}$: absolutní chyba $\tilde{x}$ * $|x - \tilde{x}| \le \alpha$: odhad absolutní chyby * $\displaystyle \frac{x - \tilde{x}}{x}$: relativní chyba * $\displaystyle |\frac{x - \tilde{x}}{x}| \le \delta$: odhad relativní chyby ::: :::info **Parametrická spojitost funkce** Zápis $C^2[a,b]$ značí že interval $[a,b]$ je $C^2$ spojitý. Neplést se geometickou spojitostí $G$, která se definuje pomocí tečných vektorů. * $C^{-}$ – Dva segmenty nenavazují * $C^{0}$ – Dva segmenty na sebe navazují * $C^{1}$ – Navazují na sebe první derivace funkce * $C^{2}$ – Navazují na sebe druhé derivace funkce. ::: ## Iterativní metody pro řešení nelineárních rovnic ### Prostá iterační metoda (metoda pevného bodu) * Používá se pro rovnice typu $x = g(x)$ * Funkce G je spojitá na intervalu $I = [a, b]$ * Řešení rovnice $\xi$ *(ksí)* = pevný bod funkce $g$ #### Proces * Zvolíme iterační funkci $g$ * Zvolíme počáteční hodnotu $x_0$ náležící do intervalu $I$ * Položíme $x_1 = g(x_0)$ obecně $x_{k+1} = g(x_k)$ ![](https://i.imgur.com/7Uiwe1m.png =500x) :::info Jestliže spojitá funkce $g$ zobrazuje interval $I$ do sebe, tj. pro každé $x \in I$ platí $g(x) \in I$, pak na intervalu $I$ existuje alespoň jeden pevný bod $\xi$ funkce $g$. ::: #### Klasifikace pevných bodů Pevný bod $\xi$ funkce $g$ se nazývá * přitahující (atraktivní) pevný bod, jestliže existuje takové okolí $V$ tohoto bodu $\xi$, že pro každou počáteční aproximaci $x_0 \in V$ posloupnost iterací $\{x_k\}^\infty_{k = 0}$ konverguje k bodu $\xi$. * odpuzující (repulzivní) pevný bod, jestliže existuje takové okolí $U$ bodu $\xi$, že pro každou počáteční aproximaci $x_0 \in U$, $x_0 \neq \xi$, existuje takové $k$, že $x_k \notin U$. #### Určení Necht $g \in C[a,b]$, $g:[a; b]→[a,b]$ a nechť $g$ má v bodě $\xi$ derivaci. * Je-li $|g'(\xi)| < 1$, pak $\xi$ je pritahující pevný bod. * Je-li $|g'(\xi)| > 1$, pak $\xi$ je odpuzující pevný bod. ### Newtonova metoda (Metoda tečen) Metoda druhého řádu pro jednoduchý kořen $\xi$ Iterační funkce: \begin{align*} g(x_{k+1}) = x_k - \frac{f(x_k)}{f'(x_k)} \end{align*} #### Proces * Uvažujeme rovnici $f(x) = 0$ * Zvolíme počáteční hodnotu $x_0$ * $x_1$ = průsečík tečny k $f$ v bodě $x_0$ a osy $x$ * obecně: $x_{k+1}$ je průsečík tečny k funkci $f$ v bodě $x_k$ s osou $x$ ![](https://i.imgur.com/xmM8YVg.png =500x) :::info Nechť $f \in C^2[a, b]$ viz [Spojitost funkce](#Spojitost-funkce) . Nechť $\xi \in [a,b]$ je kořenem rovnice $f(x) = 0$ a $f'(\xi) \neq 0$. Pak existuje $\delta > 0$ tak, že posloupnost $\{x_k\}^\infty_{k = 0}$ generovaná Newtonovou metodou konverguje k bodu $\xi$ pro každou pocátecní aproximaci $x_0 \in [\xi - \delta, \xi + \delta] \subseteq [a,b]$. ::: #### Fourierovy podmínky :::success * Nechť $f \in C^2[a, b]$ a rovnice $f(x) = 0$ má v intervalu jediný koren $\xi$ * Nechť $f"$ a $f'$ nemění znaménka na intervalu $[a,b]$ pričemž $f'(x) \neq 0$ a $∀ \in [a,b]$ Nechť počáteční aproximace $x_0$ je ten z krajních bodu $[a,b]$, v nemž znaménko funkce je stejné jako znaménko $f''(x)$ na intervalu $[a,b]$. Pak posloupnost $\{x_k\}^\infty_{k = 0}$ určená Newtonovou metodou konverguje monotonně k bodu $\xi$. ::: #### Problémy * $\xi$ – inflexní bod, např. funkce $arctan(x)$ * Nevhodná volba iterace: $f'(x_k) = 0$. * Vícenásobný koren: $f(\xi) = f'(\xi)$ → pomalá konvergence ### Metoda sečen metoda je řádu $(1+\sqrt{5})/2 \doteq 1,618$. Iterační funkce: \begin{align*} x_{k+1} = x_k - \frac{x_k - x_{k-1}}{f(x_k) - f(x_{k-1})} f(x_k) \end{align*} ![](https://i.imgur.com/dRjWHKQ.png =500x) ### Metoda regula falsi metoda je řádu 1. Iterační funkce: \begin{align*} x_{k+1} = x_k - \frac{x_k - x_s}{f(x_k) - f(x_s)} f(x_k) \end{align*} $s = s(k)$ je nejvetší index takový, že $f(x_k)f(x_s) < 0$, přitom $f(x_0)f(x_1) < 0$ ![](https://i.imgur.com/NG4jw7r.png =500x) ## Přímé metody pro řešení systému lineárních rovnic ### Gaussova eliminace Rovnice se přepíše do maticového zápisu Jsou povoleny následující operace, které nezmění hodnost soustavy: * násobení či dělení jednotlivých řádků nenulovým číslem * prohazování libovolných řádků soustavy * přičítání násobků jednotlivých řádků k jinému řádku > **Příklad:** \begin{align*} \begin{array}{cc} 8x & -y & -2z & = 0 \\ -x & +7y & -z & = 10 \\ -2x & -y & +9z & = 23 \\ \end{array} \end{align*} > přepíšeme na: > \begin{align*} \left(\begin{array}{cc} 8 & -1 & -2 & 0 \\ -1 & 7 & -1 & 10 \\ -2 & -1 & 9 & 23 \\ \end{array}\right) \end{align*} > > * První krok – eliminace x z druhého a třetího řádku. > 1. první řádek neupravujeme > 2. druhý řádek násobíme 8 a přičteme první řádek > 3. třetí řádek násobíme 4 a přičteme první řádek > \begin{align*} \left(\begin{array}{cc} 8 & -1 & -2 & 0 \\ 0 & 55 & -10 & 80 \\ 0 & -5 & 34 & 92 \\ \end{array}\right) \end{align*} > * Druhý krok – eliminace y ze třetího řádku > 1. první řádek neupravujeme > 2. druhý řádek neupravujeme > 3. třetí řádek násobíme 11 a přičteme druhý řádek > 4. vydělíme třetí řádek 364 a získáme řešení z = 3 > \begin{align*} \left(\begin{array}{cc} 8 & -1 & -2 & 0 \\ 0 & 55 & -10 & 80 \\ 0 & 0 & 1 & 3 \\ \end{array}\right) \end{align*} > * Třetí krok – zpětné dosazení > 1. k druhému řádku přičteme třetí řádek vynásobený 10 > 2. druhý řádek podělíme 55 > 3. k prvímu řádku přičteme třetí řádek vynásobený 2 a druhý řádek > > \begin{align*} \left(\begin{array}{cc} 1 & 0 & 0 & 1 \\ 0 & 1 & 0 & 2 \\ 0 & 0 & 1 & 3 \\ \end{array}\right) \end{align*} > Výsledek je pak $x = 1$, $y = 2$, $z = 3$ ### Jacobiova iterační metoda ![](https://i.imgur.com/tB8G8FU.png =350x) matici A zapíšeme jako $A = D + L + U$ ![](https://i.imgur.com/ewTpolM.png =280x) * D je diagonální matice * L je dolní trojúhelníková matice s nulami na diagonále * U je horní trojúhelníková matice s nulami na diagonále $Ax = (D + L + U)x = b$ $Dx = -(L + U)x + b$ Pokud $a_{ii} \neq 0, i = 1,...,n$, je matice $D$ regulární a z předchozí rovnice lze vypočítat $x = \frac{-D(L + U)x + b}{D}$ ![](https://i.imgur.com/FnxhdTx.png =260x) Jacobiova iterační matice: $T_j = -D^{-1}(L + U)$ $\displaystyle T_J = (t_{ij}), t_{ij} = -\frac{a_{ij}}{a_{ii}}$ pro $i \neq j, t_{ii} = 0$ pro $i = 1,...,n$ ![](https://i.imgur.com/42zgHtB.png =500x) Výsledný maticový zápis: ![](https://i.imgur.com/S0ee6Md.png =500x) #### Věta o konvergenci :::info Posloupnost $\{x_k\}^\infty_{k = 0}$ generovaná metodou $x^{k+1} = T_Jx^k + D^{-1}b$ konverguje pro každou počáteční aproximaci $x^0 \in \mathbb{R}^n$ právě tehdy, když $\varrho(T_J) < 1$. ::: #### Silné řádkové sumační kriterium :::info Pokud je matice ryze řádkově diagonálně dominantní pak Jacobiova iterační metoda konverguje pro každou počáteční aproximaci $x^0 \in \mathbb{R}^n$ \begin{align*} |a_{ii}| > \sum_{j = 1, j \neq i}^{n} |a_{ij}| ,\quad i = 1,...,n \end{align*} ::: #### Silné sloupcově sumační kriterium :::info Pokud je matice ryze sloupcově diagonálně dominantní pak Jacobiova iterační metoda konverguje pro každou počáteční aproximaci $x^0 \in \mathbb{R}^n$ \begin{align*} |a_{kk}| > \sum_{i = 1, i \neq k}^{n} |a_{ik}| ,\quad k = 1,...,n$ \end{align*} ::: ### Gaussova-Seidelova iterační metoda Z první rovnice vypočteme $x1$: \begin{align*} x_1^{k+1} = \frac{1}{a_{11}}(b1 - a_{12}x_2^k - ... - a_{1n}x_n^k) \end{align*} Z druhé rovnice vypočteme $x2$, pro $x1$ použijeme novou iteraci: \begin{align*} x_2^{k+1} = \frac{1}{a_{22}}(b2 - a_{21}x_1^{k+1} - a_{23}x_3^k - ... - a_{1n}x_n^k) \end{align*} Z třetí rovnice vypočteme $x3$, pro $x1$ a $x2$ použijeme novou iteraci: \begin{align*} x_3^{k+1} = \frac{1}{a_{33}}(b3 - a_{31}x_1^{k+1} - a_{32}x_2^{k+1} - a_{34}x_4^k - ... - a_{1n}x_n^k) \end{align*} Obecně: \begin{align*} x_i^{k+1} = \frac{b_i}{a_{ii}} - \sum_{j=1}^{i-1} \frac{a_{ij}}{a_{ii}} x_j^{k+1} -\sum_{j=i+1}^{n} \frac{a_{ij}}{a_{ii}} x_j^{k} \quad,\quad i = 1,...,n \end{align*} Maticový zápis *(viz [Jacobiova iterační metoda](#Jacobiova-iterační-metoda))* \begin{align*} Ax &= b \\ (D+L+U)x &= b \\ (D+L)x &= -Ux + b \\ \end{align*} $a_{ii} \neq 0, i = 1,...,n \implies$ matice $D + L$ je regulární a \begin{align*} x &= -(D+L)^{-1}Ux +(D+L)^{-1}b \\ \end{align*} Položme $T_G = -(D + L)^{-1}U$, Gaussova-Seidelova iterační metoda je tvaru \begin{align*} x^{k+1} = T_Gx^k + g ,\quad g = (D+L)^{-1}b \end{align*} #### Věta o konvergenci :::info Posloupnost $\{x_k\}^\infty_{k = 0}$ generovaná metodou $x^{k+1} = -(D+L)^{-1}Ux +(D+L)^{-1}b$ konverguje pro každou počáteční aproximaci $x^0 \in \mathbb{R}^n$ právě tehdy, když $\varrho(T_G) < 1$. ::: Platí * [Silné řádkové sumační kriterium](#Silné-řádkové-sumační-kriterium) * [Silné sloupcově sumační kriterium](#Silné-sloupcově-sumační-kriterium) ### relaxační metody Modifikace Gaussovy–Seidelovy metody, $\omega$ – relaxční parametr \begin{align*} x_i^{k+1} = (1-\omega)x_i^k + \frac{\omega}{a_{ii}}\left(b_i - \sum_{j=1}^{i-1} a_{ij} x_j^{k+1} -\sum_{j=i+1}^{n} a_{ij} x_j^{k}\right) \end{align*} Relaxacní metodu lze maticově zapsat jako: \begin{align*} x^{k+1} &= (D - \omega L)^{-1} [(1-\omega)D + \omega U]x^k + \omega(D - \omega L)^{-1}b \\ T_\omega &= (D - \omega L)^{-1} [(1-\omega)D + \omega U] \end{align*} Hodnoty parametru $\omega$: * Pro $0 < \omega < 1$ se iterační metody nazývají metodami dolní relaxace. Tyto metody jsou vhodné v případe, že Gaussova-Seidelova metoda nekonverguje. * Pro $\omega = 1$ je relaxační metoda totožná s Gaussovou-Seidelovou metodou. * Pro $1 < \omega$ se metody nazývají metodami horní relaxace, nebo časteji SOR metodami (Successive Over-Relaxation). Tyto metody lze užít ke zrychlení konvergence Gaussovy-Seidelovy metody. #### Věta (Kahan) :::info Nechť $a_{ii} \neq 0, i = 1,...,n$ Pak $\varrho(T_\omega) \ge |\omega - 1|$ **Důsledek:** Má smysl uvažovat jen $\omega \in (0, 2)$ ::: #### Věta (Ostrowski-Reich) :::info Pro pozitivně definitní matici $A$ platí $\varrho(T_\omega) < 1$ pro všechna $\omega \in (0, 2)$ **Třídiagonální matice:** $A = (a_{ij})_{i,j = 1}^n$, $a_{ij} = 0$, pro $|i-j| > 1$ ::: #### Věta :::info Nechť $A$ je třídiagonální pozitivně definitní matice. Pak $\varrho(T_G) = \varrho^2(T_J) < 1$ a optimální hodnota relaxačního parametru je dána vztahem: \begin{align*} \omega = \omega_{opt} = \frac{2}{1 + \sqrt{1-\varrho(T_J)}} \end{align*} Při této volbě je $\varrho(T_\omega) = |1 - \omega|$ ::: #### LU dekompozice :::success $A = L \cdot U$ * $L$ je dolní trojúhelníková matice * $U$ je horní trojúhelníková matice Obecně $P \cdot A = L \cdot U$ kde $P$ je permutační matice, která vyměňuje řádky matice $A$ LU dekompozice je v podstatě modifikovaná verze Gaussovy eliminace \begin{align*} Ax &= b \\ A = LU \implies LUx &= b \\ y = Ux \implies Ly &= b \\ \end{align*} Řešíme dva systémy rovnic s trojúhelníkovými maticemi. ::: #### QR dekompozice :::success $A = Q \cdot U$ * $Q$ je ortogonální matice, $Q^{-1} = Q^T$ * $U$ nebo nekdy take $R$ (viz nazev) je horní trojúhelníková matice QR dekompozice má lepší numerickou stabilitu díky ortogonální transformaci *(co to znamená ? netuším)* \begin{align*} Ax &= b \\ A = QR \implies Ux &= Q^Tb \\ \end{align*} ::: #### Choleského dekompozice :::success Nechť $A$ je reálná symetrická pozitivně definitní matice: $A^T = A$ * $R$ je horní trojúhelníková matice \begin{align*} A = R^T \cdot R \end{align*} ::: ## Numerická diferenciace, diferenciační schémata. Chceme spočítat aproximaci $f'(x)$ Pro dané body $x_0,...,x_n$ a dané funkční hodnoty $f_0,...,f_n$ kde $f_k = f(x_k)$ ### Polynomy Prvně spočítáme polynom který lze následně derivovat. Předpokládámě že zadanými $n + 1$ body prochází polynom nejvýše $n$-tého stupně. #### Lagrangeův polynom \begin{align*} P(x) = \sum_{i=0}^{n}f_iL_i(x) = \sum_{i=0}^{n}f_i\frac{\displaystyle \prod_{j \neq i}(x-x_j)}{\displaystyle \prod_{j \neq i}(x_i-x_j)} \end{align*} * $L_i$ – Lagrangeovy základní (base) polynomy \begin{align*} L_i(x) = \frac{\pi_i(x)}{\pi_i(x_i)} =\frac{\displaystyle \prod_{j \neq i}(x-x_j)}{\displaystyle \prod_{j \neq i}(x_i-x_j)} \end{align*} > **Příklad:** > ![](https://i.imgur.com/llQUgIE.png =400x) > >Výpočet základního polynomu $L_i$ je $O(n^2)$ Výpočet celého interpolačního polynomu $P$ je $O(n^3)$ > >Pro efektivnější výpočet lze využát **Hornerovo schéma** > \begin{align*} \omega(x) = \displaystyle \prod_{j=0}^{n}(x-x_j) \quad &: O(n^2) \\ \pi_i(x) = \omega(x):(x - x_i) \quad &: O(n)\\ \pi_i(x) \quad &: O(n)\\ P \quad &: O(n^2) \end{align*} > > ![](https://i.imgur.com/kWVmYlQ.png =420x) > ![](https://i.imgur.com/2Rwrp3s.png =420x) ### Numerická diferenciace > **Příklad 1:** > ![](https://i.imgur.com/71GPIgD.png =210x) > **Příklad 2:** > ![](https://i.imgur.com/8teQ16m.png =440x) Derivace z Taylorova rozvoje ![](https://i.imgur.com/ZnHASjb.png) ### Richardson extrapolation