01NUM1:Kapitola7

Z WikiSkripta FJFI ČVUT v Praze
Přejít na: navigace, hledání
PDF [ znovu generovat, výstup z překladu ] Kompletní WikiSkriptum včetně všech podkapitol.
PDF Této kapitoly [ znovu generovat, výstup z překladu ] Přeložení pouze této kaptioly.
ZIPKompletní zdrojový kód včetně obrázků.

Součásti dokumentu 01NUM1

součástakcepopisposlední editacesoubor
Hlavní dokument editovatHlavní stránka dokumentu 01NUM1Kubuondr 26. 11. 201616:56
Řídící stránka editovatDefiniční stránka dokumentu a vložených obrázkůDedicma2 23. 5. 201721:31
Header editovatHlavičkový souborDedicma2 17. 1. 201616:20 header.tex
Kapitola0 editovatZnačeníDedicma2 23. 5. 201721:32 preamble.tex
Kapitola2 editovatOpakování a doplnění znalostí z lineární algebryKubuondr 30. 1. 201717:14 prezentace2.tex
Kapitola3 editovatÚvod do numerické matematikyKubuondr 10. 12. 201614:17 prezentace3.tex
Kapitola4 editovatPřímé metody pro lineární soustavyKubuondr 30. 1. 201711:27 prezentace4.tex
Kapitola5 editovatIterativní metodyKubuondr 31. 1. 201710:41 prezentace5.tex
Kapitola6 editovatVlastní čísla a vektory maticKubuondr 31. 1. 201713:13 prezentace6.tex
Kapitola7 editovatNelineární rovniceKubuondr 31. 1. 201714:27 prezentace7.tex
Kapitola8 editovatInterpolaceKubuondr 31. 1. 201715:43 prezentace8.tex
Kapitola9 editovatDerivace a integraceKubuondr 31. 1. 201717:33 prezentace9.tex

Zdrojový kód

%\wikiskriptum{01NUM1}
\section{Nelineární rovnice}
 
\subsection{Separace kořenů}
 
