Blame
|
1 | # Numerické metody v R |
||||||
| 2 | ||||||||
| 3 | <div style="visibility:hidden;height:0;overflow:hidden;margin:0;padding:0"> |
|||||||
| 4 | ||||||||
| 5 | ```math |
|||||||
| 6 | \newcommand{\LetThereBe}[2]{\newcommand{#1}{#2}} \newcommand{\letThereBe}[3]{\newcommand{#1}[#2]{#3}} |
|||||||
| 7 | \letThereBe{\addTag}{2}{\cssId{#1-#2}{\tag{#2}}} \letThereBe{\addLabel}{2}{\cssId{#1-#2}{\text{#2}}} \letThereBe{\refTag}{2}{\href{###1-#2}{(\text{#2})}} |
|||||||
| 8 | \letThereBe{\eqT}{1}{\addTag{eq}{#1}}\letThereBe{\secT}{1}{\addLabel{sec}{#1}} |
|||||||
| 9 | \letThereBe{\eqRef}{1}{\refTag{eq}{#1}} \letThereBe{\secRef}{1}{\refTag{sec}{#1}} |
|||||||
| 10 | \LetThereBe{\R}{\mathbb{R}} \LetThereBe{\N}{\mathbb{N}} |
|||||||
| 11 | \letThereBe{\rcases}{1}{\left.\begin{align}#1\end{align}\right\}} |
|||||||
| 12 | \letThereBe{\rcasesAt}{2}{\left.\begin{alignat}{#1}#2\end{alignat}\right\}} |
|||||||
| 13 | \letThereBe{\lcases}{1}{\begin{cases}#1\end{cases}} |
|||||||
| 14 | \letThereBe{\lcasesAt}{2}{\left\{\begin{alignat}{#1}#2\end{alignat}\right.} |
|||||||
| 15 | \letThereBe{\scal}{2}{\langle #1, #2 \rangle} \letThereBe{\norm}{1}{\left\lVert #1 \right\rVert} \LetThereBe{\dist}{\rho} |
|||||||
| 16 | \LetThereBe{\and}{\&}\letThereBe{\brackets}{1}{\left\{ #1 \right\}} |
|||||||
| 17 | \letThereBe{\parc}{2}{\frac {\partial #1}{\partial #2}} |
|||||||
| 18 | \letThereBe{\mtr}{1}{\begin{pmatrix}#1\end{pmatrix}} |
|||||||
| 19 | \letThereBe{\bm}{1}{\boldsymbol{#1}} \letThereBe{\mcal}{1}{\mathcal{#1}} |
|||||||
| 20 | \letThereBe{\vv}{1}{\mathbf{#1}}\letThereBe{\vvp}{1}{\pmb{#1}} |
|||||||
| 21 | \LetThereBe{\ve}{\varepsilon} \LetThereBe{\l}{\lambda} \LetThereBe{\th}{\vartheta} \LetThereBe{\a}{\alpha} |
|||||||
| 22 | \letThereBe{\conv}{1}{\mathrm{conv}\, #1} \letThereBe{\cone}{1}{\mathrm{cone}\, #1} |
|||||||
| 23 | \letThereBe{\aff}{1}{\mathrm{aff}\, #1} \letThereBe{\lin}{1}{\mathrm{Lin}\, #1} \letThereBe{\span}{1}{\mathrm{span}\, #1} |
|||||||
| 24 | \LetThereBe{\O}{\mathcal O} |
|||||||
| 25 | \letThereBe{\ri}{1}{\mathrm{ri}\, #1} \letThereBe{\rd}{1}{\mathrm{r}\partial\, #1} \letThereBe{\interior}{1}{\mathrm{int}\, #1} |
|||||||
| 26 | \LetThereBe{\proj}{\Pi} \letThereBe{\epi}{1}{\mathrm{epi}\, #1} |
|||||||
| 27 | \letThereBe{\grad}{1}{\mathrm{grad}\, #1} \letThereBe{\hess}{1}{\nabla^2\, #1} |
|||||||
| 28 | \letThereBe{\subdif}{1}{\partial #1} \letThereBe{\co}{1}{\mathrm{co}\, #1} |
|||||||
| 29 | \letThereBe{\iter}{1}{^{[#1]}} |
|||||||
| 30 | \letThereBe{\set}{1}{\left\{ #1 \right\}} |
|||||||
| 31 | ``` |
|||||||
| 32 | ||||||||
| 33 | </div> |
|||||||
| 34 | ||||||||
| 35 | ### Rychlost konvergence |
|||||||
| 36 | ||||||||
| 37 | ##### **Definice** $\secT{3.1}$ |
|||||||
| 38 | Nechť jsou dány 2 posloupnosti $\brackets{e_ k}_ {k = 0}^\infty$ a $\brackets{h_ k}_ {k = 0}^\infty$ takové, že |
|||||||
| 39 | ||||||||
|
40 | ```math |
||||||
| 41 | e_k \in [0, \infty), \quad e_k \to 0 \quad \and \quad h_k \in [0, \infty), \quad h_k \to 0. |
|||||||
| 42 | ``` |
|||||||
|
43 | |||||||
| 44 | Řekneme, že posloupnost $\brackets{e_k}$ konverguje **rychleji** (*pomaleji*) než $\brackets{h_k}$, pokud existuje index $\tilde k \in \N_0$ takový, že |
|||||||
| 45 | ||||||||
|
46 | ```math |
||||||
| 47 | e_k \leq_{(\geq)} h_k \quad \forall k \in [0, \infty) \cap \N_0 |
|||||||
| 48 | ``` |
|||||||
|
49 | |||||||
| 50 | ##### **Definice** $\secT{3.2}$ (Rychlost konvergence) |
|||||||
| 51 | Nechť je dána posloupnost $\brackets{e_ k}_ {k = 0}^\infty$ splňující $e_k \in [0, \infty)$ a $e_k \to 0$. Řekneme, že posloupnost $\brackets{e_k}$ konverguje |
|||||||
| 52 | - **alespoň lineárně s rychlostí** $\beta \in (0,1)$, pokud konverguje **rychleji** než **geometrická** posloupnost se členy tvaru $q \bar \beta^k$, kde $q > 0$ a $\bar \beta \in (\beta, 1)$. |
|||||||
| 53 | - čím **větší** $\bar \beta$, tím **pomaleji** jde tato geometrická posloupnost k nule - tj. konverguje rychleji než geometrická posloupnost s $\bar \beta$ větší než $\beta$ |
|||||||
| 54 | - **nejvýše lineárně s rychlostí** $\beta \in (0,1)$, pokud konverguje **pomaleji** než **geometrická** posloupnost se členy tvaru $q \bar \beta^k$, kde $q > 0$ a $\bar \beta \in (0, \beta)$. |
|||||||
| 55 | - **lineárně s rychlostí** $\beta \in (0,1)$, pokud konverguje **nejvýše** a současně **alespoň** lineárně s rychlostí $\beta$. |
|||||||
| 56 | - **superlineárně (*sublineárně*)**, pokud konverguje **rycheji** (*pomaleji*) než libovolná geometrická posloupnost se členy tvaru $q \beta^k$, kde $q > 0$ a $\beta \in (0,1)$. |
|||||||
| 57 | ||||||||
| 58 | ##### **Definice** $\secT{3.4}$ |
|||||||
| 59 | Nechť je dána posloupnost $\brackets{e_ k}_ {k = 0}^\infty$ splňující $e_k \in [0, \infty)$ a $e_k \to 0$, přičemž $\brackets{e_k}$ konverguje **superlineárně**. Řekneme, že posloupnost $\brackets{e_k}$ konverguje |
|||||||
| 60 | - **alespoň superlineárně s řádem** $p > 1$, pokud konverguje **rychleji** než všechny posloupnosti se členy tvaru $q \beta^{\bar p^k}$, kde $q > 0$ a $\beta \in (0,1)$ a $\bar p \in (1, p)$ |
|||||||
| 61 | - čím **větší** $\bar p$, tím **rychleji** posloupnost $q \beta^{\bar p^k}$ konverguje - tj. $\brackets{e_k}$ konverguje rychleji než všechny posloupnosti s **menším** $p$ |
|||||||
| 62 | - **nejvýše superlineárně s řádem** $p > 1$, pokud konverguje **pomaleji** než všechny posloupnosti se členy tvaru $q \beta^{\bar p^k}$, kde $q > 0$ a $\beta \in (0,1)$ a $\bar p \in (p, \infty)$ |
|||||||
| 63 | - **superlineárně s řádem** $p > 1$, pokud konverguje **nejvýše** a současně **alespoň** superlineárně s *řádem* $p$. |
|||||||
| 64 | - **superlineárně s řádem** $p = 1$, pokud konverguje **pomaleji** než všechny posloupnosti se členy tvaru $q \beta^{\bar p^k}$, kde $q > 0$ a $\beta \in (0,1)$ a $\bar p \in (1, \infty)$ |
|||||||
| 65 | ||||||||
| 66 | ## Metody |
|||||||
| 67 | ||||||||
| 68 | ##### **Definice** $\secT{3.1.1}$ (Unimodální funkce) |
|||||||
| 69 | Nechť je dán interval $I \subset \R$ a funkce $f: I \to \R$. Řekneme, že $f$ je ***unimodální*** na $I$, jestliže existuje $x^*\in I$ takové, že |
|||||||
| 70 | - $f(x_1) > f(x_2)$ pro libovolná $x_1, x_2 \in I$ splňující $x^*> x_1 > x_2$ |
|||||||
| 71 | - $f(x_1) < f(x_2)$ pro libovolná $x_1, x_2 \in I$ splňující $x^*< x_1 < x_2$ |
|||||||
| 72 | ||||||||
| 73 | --- |
|||||||
| 74 | ||||||||
| 75 | Jinými slovy, **unimodální** funkce je **klesající** na $(-\infty, x^*) \cap I$ (tj. *nalevo* od $x^*$) a **rostoucí** na $I \cap (x^*, \infty)$ (tj. *napravo* od $x^*$). |
|||||||
| 76 | ||||||||
| 77 | > Unimodalita **neimplikuje** konvexnost (*ani se spojitostí*), pouze **kvazikonvexnost** |
|||||||
| 78 | > |
|||||||
| 79 | > Naopak, *konvexní* funkce **nemusí** nutně být *unimodální* (ale **ostrá konvexnost** $\implies$ **unimodalita**) |
|||||||
| 80 | ||||||||
|
81 | > > Konvexní funkce nemusí být např. jen rostoucí, ale i **neklesající** |
||||||
|
82 | V této části budeme řešit úlohu |
||||||
| 83 | ||||||||
|
84 | ```math |
||||||
| 85 | f(x) \to \min, \qquad x \in I := [a,b] \eqT{3.1.1} |
|||||||
| 86 | ``` |
|||||||
|
87 | |||||||
| 88 | ##### **Lemma** $\secT{3.1.2}$ |
|||||||
| 89 | Nechť $f: I \to \R$ je **unimodální** na $I$ a $x_1, x_2 \in I$ jsou takové, že $x_1 < x_2$. |
|||||||
| 90 | - Je-li $f(x_1) \leq f(x_2)$, pak $x^*\leq x_2$ |
|||||||
| 91 | - Je-li $f(x_1) \geq f(x_2)$, pak $x^*\geq x_1$ |
|||||||
| 92 | ||||||||
| 93 | --- |
|||||||
| 94 | ||||||||
| 95 | ***Upozornění:*** \ |
|||||||
| 96 | Dále uvažujme <a style="color: red">***POUZE UNIMODÁLNÍ***</a> funkce. |
|||||||
| 97 | Navíc nechť $N$ značí **povolený počet vyčíslení** a **přesnost** těchto metod je dáno jako $|\bar x - x^*|$, kde $x^*$ je **přesné** řešení úlohy $\eqRef{3.1.1}$ a $\bar x$ jeho nalezená aproximace. |
|||||||
| 98 | ||||||||
| 99 | ### Metoda prostého dělení |
|||||||
| 100 | ||||||||
| 101 | > Tato metoda **není** efektivní a je to *de facto* hrubá síla |
|||||||
| 102 | ||||||||
| 103 | Podle parity $N$ určíme dělící body intervalu $I$. |
|||||||
| 104 | ||||||||
|
105 | |$N$ **liché**|$N$ **sudé**| |
||||||
| 106 | |-------------|------------| |
|||||||
| 107 | |$x_i := a + {b - a \over N + 1} i, \quad i=1, \dots, N = 2k - 1$ | $x_{2i} := a + {b - a \over k + 1} i \quad \and \quad x_{2i - 1} := x_{2i} - \delta, \quad i = 1, \dots, k := N/2,$ | |
|||||||
| 108 | ||||||||
|
109 | kde $\delta$ je *vhodné malé číslo.* |
||||||
| 110 | Poté vyčíslíme $f(x_1), \dots, f(x_N)$ (což v případě $N$ **sudého** a $\delta \in \set{0, {b-a \over k+ 1}}$ znamená **pouze** $k$ vyčíslení) a nechť v $x_j$ nastává nejmenší hodnota, tj. |
|||||||
| 111 | ||||||||
|
112 | ```math |
||||||
| 113 | f(x_j) = \min_{1 \leq i \leq N} f(x_i) |
|||||||
| 114 | ``` |
|||||||
|
115 | |||||||
| 116 | Pak z **Lemma** $\secRef{3.1.2}$ plyne, že $x^*\in [x_{j-1}, x_{j+1}]$ a tento interval nazveme **interval lokalizace minima (ILM)** a za aproximaci $x^*$ vezmeme *střed* ILM, tj. $\bar x := {x_{j-1} + x_{j+1} \over 2}$ |
|||||||
| 117 | Pro **délku** $l_N$ *intervalu lokalizace minima* platí |
|||||||
| 118 | ||||||||
|
119 | ```math |
||||||
| 120 | l_N := \max_{1 \leq i \leq N} (x_{i+1} - x_{i-1}) = \lcases{2 {b - a \over N+1}, & N = 2k - 1 \\ {b - a \over (N/2) + 1} + \delta, & N = 2k} |
|||||||
| 121 | ``` |
|||||||
|
122 | |||||||
| 123 | > Pro $N$ **sudé** je **poslední** interval delší, proto dostáváme takový tvar $l_N$ |
|||||||
| 124 | ||||||||
| 125 | > Přesnost této metody je dána **polovinou ILM**, tj. ${l_N \over 2}$ |
|||||||
| 126 | Rychlost konvergence této metody je **sublineární**, navíc je tento algoritmus **pasivní**, tj. volba $x_{m+1}$ **nezáleží** na $x_1, \dots, x_m$ (závisí pouze na $N$, či na $N$ a $\delta$). |
|||||||
| 127 | ||||||||
| 128 | > Při rovnosti funkčních hodnot **preferujeme konec** (*teoreticky by to mělo být jedno*) |
|||||||
| 129 | ||||||||
| 130 | ### Metoda půlení intervalu <a name="mpi"></a> |
|||||||
| 131 | Nechť nyní $N = 2k$. Položme $a_0 = a$, $b_0 = b$ a |
|||||||
| 132 | ||||||||
|
133 | ```math |
||||||
| 134 | x_i^- := {a_{i-1} + b_{i-1} \over 2} - \delta \quad \and \quad x_i^+ := {a_{i-1}+b_{i-1} \over 2} + \delta, |
|||||||
| 135 | ``` |
|||||||
|
136 | |||||||
| 137 | kde $\delta > 0$ je *dostatečně malé* a $i = 1, \dots, k$. Vyčíslíme funkci v $x_i^-, x_i^+$, tj. dostaneme $f(x_i^-), f(x_i^+)$. Pak |
|||||||
| 138 | - jestliže $f(x_i^-) < f(x_i^+)$, pak podle **Lemma** $\secRef{3.1.2}$ je **ILM** $[a_{i-1}, x_i^+] \implies a_i = a_{i-1}, b_i = x_i^+$ |
|||||||
| 139 | - jestliže $f(x_i^-) > f(x_i^+)$, pak podle **Lemma** $\secRef{3.1.2}$ je **ILM** $[x_i^-, b_{i-1}] \implies a_i = x_i^-, b_i = b_{i-1}$ |
|||||||
| 140 | Takto můžeme tento proces opakovat ($k$-krát, jelikož máme $N = 2k$ povolených vyčíslení), kdy za $a,b$ volíme krajní body *ILM* pro každý krok. Zřejmě, jako aproximaci $x^*$ v $k$-tém kroku bereme *střed ILM* pro $k$-tý krok. |
|||||||
| 141 | Délka *ILM* je v tomto případě |
|||||||
| 142 | ||||||||
|
143 | ```math |
||||||
| 144 | l_k = {b - a\over 2^k} + {(2^k - 1)\delta \over 2^{k-1}}, |
|||||||
| 145 | ``` |
|||||||
|
146 | |||||||
| 147 | přičemž $\delta \in [0, {b-a\over 2}]$ a navíc pro $k \to \infty$ je $l_k \to 2\delta$. |
|||||||
| 148 | ||||||||
| 149 | > Z tohoto vyplývá, že čím menší $\delta$, tím je metoda přesnější. Nicméně ve skutečnosti se můžeme dostat k zaokrouhlovacím chybám, které dokonce mohou způsobit, že špatně určíme velikosti $f(x_i^-), f(x_i^+)$ (tím pádem bychom řekli, že $x^*$ je v opačném intervalu, než je ve skutečnosti) |
|||||||
| 150 | Tato metoda konverguje **lineárně** s rychlostí $1/2$. |
|||||||
| 151 | ||||||||
| 152 | > Při rovnosti funkčních hodnot **zapomínáme konec** (*teoreticky by to mělo být jedno*) |
|||||||
| 153 | ||||||||
| 154 | ### Metoda zlatého řezu<a name="mzr"></a> |
|||||||
| 155 | Myšlenka metody zlatého řezu "*vylepšuje*" metodu půlení intervalu tak, že každá další iterace umožňuje pouze **jedno** další vyčíslení. |
|||||||
| 156 | ||||||||
| 157 | > Zde $\tau$ je řešení rovnice $\tau^2 - \tau - 1 = 0$, tj. a $\frac 1 \tau \approx 0.618$ |
|||||||
| 158 | Mějme funkci $f$, interval $[a,b]$, přesnost $\ve$ nebo počet vyčíslení $N \geq 2$: |
|||||||
| 159 | 1. (*Inicializace*) Položíme $a_0 := a, b_0 := b$ a $k := 1$. Vypočteme |
|||||||
| 160 | ```math |
|||||||
| 161 | \l_1 := a_0 + {b_0 - a_0 \over \tau^2} \quad \and \quad \mu_1 := a_0 + {b_0 - a_0 \over \tau} |
|||||||
| 162 | ``` |
|||||||
| 163 | ||||||||
| 164 | 2. Je-li $k = N$, pokračujeme částí 5., jinak následuje krok 3. |
|||||||
| 165 | 3. Vyčíslíme $f(\l_k)$ a $f(\mu_k)$. Jestliže $f(\l_k) \geq f(\mu_k)$: |
|||||||
| 166 | 1. Položíme $a_k := \l_k, b_k = b_{k-1}, \l_{k+1} := \mu_k$ a |
|||||||
| 167 | ```math |
|||||||
| 168 | f(\l_{k+1}) := f(\mu_k), \quad \mu_{k+1} := a_k + {b_k - a_k \over \tau} |
|||||||
| 169 | ``` |
|||||||
| 170 | a pokračujeme na krok 4. |
|||||||
| 171 | 2. Položíme $a_k := a_{k-1}, b_k := \mu_k, \mu_{k+1} := \l_k$ a |
|||||||
| 172 | ```math |
|||||||
| 173 | f(\mu_{k+1}) := f(\l_k), \quad \l_{k+1} := a_k + {b_k - a_k \over \tau^2} |
|||||||
| 174 | ``` |
|||||||
| 175 | a pokračujeme na krok 4. |
|||||||
| 176 | 4. Položíme $k := k+1$ a pokračujeme krokem 2. |
|||||||
| 177 | 5. Stanovíme poslední *ILM* jako $[a_{k-1}, b_{k-1}]$ a vypočteme $\bar x := {a_{k-1} + b_{k-1} \over 2}$. **KONEC** |
|||||||
| 178 | Tato metoda konverguje **lineárně** s rychlostí $\frac 1 \tau \approx 0.618$ |
|||||||
| 179 | ||||||||
| 180 | > Toto **neznamená**, že by **na stejný počet vyčíslení** byla tato metoda horší než [metoda půlení intervalu](#mpi) |
|||||||
| 181 | ||||||||
|
182 |  |
||||||
|
183 | |||||||
| 184 | ### Fibonacciho metoda |
|||||||
| 185 | V této poslední metodě uvažujme, že zkrácení $\delta$ může být **jiné** v každé kroku metody. |
|||||||
| 186 | ||||||||
| 187 | > Nechť $F_n$ je $n$-té Fibonacciho číslo |
|||||||
| 188 | Máme povoleno $N$ vyčíslení, takže $M = N - 1$ a |
|||||||
| 189 | ||||||||
|
190 | ```math |
||||||
| 191 | \l_i = a_{i - 1} + {F_{N - i -1} \over F_{N - i + 1}} l_{i-1} = b_{i-1} - {F_{N - 1} \over F_{N - 1 + i}} l_{i-1} |
|||||||
| 192 | ``` |
|||||||
|
193 | |||||||
|
194 | ```math |
||||||
| 195 | \mu_i = a_{i-1} + {F_{N - 1} \over F_{N - 1 + i}} l_{i-1} = b_{i-1} - {F_{N - i -1} \over F_{N - i + 1}} l_{i-1} |
|||||||
| 196 | ``` |
|||||||
|
197 | |||||||
|
198 |  |
||||||
| 199 | ||||||||
|
200 | Tato metoda konverguje **lineárně** s rychlostí $\frac 1 \tau \approx 0.618$, tj. *stejně* jako [metoda zlatého řezu](#mzr) |
||||||
| 201 | ||||||||
| 202 | > Fibonacciho metoda je (*mírně*) přesnější, než *metoda zlatého řezu* (která lze vnímat jako *limitní varianta* Fibonacciho metody). Nicméně u Fibonacciho metody je při změně $N$ potřeba **všechny body přepočítat**, což u metody zlatého řezu **není**. |
|||||||
