====== Použití lineární algebry v optimalizaci. Iterační algoritmy na volné lokální extrémy. Lineární programování. Konvexní množiny a funkce, konvexní úlohy. Dualita. ======
[[https://fel.cvut.cz/cz/education/bk/predmety/46/74/p4674306.html|B0B33OPT]] [[https://cw.fel.cvut.cz/wiki/courses/B0B33OPT|Webové stránky předmětu]]
* **Přibližné řešení lineární soustavy** – ve smyslu nejmenších čtverců, normální rovnice. Ortogonální projekce na podprostor a její matice (ortogonální projektor), vzdálenost bodu od podprostoru. Řešení nedourčené lineární soustavy s nejmenší normou. Pseudoinverze.
* **Vlastní čísla a vektory** – reálné symetrické matice, její spektrální rozklad. Kvadratické formy na Rⁿ: definitnost, diagonalizace spektrálním rozkladem, minima a maxima. Kvadratické funkce na Rⁿ: doplnění na čtverec, minima a maxima.
* **Optimální proložení bodů podprostorem (PCA)** – nejbližší matice nižší hodnosti (low-rank approximation), singulární rozklad matice (SVD).
* **Globální a lokální extrémy funkce na podmnožině Rⁿ** – definice, příklady, volné a vázané extrémy.
* **Volné lokální extrémy diferencovatelných funkcí** – podmínky prvního a druhého řádu, numerické iterační metody (gradientní a Newtonova, Gauss-Newtonova a Levenberg-Marquardtova).
* **Lokální extrémy diferencovatelných funkcí vázané rovnostmi** – podmínka prvního řádu, pojem Lagrangeovy funkce a Lagrangeových multiplikátorů.
* **Úloha lineárního programování (LP)** – různé tvary úloh LP a jejich převody, typická použití LP, přibližné řešení přeurčených soustav v 1-normě a max-normě.
* **Geometrie LP** – konvexní množiny a mnohostěny, extremální body konvexního mnohostěnu.
* **Dualita v LP** – věta o slabé dualitě, o komplementaritě, věta o silné dualitě.
* **Konvexní funkce** – definice, podmínka prvního a druhého řádu, epigraf a subkontura. Úloha konvexní optimalizace.
===== 1. Přibližné řešení lineární soustavy =====
Řešení lineární soustavy rovnic pomocí **metody nejmenších čtverců**, například při **měření s chybami** nebo pokud je soustava **pře- nebo nedourčená** (má více rovnic než neznámých nebo naopak). Pomocí projekce na podprostor a pseudoinverze hledáme řešení, které buď nejlépe odpovídá pozorovaným datům, nebo má nejmenší možnou normu.
==== Nejmenší čtverce a normální rovnice ====
Metoda nejmenších čtverců slouží k přibližnému řešení soustavy rovnic \( A x \approx b \), která nemá přesné řešení – typicky když je počet rovnic větší než počet neznámých (tzv. přeurčená soustava). Hledáme vektor \( x \), který co nejlépe „vysvětlí“ data \( b \) v rámci daného lineárního modelu.
Cílem je **minimalizovat součet čtverců rozdílů** (reziduí) mezi skutečnými a modelovanými hodnotami:
%%\min_{x}\|A x - b\|_2^2%%
❓
Tato úloha je speciálním případem obecného problému minimalizace funkce:
%%f(x) := \|g(x)\|^2 = \sum_{i=1}^{m} g_i(x)^2%%
kde \( g(x) = A x - b \) je lineární (viz obrázek).
Z první podmínky optimálního bodu (nulový gradient) odvodíme tzv. **normální rovnice**:
%%A^T A x = A^T b%%
❓
Pokud má \( A \) **lineárně nezávislé sloupce** (tzv. full column rank), je matice \( A^T A \) regulární (invertovatelná) a řešení je jednoznačné:
%%x = (A^T A)^{-1} A^T b%%
❓
Tuto metodu lze chápat jako **projekci** vektoru \( b \) na podprostor generovaný sloupci \( A \). Pokud \( b \) neleží v tomto podprostoru, hledáme nejbližší bod z tohoto podprostoru.
==== Ortogonální projekce a ortogonální projektor ====
Řešení úlohy nejmenších čtverců odpovídá **kolmé projekci** vektoru \( b \) do podprostoru \( \mathrm{rng}(A) \). Výsledkem projekce je vektor \( Ax \), který je co nejblíž vektoru \( b \) a zároveň leží v obrazu \( A \).
Projektor, který provádí tuto projekci, má tvar:
%%P = A (A^T A)^{-1} A^T%%
❓
Vlastnosti projektoru:
* **Symetrický**: \( P = P^T \)
* **Idempotentní**: \( P^2 = P \)
Pro vektor \( z \) platí, že jeho projekce do podprostoru je \( P z \). Ortogonální doplněk (kolmý zbytek) je \( (I - P) z \), tedy kolik z vektoru „přebývá mimo“ podprostor.
==== Vzdálenost bodu od podprostoru ====
Vzdálenost bodu \( b \) od podprostoru \( \mathrm{rng}(A) \) měříme jako normu vektoru chyby (reziduum):
%%\mathrm{dist}(b, \mathrm{rng}(A)) = \|b - P b\|_2%%
❓
To je přesně to, co minimalizujeme v úloze nejmenších čtverců – hledáme vektor \( Ax \), který je co nejblíže \( b \), a zároveň patří do obrazu \( A \).
==== Řešení nedourčené soustavy s nejmenší normou ====
Pokud je počet neznámých větší než počet rovnic, je systém **nedourčený** a má nekonečně mnoho řešení. Hledáme tedy takové řešení, které má **nejmenší normu**:
%%\min_{x} \|x\|_2 \quad \text{při podmínce} \quad A x = b%%
Toto řešení lze získat pomocí tzv. **pravé pseudoinverze**:
%%A^+ = A^T (A A^T)^{-1}%%
❓
%%x = A^+ b%%
❓
Tato formulace platí, pokud má matice \( A \) **plný řádkový hodnost** (řádky jsou lineárně nezávislé).
==== Pseudoinverze ====
Pro libovolnou matici \( A \) existuje jedinečně definovaná **Moore–Penroseova pseudoinverze** \( A^+ \). Ta vrací buď:
* **nejbližší možný obraz** v případě přeurčené soustavy
* **řešení s nejmenší normou** v případě nedourčené soustavy - pokud je řešení více
* řeší úlohu nejmenších čtverců, pokud \( A x = b \) nemá přesné řešení
**Zápisy:**
* Levá pseudoinverze (full column rank):
%%A^+ = (A^T A)^{-1} A^T%%
❓
* Pravá pseudoinverze (full row rank):
%%A^+ = A^T (A A^T)^{-1}%%
❓
* Obecně:
%%x = A^+ b%%
❓
==== Příklad ====
Model:
%%f(x) = \alpha + \beta x%%
Naměřená data:
%%(x_{i},y_{i}) = (1,2),\,(2,3),\,(3,5)%%
Matice a vektor:
%%
A = \begin{pmatrix}
1 & 1 \\
1 & 2 \\
1 & 3
\end{pmatrix},\quad
b = \begin{pmatrix}
2 \\ 3 \\ 5
\end{pmatrix}
%%
Výpočty:
%%
A^T A = \begin{pmatrix}3 & 6\\6 & 14\end{pmatrix},\quad
(A^T A)^{-1} = \frac{1}{6}\begin{pmatrix}14 & -6\\-6 & 3\end{pmatrix},\quad
A^T b = \begin{pmatrix}10\\23\end{pmatrix}
%%
Výsledné řešení:
%%
\begin{pmatrix}\alpha\\\beta\end{pmatrix}
= (A^T A)^{-1} A^T b
= \begin{pmatrix}1/3 \\ 3/2\end{pmatrix}
%%
===== 2. Vlastní čísla, kvadratické formy a kvadratické funkce =====
Tato kapitola se zaměřuje na práci s **kvadratickými výrazy** a jejich souvislost s **optimalizací**. Pomocí **vlastních čísel a vektorů** dokážeme analyzovat chování kvadratických forem, určovat **minima a maxima** a převádět funkce do jednoduššího tvaru. Důležitým nástrojem je také **spektrální rozklad** symetrických matic, který umožňuje přímou interpretaci geometrických vlastností.
==== Vlastní čísla a vektory reálných symetrických matic ====
Vlastní čísla a vektory nám říkají, jak matice mění prostor – v některých směrech pouze škáluje, bez změny směru.
**Vlastní číslo** \(\lambda\) je skalár, pro nějž existuje nenulový vektor \(v\), takový že:
%%A\,v = \lambda\,v%%
❓
Pro výpočet vlastních čísel řešíme **charakteristickou rovnici**:
%%\det(A - \lambda I)=0%%
❓
Vlastní čísla i vektory hrají klíčovou roli v optimalizaci a geometrické interpretaci matic. Pokud je \( A \) **symetrická**, má:
* reálná vlastní čísla,
* ortogonální bázi vlastních vektorů,
* **spektrální rozklad** ve tvaru: %%A = Q \Lambda Q^T%%
* kde \( Q \) je ortogonální matice a \( \Lambda \) je diagonální.
**Algebraická násobnost** – počet výskytů kořene v charakteristickém polynomu.
**Geometrická násobnost** – dimenze jádra \((A - \lambda I)\). V ideálním případě (symetrická matice) se algebraická a geometrická násobnost rovnají.
==== Příklad výpočtu vlastních čísel a vektorů ====
Tento příklad ukazuje, jak krok za krokem nalézt vlastní čísla a odpovídající vektory.
Nechť
%%A = \begin{pmatrix}2 & 1 \\ 1 & 2\end{pmatrix}%%
1. **Charakteristická rovnice:**
%%\det(A - \lambda I)
= \det\begin{pmatrix}2-\lambda & 1 \\ 1 & 2-\lambda\end{pmatrix}
= (2-\lambda)^{2} - 1 = 0%%
Řešení:
%%\lambda_{1}=3,\quad \lambda_{2}=1%%
2. **Vlastní prostor pro \(\lambda_{1}=3\):**
Řešíme
%%(A - 3I)\,v = 0
\quad\Longrightarrow\quad
\begin{pmatrix}-1 & 1 \\ 1 & -1\end{pmatrix}
\begin{pmatrix}v_{1}\\v_{2}\end{pmatrix} = 0%%
Odtud \(v_{1}=v_{2}\), tedy vlastní vektor může být
%%v^{(1)} = \begin{pmatrix}1\\1\end{pmatrix}%%
3. **Vlastní prostor pro \(\lambda_{2}=1\):**
Řešíme
%%(A - I)\,v = 0
\quad\Longrightarrow\quad
\begin{pmatrix}1 & 1 \\ 1 & 1\end{pmatrix}
\begin{pmatrix}v_{1}\\v_{2}\end{pmatrix} = 0%%
Odtud \(v_{1} = -\,v_{2}\), vlastní vektor může být
%%v^{(2)} = \begin{pmatrix}1\\-1\end{pmatrix}%%
==== Spektrální rozklad ====
Pro každou reálnou symetrickou matici \( A \) existuje ortogonální spektrální rozklad:
%%A = V \Lambda V^T%%
❓
Spektrální rozklad přepisuje symetrickou matici $A$ jako ortogonální transformaci do diagonální podoby.
Využívá se pro:
* snadno analyzovat kvadratické formy (rozkládají se na vážené čtverce vlastních souřadnic),
* efektivně počítat funkce matice (např. mocniny nebo exponenciálu),
* numericky stabilně řešit lineární a optimalizační úlohy.
**Příklad:**
%%V = \tfrac{1}{\sqrt{2}}\begin{pmatrix}1 & 1\\1 & -1\end{pmatrix},\;\Lambda=\begin{pmatrix}3&0\\0&1\end{pmatrix}\;\Longrightarrow\;A=V\Lambda V^{T}=\begin{pmatrix}2&1\\1&2\end{pmatrix}%%
❓
==== Kvadratické formy na \(\mathbb{R}^n\): definitnost, diagonalizace ====
Kvadratická forma je homogenní polynom druhého stupně definovaný symetrickou maticí \(A\):
%%f(x) = x^{T}A\,x%%
❓
Kvadratická forma nám říká, zda funkce roste nebo klesá v různých směrech – podle toho, jak vypadá matice \(A\).
Podle spektra (vlastních čísel) matice \( A \) rozlišujeme:
* %%A \succ 0%% – pozitivně definitní (\(\lambda_{i}>0\))
* %%A \succeq 0%% – pozitivně semidefinitní (\(\lambda_{i}\ge0\))
* %%A \preceq 0%% – negativně semidefinitní (\(\lambda_{i}\le0\))
* %%A \prec 0%% – negativně definitní (\(\lambda_{i}<0\))
* jinak indefinitní (část \(\lambda_{i}>0\), část \(\lambda_{i}<0\))
**Diagonalizace kvadratické formy:**
Pomocí spektrálního rozkladu \( A = V \Lambda V^T \) a substituce \( y = V^T x \) dostaneme:
%%f(x) = y^T \Lambda y = \sum_{i=1}^n \lambda_i y_i^2%%
❓
Z toho lze přímo určit, zda má forma minimum nebo maximum, a zda je extrém ostrý.
**Příklad:**
%%
f(x) = x^T A x = y^T \Lambda y
= 3 y_1^2 + 1 y_2^2,\quad
y = V^T x = \tfrac{1}{\sqrt{2}}\begin{pmatrix}x_1 + x_2 \\ x_1 - x_2\end{pmatrix}
%%
❓
==== Kvadratické funkce na \(\mathbb{R}^n\): doplnění na čtverec ====
Obecná kvadratická funkce má tvar:
%%g(x) = x^T A x + b^T x + c%%
Tato funkce obsahuje jak kvadratický, tak lineární člen – jejím cílem je najít stacionární bod a rozhodnout, zda jde o minimum, maximum nebo sedlový bod.
**Doplnění na n-tý řád (Taylorův polynom):**
Pro dostatečně hladkou funkci \(g:\mathbb{R}^n\to\mathbb{R}\) kolem bodu \(x^*\) platí Taylorův rozvoj až do \(n\)-tého řádu:
%%
g(x)
= \sum_{k=0}^{n}\frac{1}{k!}\,D^{k}g(x^*)\bigl[x-x^*\bigr]^{k}
+ R_{n+1}(x),
%%
Pro hledání extrému ji přepíšeme pomocí **doplnění na čtverec**. Využíváme Taylorův polynom 2. řádu kolem bodu \( x^* \):
%%
T_{2}(x)
= g(x^*)
+ \nabla g(x^*)^T (x - x^*)
+ \tfrac{1}{2} (x - x^*)^T \nabla^2 g(x^*) (x - x^*)
%%
**Stacionární bod** je: %%x^* = -A^{-1} b%%
Přepsání funkce: %% g(x) = \tfrac{1}{2}(x - x^*)^T A (x - x^*) + \text{konst.} %%
**Minima a maxima (na otevřené množině \(\mathbb{R}^{n}\)):**
* \(A \succ 0\): \(g\) je striktně konvexní ⇒ unikátní globální minimum v \(x^{*}\)
* \(A \prec 0\): \(g\) je striktně konkávní ⇒ unikátní globální maximum v \(x^{*}\)
* Jinak je \(x^{*}\) sedlovým bodem (žádný globální extrém)
===== 3. Optimální proložení bodů podprostorem (PCA) =====
Tato kapitola se věnuje metodám, které hledají **nejlepší aproximaci dat** v nižším rozměru. Typickým příkladem je metoda hlavních komponent (**PCA**), která minimalizuje ztrátu informace při promítání dat do podprostoru. Klíčovým nástrojem pro tuto úlohu je **singulární rozklad matice (SVD)** – univerzální technika pro analýzu struktury a „redukování“ matic.
**Motivace:** Ve strojovém učení nebo klasifikaci často pracujeme s daty ve velmi vysoké dimenzi (např. tisíce rysů). PCA umožňuje zmenšit rozměr na menší podprostor tak, aby se zachoval co největší rozptyl (informace). To vede k rychlejším výpočtům, nižšímu šumu a přehlednější vizualizaci.
==== Singulární rozklad matice (SVD) ====
Každou reálnou matici \( A \in \mathbb{R}^{m \times n} \) lze zapsat ve tvaru:
%%A = U \Sigma V^T%%
❓
* \( U \in \mathbb{R}^{m \times m} \) – levé singulární vektory
* \( \Sigma \in \mathbb{R}^{m \times n} \) – diagonální matice singulárních čísel
* \( V \in \mathbb{R}^{n \times n} \) – pravé singulární vektory
Singulární čísla \( \sigma_1 \ge \cdots \ge \sigma_r > 0 \) jsou druhé odmocniny vlastních čísel matic \( A A^T \) a \( A^T A \). SVD existuje pro každou reálnou (i obdélníkovou) matici.
**Výpočet SVD:**
* Spočteme spektrální rozklad \( A A^T = U S U^T \) a \( A^T A = V S V^T \)
* Singulární čísla \( s_i = \sqrt{S_{ii}} \)
* Pak \( A = U S^{1/2} V^T \)
==== PCA jako optimalizační úloha ====
PCA můžeme chápat dvěma způsoby:
* **Minimalizace chyby projekce (minimální vzdálenost od podprostoru):**
* Hledáme podprostor dimenze \(k\), na který promítneme data tak, aby se minimalizoval součet čtverců vzdáleností (reziduí):
* %%\min_{X^{T}X=I}\sum_{i=1}^{n}\|a_{i}-XX^{T}a_{i}\|_{2}^{2}%%❓
* **Maximalizace zachyceného rozptylu (stopa):**
* Volíme \(X\) tak, aby projekce dat na podprostor měla co největší rozptyl:
* %%\max_{X^{T}X=I}\sum_{i=1}^{n}\|X^{T}a_{i}\|_{2}^{2}= \max_{X^{T}X=I}\|X^{T}A\|_{F}^{2}= \max_{X^{T}X=I}\mathrm{tr}\bigl(X^{T}A A^{T}X\bigr)%%❓
Tyto dva přístupy vedou ke stejnému výsledku – podprostoru generovanému prvními \(k\) vlastními vektory matice \(A A^T\).
=== Aproximace maticí nižší hodnosti ===
Nechť \( A \in \mathbb{R}^{m \times n} \), \( p = \min\{m,n\} \) a \( k \le p \).
Hledáme matici \( B \) hodnosti nejvýše \( k \), která je co nejblíže původní matici \( A \) ve Frobeniově normě:
%%\min_{\mathrm{rank}(B) \le k} \|A - B\|_F%%
❓
== Eckart–Youngova věta ==
Tato úloha má řešení dáno oříznutím SVD rozkladu \( A = U \Sigma V^T \) na prvních \( k \) složek:
%%
A_k = \sum_{i=1}^{k} s_i\,u_i\,v_i^T = U\,\Sigma_k\,V^T
%%
kde
%%
\Sigma_k = \mathrm{diag}(s_1, \dots, s_k, 0, \dots, 0) \in \mathbb{R}^{m \times n}
%%
obsahuje jen první \( k \) singulárních čísel a zbytek nulujeme.
Používáme tedy jen první \( k \) singulárních složek z rozkladu SVD – to zaručuje nejlepší možnou aproximaci v dané dimenzi.
=== Funkce stopa (trace) ===
Stopa čtvercové matice je součet diagonálních prvků:
%%\mathrm{tr}(A) = \sum_{i=1}^{n} A_{ii}%%
❓
Stopu si můžeš představit jako míru „energie“ nebo rozptylu, kterou matice zachytává v prostoru – čím větší stopa, tím více informací.
==== Výpočet PCA (krok za krokem) ====
1. Spočítáme matici kovariancí: %%S = A A^T%%
* Matice \(S = A A^T\) je tzv. kovarianční matice, která říká, jak moc a v jakých směrech se data mění.
2. Provedeme spektrální rozklad: %%S = V \Lambda V^T,\quad \lambda_1 \ge \cdots \ge \lambda_m%%
3. Zvolíme první \(k\) vektorů: \( V = [X \mid Y] \)
4. Projekce dat: %%\widehat{A} = X X^T A%%
5. Chyba projekce: %%\|A - \widehat{A}\|_F^2 = \sum_{i=k+1}^m \lambda_i%% ❓
=== Příklad ===
Nechť:
%%A = \begin{pmatrix}2 & 1\\1 & 2\end{pmatrix},\quad k = 1%%
1. Kovarianční matice: %%S = A A^T = \begin{pmatrix}5 & 4\\4 & 5\end{pmatrix}%%
2. Spektrální rozklad: %%\lambda_1 = 9,\quad \lambda_2 = 1,\quad v_1 = \tfrac{1}{\sqrt{2}}\begin{pmatrix}1\\1\end{pmatrix}%%
3. Výběr podprostoru: %%X = [v_1]%%
4. Projekce: %%\widehat{A} = X X^T A = \tfrac{1}{2} \begin{pmatrix}1 & 1\\1 & 1\end{pmatrix} \begin{pmatrix}2 & 1\\1 & 2\end{pmatrix} = \begin{pmatrix}1.5 & 1.5\\1.5 & 1.5\end{pmatrix}%%
5. Chyba proložení: %%\|A - \widehat{A}\|_F^2 = \lambda_2 = 1%%
**Interpretace:** Projekce do 1D podprostoru zachová rozptyl \( \lambda_1 \), ztráta informace odpovídá \( \lambda_2 \). PCA tedy dává nejlepší možnou redukci na danou dimenzi.
===== 4. Globální a lokální extrémy funkce na podmnožině ℝⁿ =====
Extrémy mohou být:
* **volné**, tj. hledáme optimum na celé \(\mathbb{R}^n\),
* nebo **vázané**, kdy je funkce omezena podmínkami.
V praxi často hledáme nejlepší řešení (např. nejnižší cenu, nejkratší trasu, maximální efektivitu), ať už bez omezení, nebo podmíněně – třeba za předpokladu omezených zdrojů.
==== Definice ====
Mějme funkci \( f: D \subset \mathbb{R}^n \rightarrow \mathbb{R} \).
* **Lokální minimum**: existuje okolí \( U \) bodu \( x^* \), že pro všechna \( x \in U \cap D \): %%f(x) \ge f(x^*)%%
* **Lokální maximum**: %%f(x) \le f(x^*)%%
* **Globální minimum** (na \(D\)): %%f(x) \ge f(x^*)\quad\forall x \in D%%
* **Globální maximum**: %%f(x) \le f(x^*)\quad\forall x \in D%%
Lokální extrém je jen „nejlepší v okolí“, zatímco globální je nejlepší **v celé množině**.
==== Kdy je extrém globální ====
Pokud je funkce **konvexní**, pak **každé lokální minimum je zároveň globální minimum**. U konkávních funkcí analogicky pro maxima.
Tato vlastnost je velmi důležitá v optimalizaci – nemusíme hledat celé globální optimum, stačí najít lokální a víme, že je to ono.
==== Hledání extrémů ====
Najít extrém neznamená jen najít hodnotu funkce, ale určit i bod, kde se nachází, a typ extrému.
* **Volné extrémy**: použijeme **podmínku nulového gradientu** a **Hessovu matici** pro test typu extrému.
* **Vázané extrémy**: použijeme **Lagrangeovy multiplikátory**.
==== Příklady ====
1. **Volný extrém:**
* Např. funkce %%f(x, y) = x^2 + y^2%%
* má globální minimum v bodě %%x^* = (0, 0),\quad f(x^*) = 0%%
* Jde o tvar trychtýře – minimum je ve středu a zároveň lokální i globální.
2. **Vázaný extrém:**
* Minimalizujeme %%f(x, y) = x^2 + y^2%%
* za podmínky %%x + y = 1%%
* Extrém se hledá pouze na přímce, ne na celé rovině.
Takové úlohy se řeší metodou **Lagrangeových multiplikátorů**, která převede problém s omezením na rovnici, kterou můžeme řešit pomocí derivací.
==== Dělení extrémů podle kontextu ====
| Typ extrému | Omezení | Podmínky hledání |
|---------------|--------------------|-------------------------|
| Volný | žádné | derivace = 0 |
| Vázaný | rovnosti / nerovnosti | Lagrange, KKT podmínky |
| Globální | celé D | extrém celé množiny |
| Lokální | okolí bodu | extrém v nějaké kouli |
===== 5. Volné lokální extrémy diferencovatelných funkcí =====
Zde hledáme extrémy hladkých funkcí \( f:\mathbb{R}^n \to \mathbb{R} \) **bez omezení** – tedy volné extrémy uvnitř definičního oboru.
=== Podmínka 1. řádu ===
Stacionární bod \( x^* \) je kandidát na extrém, pokud platí:
%%\nabla f(x^*) = 0%%
❓
To znamená, že funkce nemá v tomto bodě žádný směr, kterým by mohla růst nebo klesat – ležíme v „rovnovážné poloze“.
=== Podmínka 2. řádu ===
Pro rozhodnutí typu stacionárního bodu, zda jde o minimum, maximum nebo sedlový bod, použijeme **Hessovu matici** \( H_f(x) \) – matici druhých derivací.
* Pokud je \( H \succ 0 \), jedná se o ostré lokální minimum.
* Pokud je \( H \succeq 0 \), jde o minimum, které ale nemusí být ostré.
* Pokud je \( H \prec 0 \), máme ostré lokální maximum.
* Pokud je \( H \preceq 0 \), jde o maximum, které nemusí být ostré.
* Pokud je Hessova matice indefinitní, jedná se o sedlový bod – tedy žádný extrém.
Tato klasifikace vychází z tvaru funkce v okolí bodu – pomocí křivosti poznáme, zda se funkce chová jako dno mísy, vrchol kopce nebo sedlo.
==== Numerické metody ====
Když analyticky nelze najít řešení, použijeme **iterační metody** – postupně se přibližujeme k optimu:
* **Obecná iterace:**
* Volíme počáteční bod \(x_0\), směr \(v_k\) a krok \(\alpha_k > 0\)
* Iterace: %%x_{k+1} = x_k + \alpha_k v_k%%
* Směr \(v_k\) je **sestupný**, pokud: %%\nabla f(x_k)^T v_k < 0%%
* V každém kroku tedy jdeme směrem, který zaručeně zmenšuje hodnotu funkce – tím se přibližujeme k minimu.
* **Gradientní metoda (největší spád):**
* Směr je záporný gradient: %%x_{k+1} = x_k - \alpha_k \nabla f(x_k)%%
* Jednoduchá, ale může **konvergovat pomalu** nebo klesat příliš „cikcak“ → závisí na volbě kroku.
* Jde o nejjednodušší metodu: jdeme „dolů z kopce“ po nejstrmější cestě, ale bez přizpůsobení křivosti terénu.
* **Newtonova metoda:**
* Zohledňuje zakřivení funkce pomocí Hessovy matice: %%x_{k+1} = x_k - H_f(x_k)^{-1} \nabla f(x_k)%%
* Rychlá (kvadratická) konvergence, ale výpočetně náročná – vyžaduje inverzi Hessovy matice.
* Funguje dobře, pokud máme „dobrý start“ a funkce je pěkně zakřivená – jinak může selhat.
* **Gauss-Newtonova metoda:**
* Vhodná pro funkce, které jsou kvadrátem vektorové funkce \( f(x) = \|g(x)\|_2^2 \)
* Iterace: %%x_{k+1} = x_k - \left(J^T J\right)^{-1} J^T g(x_k)%%
* kde \( J \) je Jacobiho matice funkce \( g(x) \)
* Gauss-Newton je zjednodušená verze Newtonovy metody, která používá jen první derivace.
* **Levenberg-Marquardtova metoda:**
* Kombinuje robustnost gradientní metody s rychlostí Gauss-Newtonovy
* Iterace: %%x_{k+1} = x_k - \left(J^T J + \mu I\right)^{-1} J^T g(x_k)%%
* Parametr \( \mu > 0 \) umožňuje plynule přecházet mezi oběma metodami
* Pokud Gauss-Newton selhává, přidáme regularizační člen \( \mu I \), čímž omezíme „skoky“ v citlivých oblastech – metoda se chová stabilněji.
===== 6. Lokální extrémy diferencovatelných funkcí vázané rovnostmi =====
Pokud hledáme extrém funkce \( f(x) \) za podmínky, že proměnné \( x \in \mathbb{R}^n \) musí splňovat rovnosti \( g_i(x) = 0 \), musíme vzít v úvahu nejen chování samotné funkce, ale i **omezení**, která určují přípustné body.
Taková úloha má tvar:
%%\min f(x)\quad \text{za podmínky}\quad g_1(x) = 0,\,\dots,\,g_m(x) = 0%%
Tyto rovnosti určují množinu povolených řešení – tzv. **povrch**. Extrém hledáme **na tomto povrchu**, tedy jen mezi body, které splňují dané podmínky.
=== Podmínka prvního řádu – Lagrangeovy multiplikátory ===
Podmínky řešíme pomocí **Lagrangeovy funkce**:
%%\mathcal{L}(x, \lambda) = f(x) + \sum_{i=1}^{m} \lambda_i g_i(x)%%
❓
Bod \( x^* \in \mathbb{R}^n \) je kandidátem na extrém, pokud existuje vektor multiplikátorů \( \lambda = (\lambda_1,\dots,\lambda_m) \), takový že:
* %%\nabla_x \mathcal{L}(x^*, \lambda) = \nabla f(x^*) + \sum_{i=1}^{m} \lambda_i \nabla g_i(x^*) = 0%%
* %%g_i(x^*) = 0\quad \text{pro všechna } i = 1,\dots,m%%
Tato podmínka říká, že v bodě \( x^* \) je gradient funkce \( f \) lineární kombinací gradientů omezení \( g_i \) – tedy **ležící v ortogonálním doplňku tečného prostoru**.
Jinými slovy: v optimu se nelze „vydat směrem“ uvnitř množiny bez toho, aby se zvyšovala hodnota funkce.
=== Geometrická interpretace ===
Tečný prostor k množině \( \{x \mid g(x) = 0\} \) v bodě \( x^* \) je tvořen vektory \( v \), pro které platí: %%g'(x^*) v = 0%%
– tedy množinou vektorů kolmých na gradienty omezení.
Gradient funkce \( f \) musí ležet ve směru normály, tj. být kombinací \(\nabla g_i\).
=== Druhý řád – určení typu extrému ===
Hessovu matici Lagrangeovy funkce vzhledem k \( x \) označme:
%%H(x, \lambda) = \nabla^2_{xx} \mathcal{L}(x, \lambda)%%
Pro rozhodnutí o typu extrému:
* Zkoumáme **zrestrikovaný Hessian** na tečný prostor množiny \( \{g_i(x)=0\} \),
* Pokud je pozitivně definitní, jde o **lokální minimum**,
* Pokud negativně definitní, jde o **lokální maximum**,
* Pokud není ani jedno – **sedlový bod**.
=== Kontrola hranic množiny ===
Pokud množina \( D \), na které optimalizujeme, má i ohraničení, musíme kromě stacionárních bodů vyšetřit i **hranici domény** – extrém může vzniknout právě tam, i když nevyhoví podmínce \( \nabla_x \mathcal{L} = 0 \).
To zahrnuje:
* krajní body množiny,
* místa, kde se gradienty omezení stávají lineárně závislými,
* a další situace, kdy už neplatí standardní podmínky.
=== Postup ===
- Sestavíme Lagrangeovu funkci \( \mathcal{L}(x,\lambda) = f(x) + \lambda^T g(x) \).
- Najdeme kandidátní body \( (x^*, \lambda^*) \), které splňují:
* \( \nabla_x \mathcal{L}(x^*, \lambda^*) = 0 \)
* \( g_i(x^*) = 0 \)
- Zkontrolujeme druhý řád – restrikci Hessovy matice.
- Pokud je doména omezená, zkontrolujeme i hraniční body.
- Vybereme bod s nejlepší hodnotou \( f(x^*) \).
=== Aplikace ===
Lagrangeovy multiplikátory umožňují řešit mnoho praktických úloh:
* minimalizace nákladů při daných zdrojích,
* optimalizace návrhů pod strukturálními podmínkami,
* nalezení extrému na parametrické křivce nebo ploše,
* ekonomické rovnováhy s rozpočtovým omezením.
===== 7. Úloha lineárního programování (LP) =====
Lineární programování (LP) je metoda pro **optimalizaci lineární funkce** při **lineárních omezeních**. Typicky hledáme maximum nebo minimum nějakého cíle (např. zisku, výkonu) za omezených podmínek (rozpočet, kapacita, suroviny apod.)
=== Úvod k teorii lineárního programování, geometrický význam===
Lineární programování (LP) pracuje s lineární cílovou funkcí
%%z = c^{T}x%% ❓
a konvexním polyedrem definovaným lineárními omezeními (rovnicemi či nerovnicemi).
Hlavními body teorie jsou:
* **Konvexní polyedr a vrcholy**
* soubor všech \(x\) splňujících %%A\,x \ge b,\;x \ge 0%%
* tvoří konvexní množinu (polyedr). Každý takový polyedr lze popsat buď jako průnik poloprostorů, nebo jako konvexní obal (konvexní kombinace) svých extrémních bodů (vrcholů) a hran (hranové body).
* = Řešení soustavy omezení \( A x \le b \) tvoří konvexní oblast v prostoru.
* **Vrcholy (extermální body)**
* vrcholem (extrémním bodem) polyedru rozumíme bod, který nelze vyjádřit jako konvexní kombinaci dvou jiných bodů v polyedru. Algebraicky to odpovídá základnímu (basic) řešení:
* Pokud máme \(m\) lineárních rovnic (po úpravě do standardního tvaru) a \(n\) proměnných, každý vrchol odpovídá výběru \(m\) nezávislých (bázových) proměnných, ostatní se nastaví na nulu.
* = Body, které nelze napsat jako průměr jiných bodů v oblasti – právě v těchto bodech může ležet optimum.
* **Optimum leží ve vrcholu**
* vzhledem k tomu, že %%z = c^{T}x%%
* je lineární, musí globální optimum (minimální či maximální hodnota) na konvexním polyedru nastat alespoň v jednom vrcholu. Jinými slovy, pro LP není třeba zkoumat vnitřek polyedru: stačí prohledat vrcholy (popř. hrany mezi dvěma vrcholy, pokud existuje více optimálních vrcholů).
* = Pokud má LP optimum, pak existuje alespoň v jednom z vrcholů této oblasti. Nemusíme tedy prohledávat celý prostor, stačí kontrolovat vrcholy.
* **Více optimálních vrcholů (degenerace)**
* Pokud existují dva vrcholy \(x^{(1)}, x^{(2)}\) s %%c^{T}x^{(1)} = c^{T}x^{(2)} = z^{*},%%
* pak každá konvexní kombinace %%x = \alpha\,x^{(1)} + (1-\alpha)\,x^{(2)},\quad 0\le\alpha\le1,%%
* je také optimální a leží na hraně spojující tyto dva vrcholy. To znamená, že optimální množina může být celá hrana (nejen izolovaný vrchol).
* = Pokud má více vrcholů stejnou hodnotu cílové funkce, optimum je libovolná jejich kombinace – tedy i celé hrany mezi nimi.
* **Geometrické důsledky**
- Pokud polyedr nemá žádné vrcholy (např. neomezená směrově čtvercová množina), může optimum neexistovat (např. LP cílová funkce neklesá) nebo být dosaženo jen „v nekonečnu“.
- Pokud je polyedr omezený a nevyprazdňuje se (existuje aspoň jeden vrchol), pak existuje alespoň jedno globální optimum v některém vrcholu.
=== Základní tvar LP ===
Obecná formulace (kanonický tvar v „nerovnicích“) je:
%%
\min\{\,c^{T}x \;\mid\; A\,x = b,\; x \ge 0\,\}
%%
Každou úlohu LP lze převést do tohoto rovnicového tvaru pomocí dvou úprav:
1. **Přidání nezáporných slack proměnných** (nerovností na rovnosti)
* Pro každé omezení ve tvaru nerovnosti (např. \(a_{i}^{T}x \le b_{i}\)) přidáme novou proměnnou \(u_{i} \ge 0\), aby vznikla rovnice %%a_{i}^{T}x + u_{i} = b_{i},\quad u_{i} \ge 0.%%
2. **Vyjádření neomezených reálných proměnných** (převedení volných proměnných)
* Každou proměnnou bez znaménkového omezení rozložíme jako rozdíl dvou nezáporných: %%x_j = x_j^+ - x_j^-,\quad x_j^+,\,x_j^- \ge 0%%
==== Varianty zadání ====
Úlohu LP lze převádět mezi různými tvary – např. aby vyhovovala algoritmům (simplex, metoda vnitřního bodu) nebo vizualizaci.
* **Minimalizace vs. maximalizace:**
* Maximalizaci převedeme na minimalizaci změnou znaménka: %%\max c^T x \equiv \min (-c)^T x%%
* **Rovnosti a nerovnosti:**
* Rovnost převedeme na dvě opačné nerovnosti: %%a^T x = b \equiv a^T x \le b \ \text{a} \ -a^T x \le -b%%
* **Proměnné bez znaménka:**
* Volná proměnná se nahradí rozdílem dvou nezáporných: %%x_i = x_i^+ - x_i^-,\quad x_i^+, x_i^- \ge 0%%
* **Slack proměnné (u nerovností):**
* Každou nerovnost \(a_i^T x \le b_i\) převedeme na rovnici přidáním nové nezáporné proměnné: %%a_i^T x + s_i = b_i,\quad s_i \ge 0%%
Tím dostaneme **kanonický tvar LP** – s rovnicemi a nezápornými proměnnými, se kterým umí pracovat všechny běžné algoritmy.
==== Převod LP do kanonického tvaru ====
**Původní úloha (max):**
\[
\begin{aligned}
\max\; &5\,x_{1} + 4\,x_{2}\\
\text{s podmínkami}
\;&x_{1} + 2x_{2} \;\le\; 8,\\
&3x_{1} + x_{2} \;\ge\; 3,\\
&x_{1} - x_{2} \;\le\; 2,\\
&x_{1},\,x_{2} \;\ge\; 0.
\end{aligned}
\]
**Kanonický tvar (min):**
\[
\begin{aligned}
\min\;&-\,5\,x_{1} \;-\; 4\,x_{2}\\
\text{s podmínkami}
\;&x_{1} \;+\; 2\,x_{2} \;+\; s_{1} = 8,\\
&3\,x_{1} \;+\; x_{2} \;-\; s_{2} = 3,\\
&x_{1} \;-\; x_{2} \;+\; s_{3} = 2,\\
&x_{1},\,x_{2},\,s_{1},\,s_{2},\,s_{3} \;\ge\; 0.
\end{aligned}
\]
=== Typické použití LP ===
Lineární programování se používá v různých oborech, kde je třeba nalézt nejlepší možné řešení za daných podmínek:
* **Plánování výroby a alokace zdrojů**
* Např. maximalizace zisku z produktů nebo minimalizace nákladů.
* Omezující podmínky mohou být kapacity strojů, pracovní doba, množství surovin apod.
* **Směrování a toky v síti**
* Minimalizace nákladů na přepravu v dopravní síti.
* Omezení tvoří kapacity hran a požadavky na vstup/výstup v uzlech.
* **Transportní a přiřazovací problémy**
* Např. optimální distribuce zboží ze skladů do prodejen.
* Přiřazování pracovníků k úkolům nebo trasám.
* **Dietní problém**
* Hledání nejlevnější kombinace potravin splňující výživové normy.
* Každá potravina má známé nutriční složení a cenu.
* **Ekonomické rovnováhy a plánování**
* Například v makroekonomii při modelování rovnováh v sektorech nebo při investičním plánování.
LP slouží jako základ pro složitější varianty – např. celočíselné, nelineární nebo stochastické programování.
==== Přibližné řešení přeurčené soustavy ====
Přeurčená soustava rovnic \( A x = b \), kde počet rovnic \( m \) převyšuje počet neznámých \( n \), obvykle nemá přesné řešení. Hledáme proto takové \( x \), které dává nejlepší možné přiblížení – tj. minimalizuje odchylku \( A x - b \) podle zvolené normy.
Typické volby:
* **1-norma (součet absolutních odchylek):**
* %%\min \|A x - b\|_1 = \sum_{i=1}^m |a_i^T x - b_i|%% ❓
* **∞-norma (maximální odchylka):**
* %%\min \|A x - b\|_\infty = \max_{i=1,\dots,m} |a_i^T x - b_i|%% ❓
Obě tyto úlohy lze převést na lineární programování (LP) zavedením pomocných proměnných a vhodných lineárních omezení.
== L∞-norm (max-norm) ==
* Chceme minimalizovat největší odchylku: %% \min_{x\in\mathbb{R}^{n}} \,\bigl\|A\,x - b\bigr\|_{\infty} \;=\;\min_{x}\; \max_{i=1\dots m} \bigl|\,a_{i}^{T}x - b_{i}\bigr|. %%
* Formulujeme ekvivalentně: %% \min_{x,\;t}\; t \quad\text{za podmínek}\quad -\,t \;\le\; a_{i}^{T}x - b_{i}\;\le\; t,\quad i=1,\dots,m,\quad t\in\mathbb{R}.%%
Výsledkem je LP v proměnných \((x_1,\dots,x_n,t)\). Optimální \(x^{*}\) minimalizuje největší reziduum.
== L₁-norm (taxicab-norma) ==
* Chceme minimalizovat součet absolutních odchylek: %%\min_{x\in\mathbb{R}^{n}} \,\bigl\|A\,x - b\bigr\|_{1}\;=\;\min_{x}\;\sum_{i=1}^{m} \bigl|\,a_{i}^{T}x - b_{i}\bigr|.%%
* Formulujeme ekvivalentně:%%\min_{x,\;\{u_{i}\}}\;\sum_{i=1}^{m}u_{i}\quad\text{za podmínek}\quad-\,u_{i} \;\le\; a_{i}^{T}x - b_{i}\;\le\; u_{i},\quad u_{i}\;\ge\; 0,\;i=1,\dots,m.%%
* Nalezené \(\{u_{i}^{*}\}\) jsou pak absolutní odchylky a \(\sum_i u_i^*\) je minimální součet.
=== Kompletní příklad přeurčené soustavy v L₁ a L∞ ===
Mějme matice a vektory:
\[
A =
\begin{pmatrix}
1 & 2 \\
2 & -1 \\
3 & 1
\end{pmatrix},
\quad
b =
\begin{pmatrix}
5 \\
4 \\
7
\end{pmatrix}.
\]
Chceme nalézt \(x = (x_{1}, x_{2})\) minimalizující \(\|A\,x - b\|_{1}\).
=== Formulace v L₁-normě (jako LP) - Bonus ===
\[
\min_{x_{1},x_{2}} \;\sum_{i=1}^{3} \bigl|\,a_{i}^{T}x - b_{i}\bigr|
\;\;\equiv\;\;
\min_{x_{1},x_{2},\,u_{1},u_{2},u_{3}}\;u_{1} + u_{2} + u_{3}
\]
za podmínek (každá absolutní hodnota \(\lvert a_{i}^{T}x - b_{i}\rvert \le u_{i}\)):
\[
\begin{cases}
x_{1} \;+\; 2\,x_{2} \;-\; 5 \;\le\; u_{1},\\
-(x_{1} \;+\; 2\,x_{2} \;-\; 5) \;\le\; u_{1},\\
2\,x_{1} \;-\; x_{2} \;-\; 4 \;\le\; u_{2},\\
-\bigl(2\,x_{1} \;-\; x_{2} \;-\; 4\bigr) \;\le\; u_{2},\\
3\,x_{1} \;+\; x_{2} \;-\; 7 \;\le\; u_{3},\\
-\bigl(3\,x_{1} \;+\; x_{2} \;-\; 7\bigr) \;\le\; u_{3},\\
u_{1},\,u_{2},\,u_{3} \;\ge\; 0,\quad x_{1},\,x_{2} \;\text{volné (neomezené).}
\end{cases}
\]
Protože \(x_{1}, x_{2}\) jsou volné (nemají \(\ge0\) omezení), převedeme je na rozdíl dvou nezáporných:
\[
x_{j} = x_{j}^{+} - x_{j}^{-},\quad x_{j}^{+}\ge0,\;x_{j}^{-}\ge0,\quad j=1,2.
\]
Pak dostaneme úplné LP:
\[
\begin{aligned}
\min\;&u_{1} + u_{2} + u_{3}\\
\text{s podmínkami}&\\
& (x_{1}^{+} - x_{1}^{-}) \;+\; 2\,(x_{2}^{+} - x_{2}^{-}) \;-\; 5 \;\le\; u_{1},\\
&-\bigl[(x_{1}^{+} - x_{1}^{-}) \;+\; 2\,(x_{2}^{+} - x_{2}^{-}) \;-\; 5\bigr] \;\le\; u_{1},\\
&2\,(x_{1}^{+} - x_{1}^{-}) \;-\; (x_{2}^{+} - x_{2}^{-}) \;-\; 4 \;\le\; u_{2},\\
&-\bigl[2\,(x_{1}^{+} - x_{1}^{-}) \;-\; (x_{2}^{+} - x_{2}^{-}) \;-\; 4\bigr] \;\le\; u_{2},\\
&3\,(x_{1}^{+} - x_{1}^{-}) \;+\; (x_{2}^{+} - x_{2}^{-}) \;-\; 7 \;\le\; u_{3},\\
&-\bigl[3\,(x_{1}^{+} - x_{1}^{-}) \;+\; (x_{2}^{+} - x_{2}^{-}) \;-\; 7\bigr] \;\le\; u_{3},\\
&x_{1}^{+},\,x_{1}^{-},\,x_{2}^{+},\,x_{2}^{-},\,u_{1},\,u_{2},\,u_{3} \;\ge\; 0.
\end{aligned}
\]
=== Formulace v L∞-normě (jako LP) - Bonus ===
\[
\min_{x_{1},x_{2}} \;\|A\,x - b\|_{\infty}
\;\;\equiv\;\;
\min_{x_{1},x_{2},\,t}\;t
\]
za podmínek:
\[
\begin{cases}
-\,t \;\le\; x_{1} + 2\,x_{2} \;-\; 5 \;\le\; t,\\
-\,t \;\le\; 2\,x_{1} - x_{2} \;-\; 4 \;\le\; t,\\
-\,t \;\le\; 3\,x_{1} + x_{2} \;-\; 7 \;\le\; t,\\
x_{1},\,x_{2} \;\text{volné},\quad t \;\ge\; 0.
\end{cases}
\]
Opět nahradíme volné \(x_{1},x_{2}\) jako rozdíl dvou nezáporných:
\[
x_{j} = x_{j}^{+} - x_{j}^{-},\quad x_{j}^{+},\,x_{j}^{-} \ge 0,\quad j=1,2.
\]
Pak kompletní LP v L∞-normě:
\[
\begin{aligned}
\min\;&t\\
\text{s podmínkami}&\\
&-\;t \;\le\; (x_{1}^{+} - x_{1}^{-}) + 2\,(x_{2}^{+} - x_{2}^{-}) - 5 \;\le\; t,\\
&-\;t \;\le\; 2\,(x_{1}^{+} - x_{1}^{-}) - (x_{2}^{+} - x_{2}^{-}) - 4 \;\le\; t,\\
&-\;t \;\le\; 3\,(x_{1}^{+} - x_{1}^{-}) + (x_{2}^{+} - x_{2}^{-}) - 7 \;\le\; t,\\
&x_{1}^{+},\,x_{1}^{-},\,x_{2}^{+},\,x_{2}^{-},\,t \;\ge\; 0.
\end{aligned}
\]
V obou případech (L₁ i L∞) dostaneme LP, které lze řešit metodami simplex či interiér bodu.
=== Řešení lineárního programu (stručně) ===
Po převedení LP do kanonického (rovnicového) tvaru %%\min\{\,c^{T}x \mid A\,x = b,\;x \ge 0\},%%
řešíme optimalizační úlohu nad konvexní množinou řešení (polyedrem). Existuje několik přístupů:
* **Vyhledání vrcholů a porovnání cílové funkce**
* Všechny vrcholy polyedru odpovídají základním řešením soustavy \(A x = b\), kde \(x \ge 0\).
* Pro malé problémy (2D, 3D) lze vrcholy zjistit graficky jako průsečíky omezení.
* Vyhodnotíme hodnotu cílové funkce \(c^T x\) ve všech vrcholech a zvolíme nejlepší.
* **Výhoda:** Přehledná geometrická interpretace, vhodná pro ilustraci.
* **Nevýhoda:** Počet vrcholů může být exponenciální (\(\binom{n}{m}\)), což je výpočetně neúnosné pro větší úlohy.
* **Simplexová metoda (pohyb po hranách polyedru)**
* Nehledáme všechny vrcholy – postupně se přesouváme z jednoho vrcholu k sousednímu, přičemž hodnota cílové funkce se zlepšuje (klesá nebo roste).
* V každém kroku vybíráme bázové proměnné a aktualizujeme tzv. simplexovou tabulku.
* Algoritmus konverguje k optimu v konečně mnoha krocích, pokud nenastane degenerace.
* **Výhoda:** Prakticky velmi rychlý pro většinu úloh – často jen málo kroků.
* **Nevýhoda:** V krajních případech může cyklit (řeší se např. Blandovým pravidlem).
===== 8. Geometrie LP =====
Geometrie lineárního programování je založena na vlastnostech **konvexních množin** a **mnohostěnů (polyedrů)**. LP úloha se řeší hledáním extrému lineární funkce na takové množině.
==== Konvexní množiny ====
* Množina \(C \subseteq \mathbb{R}^n\) je **konvexní**, pokud pro každé dva body \(x, y \in C\) a libovolné \(\lambda \in [0,1]\) platí: %%\lambda x + (1-\lambda)y \in C%%❓
* Ekvivalentně: obsahuje všechny **konvexní kombinace** svých bodů, tedy výrazy ve tvaru: %%x = \sum_{i=1}^{k} \alpha_i x_i,\quad \alpha_i \ge 0,\quad \sum \alpha_i = 1%%❓
* Konvexní množiny jsou důležité, protože:
* minimum lineární funkce na konvexní množině je dosaženo na hranici (nejčastěji ve vrcholu),
* každé lokální minimum je zároveň globální.
==== Polyedr (konvexní mnohostěn) ====
* **Polyedr** je průnik konečně mnoha poloprostorů, tedy množina řešení lineárních nerovnic: %%P = \{x \in \mathbb{R}^n \mid A x \ge b\}%%❓
* Je vždy konvexní, ale nemusí být omezený (např. otevřený klín nebo nekonečný paprsek).
* Pokud polyedr **neobsahuje přímku**, má extrémní body – lze tedy hledat optimum.
* Pokud obsahuje přímku, minimum lineární funkce často neexistuje nebo je dosaženo „v nekonečnu“.
* Každý polyedr má:
* **vrcholy (extrémní body)** – body, které nelze vyjádřit jako konvexní kombinace jiných bodů množiny,
* **hrany, fasety, stěny** – tj. geometrické části různých dimenzí:
* 0D – vrchol,
* 1D – hrana,
* \(n{-}1\)D – faseta.
==== Extrémní body ====
* Bod \(x \in P\) je **extrémní bod** (vrchol), pokud neexistují dva různé body \(x_1, x_2 \in P\), že: %%x = \lambda x_1 + (1-\lambda) x_2,\quad \lambda \in (0,1)%%❓
* Algebraicky odpovídají **základním řešením** soustavy rovnic.
* Extrémní body existují právě tehdy, když množina řešení neobsahuje přímku.
* V LP se optimální řešení (pokud existuje) nachází vždy v některém extrémním bodě polyedru přípustných řešení.
* Minimum lineární funkce na konvexním polyedru je dosaženo na **stěně**, kde má funkce stejnou hodnotu.
* Tato stěna je průnik s tzv. **opěrnou nadrovinou**: %%H = \{x \in \mathbb{R}^n \mid c^T x = c^T x^*\}%% ❓
===== 9. Dualita v LP =====
Každé úloze lineárního programování (tzv. **primární úloze**) odpovídá jiná LP úloha – tzv. **duální úloha**. Obě spolu souvisí: řešení jedné poskytuje informace o řešení druhé a zároveň může sloužit jako nástroj pro jednodušší nalezení optima.
==== Primární a duální úloha ====
Nechť máme primární úlohu ve tvaru: %%\min\{\,c^T x \mid A x \ge b,\; x \ge 0\,\}%%
K ní přísluší duální úloha: %%\max\{\,b^T y \mid A^T y \le c,\; y \ge 0\,\}%%
* Vektory \(x\) a \(y\) jsou proměnné v primární a duální úloze.
* Matice a vektory jsou převrácené – omezení primalu se stávají cílovou funkcí dualu a naopak.
* Duální úloha je tzv. **reverzibilní úprava** primární – přechod mezi nimi je čistě formální.
==== Slabá dualita ====
* **Věta o slabé dualitě:**
* Pro každé přípustné řešení \(x\) primární úlohy a každé přípustné \(y\) duální úlohy platí: %%c^T x \ge b^T y%%❓
* Duální hodnota je tedy **dolní mez** primalu.
* Pokud se stane, že: %%c^T x = b^T y%%
* pro nějaké přípustné dvojice \((x^*, y^*)\), pak jsou **obě řešení optimální**.
==== Silná dualita ====
* **Věta o silné dualitě:**
* Pokud má primární úloha nebo duální úloha **optimální řešení**, pak:
* druhá úloha má také řešení,
* a platí: %%c^T x^* = b^T y^*%%❓
* Tato rovnost se označuje jako **certifikát optimality** – potvrzuje, že nalezené řešení je opravdu optimum.
* Ekvivalentně platí:
* Primal má optimum ⇔ dual má optimum ⇔ hodnoty jsou stejné.
==== Komplementarita ====
* **Komplementární podmínky:**
* Jsou splněny právě tehdy, když jsou obě řešení optimální:
* Pro každé \(i\): %%x_i > 0 \;\Rightarrow\; (A^T y)_i = c_i%%
* Pro každé \(j\): %%y_j > 0 \;\Rightarrow\; (A x)_j = b_j%%
* Obecně: %%(c_i - (A^T y)_i) \cdot x_i = 0,\quad ((A x)_j - b_j) \cdot y_j = 0%%❓
* Jinými slovy: **každá podmínka buď svazuje řešení (aktivní), nebo má nulový stínový dopad**.
==== Význam a využití ====
* Dualita v LP umožňuje:
* jednodušší konstrukci algoritmů (např. dual simplex),
* odhad kvality řešení primalu pomocí dualu (dolní/vrchní meze),
* výpočet **stínových cen** – jak moc se zlepší optimum, když uvolníme omezení,
* rozhodování o významu jednotlivých omezení a jejich dopadu na výsledek.
* V praxi se primal a duální řešení často hledají současně – např. v simplexové metodě se během výpočtu tvoří i informace o duálu.
===== 10. Konvexní funkce a konvexní optimalizace =====
Konvexní funkce tvoří základ moderní optimalizace – mají příznivé geometrické i analytické vlastnosti. Hledání minima konvexní funkce je jednodušší, protože **každé lokální minimum je zároveň globální minimum**.
==== Definice konvexní funkce ====
* Funkce \( f: \mathbb{R}^n \to \mathbb{R} \) je **konvexní**, pokud pro každé \( x, y \in \mathbb{R}^n \) a každé \( \lambda \in [0,1] \) platí: %%f(\lambda x + (1 - \lambda)y) \le \lambda f(x) + (1 - \lambda) f(y)%% ❓
* Funkce je **striktně konvexní**, pokud nerovnost je ostrá pro \(x \ne y\).
* Konvexita znamená, že graf funkce je „ohnutý směrem nahoru“.
==== Epigraf a subkontura ====
* **Epigraf** funkce \( f \): množina bodů nad grafem: %%\mathrm{epi}(f) = \{ (x,t) \in \mathbb{R}^n \times \mathbb{R} \mid f(x) \le t \}%% ❓
* **Subkontura (sublevel množina)** – množina všech bodů, kde funkce nepřesahuje danou hodnotu: %%\{x \in \mathbb{R}^n \mid f(x) \le \alpha \}%% ❓
==== Podmínky konvexity podle derivací ====
Pokud je \(f\) diferencovatelná:
* **1. derivace – gradientová podmínka:** Funkce \(f\) je konvexní ⇔ platí: %%f(y) \ge f(x) + \nabla f(x)^T (y - x)%% ❓
Pokud je \(f\) dvakrát diferencovatelná:
* **2. derivace – Hessova podmínka:** Funkce \(f\) je konvexní ⇔ její Hessova matice je pozitivně semidefinitní: %%\nabla^2 f(x) \succeq 0\quad \text{(pro všechna } x)%% ❓
==== Úloha konvexní optimalizace ====
* Obecná úloha konvexní optimalizace má tvar: %%\min f(x) \quad \text{za podmínek } x \in C%%
* kde:
* \( f: \mathbb{R}^n \to \mathbb{R} \) je konvexní funkce,
* \( C \subseteq \mathbb{R}^n \) je konvexní množina (např. množina omezení).
* Důležité vlastnosti:
* Pokud je funkce i množina omezení konvexní ⇒ **každé lokální minimum je globální**.
* Existují efektivní algoritmy (např. metoda vnitřního bodu, subgradienty, CVX solvery).
* Typické aplikace:
* Optimalizace ztrátové funkce v machine learningu (ridge, LASSO),
* Portfolio management (mean-variance model),
* Řízení systémů a model prediktivního řízení (MPC),
* Design sítí, rozpočtové plánování.