\begin{theorem}[Bolzanova Věta]
\label{Bolzano}
Nechť je \( f \in \mathcal C ( \left< a, b \right> ) \). Nechť dále \( f ( a ) f ( b ) < 0 \). Potom funkce \( f \) má na \( \left( a, b \right) \) alespoň jeden kořen. Pokud \( f' \) na \( \left( a, b \right) \) nemění znaménko, pak je tento kořen jedinný. 
\begin{proof}
BÚNO \( f ( a ) < 0 \)
\begin{enumerate}[(1)]
\item Důkaz sporem
\\ Položíme \( c = \sup \left\{ x \in \left< a, b \right> | f ( x ) < 0 \right\} \). Předpokládáme \( f ( c ) \neq 0 \), tedy podle definice  \( f ( c ) < 0 \). Volíme \( d \in \left( f(c), 0 \right) \) a díky definici \( c \) neexistuje \( y \in \left< a, b \right> \) takové, aby \( f ( y ) = d \), což je spor se spojitostí funkce \( f \). \qedhere
\end{enumerate}
\end{proof}
\end{theorem}
 
\subsection{Výpočet kořene - metoda bisekcí}
Nechť je \( f \in \mathcal C ( \left< a, b \right> ) \). Nechť dále \( f ( a ) f ( b ) < 0 \). Interval půlíme a vždy pomocí \ref{Bolzano} určíme, v které polovině se nachází kořen. Postup opakujeme s novým intervalem. Označíme-li kořen \( \alpha \) a bod, který půlí interval \( x_k \), můžeme odhadovat
\[ \lvert \alpha - x_k \rvert \leq \frac{b - a}{2^k} \]
 
\subsection{Iterativní metody pro hledání kořenů}
 
\begin{lemma*}
Nechť \( \varphi ( \alpha ) = \alpha \) pro nějaké \( \alpha \). Nechť je dále \( \varphi \) diferencovatelná na nějakém \( H_\alpha^r \) a pro všechna \(x \in H^r_\alpha\) a \( K < 1 \) platí \( \lvert \varphi' ( x ) \rvert \leq K \). Nechť je posloupnost \( \left\{ x_k  \right\}_{k = 0}^\infty \) definována rekurentním vztahem
\[ x_{k + 1} = \varphi ( x_k ), x_0 \in H^r_\alpha \]
Potom
\[ x_k \in H_\alpha^r, \; \forall k \in \mathbbm N \]
\begin{proof}
indukcí podle \( k \)
\begin{itemize}
\item \( k = 0 \)
Je předpokladem věty.
\item \( k \Rightarrow k + 1 \)
\[ \left\lvert x_{k + 1} - \alpha \right\rvert = \left\lvert \varphi ( x_k ) - \varphi ( \alpha ) \right\rvert \]
Použijeme Lagrangeovu věty o přírůstku (předpoklady splněny indukčním předpokladem):
\[ \left\lvert \varphi ( x_k ) - \varphi ( \alpha ) \right\rvert = \left\lvert \varphi' ( \xi ) \right\rvert \left\lvert x_k - \alpha \right\rvert \leq K \left\lvert x_k - \alpha \right\rvert < \left\lvert x_k - \alpha \right\rvert \]
\end{itemize}
\end{proof}
\end{lemma*}
 
\setcounter{define}{3}
\begin{theorem}
\label{KIterativniMetodyKorenu}
Nechť \( \varphi ( \alpha ) = \alpha \) pro nějaké \( \alpha \). Nechť je dále \( \varphi \) diferencovatelná na nějakém \( H_\alpha^r \) a \( \lvert \varphi' ( x ) \rvert \leq K \) pro nějaké \( K < 1 \). Nechť je posloupnost \( \left\{ x_k  \right\}_{k = 0}^\infty \) definována rekurentním vztahem
\[ x_{k + 1} = \varphi ( x_k ) \]
Potom
\[ \lim_{k \rightarrow \infty} x_k = \alpha, \; \forall x_0 \in H_\alpha^r \]
\begin{proof}
\[ \left\lvert x_k - \alpha \right\rvert = \left\lvert \varphi ( x_{k - 1} ) - \varphi ( \alpha ) \right\rvert \]
Díky lemmatu můžeme opakovaně použít Lagrangeovu větu o přírůstku
\[ \left\lvert \varphi ( x_{k - 1} ) - \varphi ( \alpha ) \right\rvert = \left\lvert \varphi ( \xi_{k - 1} ) \right\rvert \left\lvert x_{k - 1} - \alpha \right\rvert = \dots = \left\lvert x_0 - \alpha \right\rvert \prod_{i = 0}^{k - 1} \left\lvert \varphi ( \xi_i ) \right\rvert \leq K^k \left\lvert x_0 - \alpha \right\rvert \]
A tedy
\[ \lim_{k \rightarrow \infty} ( x_k - \alpha ) = \lim_{k \rightarrow \infty} K^k \left\lvert x_0 - \alpha \right\rvert = 0 \]
\end{proof}
\begin{remark*}
Předpoklad \( \lvert \varphi' ( x ) \rvert \leq K<1 \) splníme např. tak, že \(\lvert \varphi' ( \alpha ) \rvert<1\) (je–li \(varphi' (x)\) spojité). Budeme tedy hledat okolí \(H_{\alpha}^r\) tak, aby to bylo splněné.
\end{remark*}
\end{theorem}
 
\subsection{Metoda regula falsi}
 
\setcounter{define}{9}
\begin{theorem}
\label{KRegulaFalsi}
Nechť je \( \alpha \) kořenem funkce \( f \). Nechť dále existuje \( H_\alpha^r \) takové, že \( f \in \mathcal C^2 ( H_\alpha^r ) \). Nechť \( f' ( \alpha ) \neq 0 \). Nechť \( x_0 \in H_\alpha^r \). Potom metoda regula falsi konverguje.
\begin{proof}
Využijeme vztahu
\[ \varphi ( x ) = x - \frac{x - x_k'}{f ( x ) - f ( x_k' )} f ( x ) \]
Tedy
\[ \varphi' ( x ) = 1 - \left( \frac{x - x_k'}{f ( x ) - f ( x_k' )} \right)' f ( x ) - \frac{x - x_k'}{f ( x ) - f ( x_k' )} f' ( x ) \]
\[ \varphi' ( \alpha ) = 1 + \frac{\alpha - x_k'}{f ( x_k' )} f' ( \alpha ) = \frac{f ( x_k' ) + ( \alpha - x_k' ) f' ( \alpha )}{f ( x_k' )} \]
Nyní pomocí Taylorových rozvojů odhadneme nejprve rozvojem do druhého řádu
\[ f ( x_k' ) = f ( \alpha ) + f' ( \alpha ) \left( x_k' - \alpha \right) + \frac{f'' ( \xi )}{2} \left( x_k' - \alpha \right)^2 \]
Tedy
\[ f ( x_k' ) + \left( \alpha - x_k' \right) f' ( \alpha ) = \frac{f'' ( \xi )}{2} \left( x_k' - \alpha \right)^2 \]
A následně rozvojem do prvního řádu
\[ f ( x_k' ) = f' ( \eta ) \left( x_k' - \alpha \right) \]
Tedy ve výsledku
\[ \frac{f ( x_k' ) + ( \alpha - x_k' ) f' ( \alpha )}{f ( x_k' )} = \frac{f'' ( \xi )}{2 f' ( \eta )} \left( x_k' - \alpha \right) = K \left( x_k' - \alpha \right) \]
kde \( K \) je definováno poslední rovností. Správnou volbou \( x_k' \) můžeme tedy libovolně zmenšit \( \lvert \varphi' ( \alpha ) \rvert \). Tím jsou splněny předpoklady \ref{KIterativniMetodyKorenu}.
\end{proof}
\end{theorem}
\begin{remark*}
Pro platnost věty je zásadní, že se jedná o \( H_\alpha^r \), tj. určitá podmnožina, kde je \( f \in \mathcal C^2 ( H_\alpha ) \). Rozhodně to neplatí pro všechna $x \in \matice R$,
pokud je \( f \in \mathcal C^2 (\matice R)\).
\end{remark*}
\begin{remark*}
Věta lze dokázat i přímo, dokonce se slabším předpokladem \( f \in \mathcal C^1 ( H_\alpha^r ) \): 
\[ x_{k + 1} - \alpha = x_k - \alpha - \frac{x_k - x_k'}{f ( x_k ) - f ( x_k' )} f(x_k) = x_k - \alpha - \frac{x_k - x_k'}{f'(\xi) ( x_k - x_k' )}f(x_k)=  x_k - \alpha - \frac{f(x_k)}{f'(\xi)}=\]
V třetím rovnítku jsme použili Lagrangeovu větu.
\[= x_k - \alpha - \frac{f(x_k)+f(\alpha)}{f'(\xi)}=x_k - \alpha - \frac{(x_k- \alpha)f'(\eta)}{f'(\xi)}= \left( \frac{f'(\xi)-f'(\eta)}{f'(\xi)} \right) (x_k - \alpha)\]
Dodali jsme \(f(\alpha)\), které je nulové, a znovu použili Lagrangeovu větu. Z ní plyne, že \(\xi \in [x_k,x_k']\) a \(\eta \in [x_k,\alpha]\). Při dostatečně malém okolí je první závorka posledního výrazu menší než jedna a \(f'(\xi) \neq 0\). Dokázali jsme tedy, že posloupnost postupných aproximací konverguje.
\end{remark*}
 
\subsection{Newtonova metoda}
 
\setcounter{define}{12}
\begin{theorem}
\label{KNewton}
Nechť je \( \alpha \) kořenem funkce \( f \). Nechť dále existuje \( H_\alpha^r \) takové, že \( f \in \mathcal C^2 ( H_\alpha^r ) \). Nechť \( f' ( \alpha ) \neq 0 \). Nechť \( x_0 \in H_\alpha^r \). Potom Newtonova metoda konverguje.
\begin{proof}
Využijeme vztahu
\[ x_{k + 1} = x_k - \frac{f ( x_k )}{f' ( x_k )} \]
k úpravě
\[ x_{k + 1} - \alpha = x_k - \alpha - \frac{f ( x_k )}{f' ( x_k )} = x_k - \alpha - \frac{f ( x_k ) - f ( \alpha )}{f' ( x_k )} \]
Použijeme Lagrangeovu větu o přírůstku:
\[ x_k - \alpha - \frac{f ( x_k ) - f ( \alpha )}{f' ( x_k )} = x_k - \alpha - \frac{f' ( \xi ) ( x_k - \alpha )}{f' ( x_k )} = \frac{f' ( x_k ) - f' ( \xi )}{f' ( x_k )} \left( x_k - \alpha \right) \]
Znovu použijeme Lagrangeovu větu o přírůstku:
\[ \frac{f' ( x_k ) - f' ( \xi )}{f' ( x_k )} \left( x_k - \alpha \right) = \frac{f'' ( \xi' )}{f' ( x_k )} \left( x_k - \xi \right) \left( x_k - \alpha \right) = K \left( x_k - \xi \right) \left( x_k - \alpha \right) \]
kde \( K \) je definováno poslední rovností a díky spojitosti \( f' \) platí \( K < 1 \). Tím jsou splněny předpoklady \ref{KIterativniMetodyKorenu}.
\end{proof}
\end{theorem}
\begin{remark*}
Obdobně jako u metody regula falsi lze dokázat přímo i se slabším předpokladem \( f \in \mathcal C^1 ( H_\alpha^r ) \). Pak je ale metodou prvního řádu (viz \ref{NewtonRad}).
\end{remark*}
 
\setcounter{define}{14}
\begin{theorem}
\label{NewtonRad}
Nechť je \( \alpha \) kořenem funkce \( f \). Nechť dále existuje \( H_\alpha^r \) takové, že \( f \in \mathcal C^2 ( H_\alpha^r ) \). Nechť \( f' ( \alpha ) \neq 0 \). Nechť \( x_0 \in H_\alpha^r \). Potom Newtonova metoda je metodou druhého řádu přesnosti. Pokud je  \( f \in \mathcal C^1 ( H_\alpha^r ) \), potom Newtonova metoda je metodou prvního řádu přesnosti.
\begin{proof}
\begin{enumerate}
\item (\textit{druhý řád}) Viz důkaz \ref{KNewton}. 
\item (\textit{první řád}) Zde můžeme použít Lagrangeovu větu pouze jednou. Pokud je však \(\xi \) dostatečně blízko \(x_k\) (což zajišťujeme volbou okolí), pak je \(K=\frac{f' ( x_k ) - f' ( \xi )}{f' ( x_k )}<1\), Newtonova metoda konverguje podle \ref{KIterativniMetodyKorenu} a je metodou prvního řádu.
\end{enumerate}
\begin{remark*}
Pokud neexistuje druhá derivace funkce \( f \), konverguje (dle Oberhubera) Newtonova metoda pomaleji.
\end{remark*}
\end{proof}
\end{theorem}
\begin{remark*}
Newtonova metoda obvykle konverguje rychleji než regula falsi, potřebuje ale většinou přesnější odhad, tj. menší okolí \( H_\alpha^r \).
\end{remark*}
\begin{remark*}
Pro zlepšení konvergence se používá modifikace Newtonovy metody (metody regula falsi) nazývaná \textbf{line search algoritmus}: Pokud se iterací zvětší hodnota \(\lvert f(x_{k+1}) \rvert\), tj. zhorší se odhad, provedli příliš velký skok. V takovém případě zmenšíme skok na polovinu a opakujeme. Toto zlepšení konvergence však vede ke zpomalení metody.
\end{remark*}
 
\subsection{Metody pro řešení soustav nelineárních rovnic}
 
\setcounter{define}{23}
\begin{theorem}[Lagrangeova věta o přírůstku funkce více proměnných]
\label{VoPF}
Nechť \( G \) je konvexní oblast. Nechť funkce \( f \in \mathcal C^1 ( G ) \). Potom pro každé \( \vec u, \vec v \in G \) existuje \( \vec \xi \in \left( \vec u, \vec v \right) \) (úsečka mezi \( \vec u \) a \( \vec v) \) takový, že
\[ f ( \vec u ) - f ( \vec v ) = \nabla f ( \vec \xi ) ( \vec u - \vec v ) \]
\begin{proof}
Definujeme funkci
\[ \varphi ( t ) = f ( \vec u + t ( \vec v - \vec u ) ), \; \forall t \in \left< 0, 1 \right> \]
Potom
\[ \varphi' ( t ) = \nabla f ( \vec u + t ( \vec v - \vec u ) ) ( \vec v - \vec u ) \]
Protože \( \varphi \) je funkce jedné proměnné, můžeme použít klasickou Lagrangeovu větu o přírůstku:
\[ \varphi ( 1 ) - \varphi ( 0 ) = \varphi' ( \eta ) \]
Označíme \( \vec \xi = \vec u + \eta ( \vec v - \vec u ) \) a budeme tedy upravovat
\[ f ( \vec u ) - f ( \vec v ) = - ( \varphi ( 1 ) - \varphi ( 0 ) ) = - \varphi' ( \eta ) = - \nabla f ( \vec u + \eta ( \vec v - \vec u ) ) ( \vec v - \vec u ) = \nabla f ( \vec \xi ) ( \vec u - \vec v ) \]
\end{proof}
\end{theorem}
 
\begin{theorem}
\label{KNewtonLinearne}
Nechť platí:
\begin{itemize}
\item Existuje konvexní oblast \( G \), obsahující řešení \( \vec a \) systému rovnic \( \vec f ( \vec x ) = \vec 0 \)
\item \( \matice J_{\vec f} ( \vec a ) \) je regulární
\item složky \( \vec f \) jsou funkce spojité na \( G \), jejich první parciální derivace také (tj. \(f \in \mathcal C^1(G)\))
\end{itemize}
Potom existuje \( H_{\vec a}^\delta \) takové, že pro každé \( \vec x^{( 0 )} \in H_{\vec a}^\delta \) posloupnost generovaná Newtonovou metodou konverguje k \( \vec a \).
\begin{proof}
Nejprve díky \ref{VoPF} ukážeme pomocné tvrzení
\[ \vec f ( \vec x^{( k )} ) - \vec f ( \vec a ) =
\begin{pmatrix}
f_1 ( \vec x^{( k )} ) - f_1 ( \vec a ) \\
\vdots \\
f_n ( \vec x^{( k )} ) - f_n ( \vec a ) \\
\end{pmatrix} =
\begin{pmatrix}
\nabla f_1 ( \vec \xi_1 ) \\
\vdots \\
\nabla f_n ( \vec \xi_n ) \\
\end{pmatrix}
\left( \vec x^{( k )} - \vec a \right) = \matice J_{\vec f} ( \vec \xi ) \left( \vec x^{( k )} - \vec a \right) \]
kde \( \matice J_{\vec f} ( \vec \xi ) \) je definovaná poslední rovností. Dále využijeme vztahu
\[ \vec x^{( k + 1 )} = \vec x^{( k )} - \matice J_{\vec f}^{-1} ( \vec x^{( k )} ) \vec f ( \vec x^{( k )} ) \]
Potom můžeme odhadovat
\[ \left\lVert \vec x^{( k + 1 )} - \vec a \right\rVert = \left\lVert \vec x^{( k )} - \vec a - \matice J_{\vec f}^{-1} ( \vec x^{( k )} ) \vec f ( \vec x^{( k )} ) \right\rVert = \left\lVert \vec x^{( k )} - \vec a - \matice J_{\vec f}^{-1} ( \vec x^{( k )} ) \left( \vec f ( \vec x^{( k )} ) - \vec f ( \vec a ) \right) \right\rVert = \]
\[ = \left\lVert \vec x^{( k )} - \vec a - \matice J_{\vec f}^{-1} ( \vec x^{( k )} ) \matice J_{\vec f} ( \vec \xi ) \left( \vec x^{( k )} - \vec a \right) \right\rVert = \left\lVert \left( \matice I - \matice J_{\vec f}^{-1} ( \vec x^{( k )} ) \matice J_{\vec f} ( \vec \xi ) \right) \left( \vec x^{( k )} - \vec a \right) \right\rVert \leq \]
\[ \leq \left\lVert \matice I - \matice J_{\vec f}^{-1} ( \vec x^{( k )} ) \matice J_{\vec f} ( \vec \xi ) \right\rVert \left\lVert \vec x^{( k )} - \vec a \right\rVert = K \left\lVert \vec x^{( k )} - \vec a \right\rVert \]
kde \( K \) je definováno poslední rovností. Budeme chtít ukázat \( K < 1 \), tedy
\[ \matice I - \matice J_{\vec f}^{-1} ( \vec x^{( k )} ) \matice J_{\vec f} ( \vec \xi ) = \matice J_{\vec f}^{-1} ( \vec a ) \matice J_{\vec f} ( \vec a ) - \matice J_{\vec f}^{-1} ( \vec x^{( k )} ) \matice J_{\vec f} ( \vec \xi ) + \matice J_{\vec f}^{-1} ( \vec a ) \matice J_{\vec f} ( \vec \xi ) - \matice J_{\vec f}^{-1} ( \vec a ) \matice J_{\vec f} ( \vec \xi ) = \]
\[ = \matice J_{\vec f}^{-1} (\vec a) \left( \matice J_{\vec f} ( \vec a ) - \matice J_{\vec f} ( \vec \xi ) \right) + \left( \matice J_{\vec f}^{-1} ( \vec a ) - \matice J_{\vec f}^{-1} ( \vec x^{( k )} ) \right) \matice J_{\vec f} ( \vec \xi ) < 1 \]
Kde poslední rovnost plyne z faktu, že \( \matice J_{\vec f} ( \vec a ) - \matice J_{\vec f} ( \vec \xi ) \) můžeme udělat libovolně malou a \( \matice J_{\vec f} ( \vec \xi ) \) je omezená.
\end{proof}
\end{theorem}
 
\begin{theorem}
\label{KNewtonQuadraticky}
Nechť platí:
\begin{itemize}
\item Existuje konvexní oblast \( G \), obsahující řešení \( \vec a \) systému rovnic \( \vec f ( \vec x ) = \vec 0 \)
\item \( \matice J_{\vec f} ( \vec a ) \) je regulární
\item složky \( \vec f \) jsou funkce spojité na \( G \), jejich první a druhé parciální derivace také (tj. \(f \in \mathcal C^2(G)\))
\end{itemize}
Potom existuje \( H_{\vec a}^\delta \) takové, že pro každé \( \vec x^{( 0 )} \in H_{\vec a}^\delta \) posloupnost generovaná Newtonovou metodou konverguje k \( \vec a \) kvadraticky, tj. s přesností druhého řádu.
\begin{proof}
Není vyžadován. Spočívá v aplikaci věty o přírůstku funkce na rozdíly Jacobiho matic z konce \ref{KNewtonLinearne} tak, aby se z nich dostalo \((\vec x^{( k )} - \vec a)\). \todo{Důkaz 7.26}
\end{proof}
\end{theorem}