diff --git a/KMA NM/Zkouška/03. okruh.md b/KMA NM/Zkouška/03. okruh.md new file mode 100644 index 0000000..4901a93 --- /dev/null +++ b/KMA NM/Zkouška/03. okruh.md @@ -0,0 +1,117 @@ +**Přímé metody pro řešení soustav lineárních algebraických rovnic. Gaussova eliminační metoda. LU a Choleského rozklad. Existence a jednoznačnost trojúhelníkového rozkladu. Stabilita trojúhelníkového rozkladu. Přímé metody pro soustavy se speciální maticí.** + +### Soustava lineárních algebraických rovnic + +Metody +- přímé +- iterační + +Formulace +- Dána matice $A$ a vektor pravé strany $b$. Hledáme vektor $x$, aby platilo $Ax = b$. +- Předpokládáme, že $A$ je **regulární** (tj. soustava má jedno řešení). + +2 typy soustav +- soustavy s obecnou maticí + - přímé metody +- soustavy se speciální maticí (symetrická, řídká, ...) + - iterační nebo modifikovace přímých metod + +Cramerovo pravidlo +- metoda +- $x_{i} = \frac{\det(A_{i})}{\det (A)}$ +- nutno vypočítat $(n+1)$ determinantů + +Princip +- Soustavy $Ax = b$ a $TAx = Tb$, kde $T$ je regulární matice, jsou ekvivalentní. +- Touto transformací lze získat trojúhelníkovou soustavu ... $Ux = y, U = TA, y = Tb$ ... tu lze řešit zpětným chodem + +### Gausova eliminační metoda + +Přímý chod +- převedení matice na trojúhelníkový tvar sčítání řádku s násobkem jiného + - cílem vynulování sloupce pod diagonálou +- trojúhelníkovou soustavu řešíme zpětným chodem + +Efektivnost algoritmu GEM +- výpočet multiplikátoru + přímý chod + zpětný chod +- $\frac{1}{3}N^3 + N^2 - \frac{1}{3}N$, kde $N$ je řád matice $A$ + +Realizovatelnost GEM +- může se stát, že algoritmus bude v nějakých případech nucen při řádkových úpravách dělit nulou +- pro tyto případy normální GEM není realizovatelná a musíme použít GEM s pivotací + - je-li matice $A$ **ostře diagonálně dominatní**, pak je algoritmus **GEM realizovatelný** + - absolutní hodnota čísla na diagonále je ostře větší než součet abs. hodnot a ostatnách čísel v tomto řádku + - je-li matice $A$ **symetrická a pozitivně definitní**, pak je algoritmus **GEM realizovatelný** + - má všechna vlastní čísla kladná + +**Existence řešení** +- soustava $Ax = b$ má právě 1 řešení, když je $A$ regulární + - lineárně nezávislé řádky a sloupce + - $\det A \neq 0, \quad \forall \lambda \neq 0$ + +**GEM se sloupcovou pivotací** +- vždy vezmeme sloupec a najdeme v něm **největší absolutní hodnotu** a **prohodíme řádky** tak, aby **to číslo bylo na diagonále** (tím zajistíme, že nebudeme dělit nulou) +- nevýhodnou je prohledávání + - s postupující GEM se ale zrychluje - prohledáváme méně prvků +- řádková pivotace + - princip stejný, akorát je třeba zaměnit i příslušné složky řešení $x$ (prohození sloupců prohází složky řešení) +- GEM s pivotací je **realizovatelná pro libovolnou regulární matici** $A$ + +### Metoda LU-rozkladu + +**LU-rozklad** +- $A$ ... regulární matice řádu N + - lze rozložit na $A = LU$ +- $L$ ... dolní trojúhelníková matice řádu N +- $U$ ... horní trojúhelníková matice řádu N + +LU-rozklad **existuje**, pokud lze provést pivotaci tak, aby se eliminovaly nuly na diagonále. + +Jednoznačnost LU-rozkladu +- LU-rozklad **není jednoznačný**. Jednoznačnosti je možné dosáhnout tak, že si zvolíme diagonálu jedné z matic (např. do L dáme na diagonálu jedničky). +- Pokud je $A$ **regulární** a **všechny pivoty jsou nenulové**, tak existuje jednoznačný LU rozklad (jinak je potřeba provést pivotaci). + +**Řešení soustavy LU-metodou** +1. zadáno $A, b$, provedeme LU-rozklad: $A = LU$ +2. řešení trojúhelníkové soustavy: $Ly = b$ - hledám $y$ +3. řešení trojúhelníkové soustavy: $Ux = y$ - hledám $x$ + +**Využití LU-metody** +- když počítáme více soustav, kde se mění pouze pravá strana $b$ + - stačí provést pouze jeden LU-rozklad (náročný) a poté už jen několikrát opakovat řešení trojúhelníkových soustav (jednoduchý výpočet - výhoda oproti GEM) +- řešení maticových soustav $AX = B$ +- nedourčené soustavy - soustavy se singulární maticí + - máme méně rovnic než neznámých (dovyrobíme si další řádky) + +**Choleského rozklad** +- speciální případ LU-rozkladu pro **pozitivně definitní matice** +- $A = L\cdot L^T$ +- pozitivně definitní matice má vždy Chol. rozklad +- rozklad je jednoznačný, pokud jsou diagonální prvky $L$ kladné + +Stabilita LU-rozkladu +- obecně stabilní, pokud se provádí s pivotací (permutací řádků) +- bez pivotace může být nestabilní, pokud má matice $A$ velmi malé nebo velké prvky +- Chol. rozklad je numericky stabilní pro pozitivně definitní matice + +### Přímé metody pro soustavy se speciální maticí + +Symetrická matice +- používáme symetrickou verzi GEM a LU-rozkladu + - $A = LDL^T$ - $D$ je diagonální matice + - rozklad zachovává symetrii původní matice + - efektivnější, rychlejší a stabilnější než obecná LU-metoda +- symetrická + pozitivně definitní + - Choleského rozklad + +Pásová matice +- řídká matice s **nenulovými prvky kolem diagonály** +- **zachovávají se pozice nul** (to v obecném případě neplatí) +- pásová + symetrická + pozitivně definitní + - Choleského rozklad + +3-diagonální matice +- pásová matice, kde jsou nenulové prvky na 3 diagonálách +- metoda faktorizace + - $A \cdot Y = F$ ... soustava $n+1$ lineárních algebraických rovnic + - přímý chod + zpětný chod diff --git a/KMA NM/Zkouška/04. okruh.md b/KMA NM/Zkouška/04. okruh.md new file mode 100644 index 0000000..89df726 --- /dev/null +++ b/KMA NM/Zkouška/04. okruh.md @@ -0,0 +1,62 @@ +**Stacionární iterační metody pro soustavy lineárních algebraických rovnic. Jacobiho a Gaussova-Seidelova metoda, SOR metoda. Nutná a postačující podmínka konvergence iterační metody, postačující podmínka konvergence iterační metody.** + +### Iterační metody + +- používány pro řídké matice + +Obecný zápis +- $Ax - b = 0 \leftrightarrow F(x) = 0$ přepíšeme na tvar $x = Hx+g \leftrightarrow x = \Phi(x)$ +- iterační formule ... $x^{(k+1)} = H \cdot x^{(k)} + g$ + - $H$ rozhoduje o kvalitě metody +- počáteční aproximace $x^{(0)}$, zastavovací podmínka $\Vert x^{(k)}-c^{(k-1)}\Vert < \epsilon$ + +**Jacobiho metoda** +- z $i$-té rovnice vyjádřím $i$-tou složku vektoru $x$ + - $i$-tá rovnice ... $a_{i1}x_{1} + a_{i2}x_{2} + \dots a_{in}x_{n} = b_{i}$ +- iterační formule + - $\displaystyle x_{i}^{(k+1)} = \frac{1}{a_{ii}}\left( b_{i} - \sum^n_{j=1; j\neq i} a_{ij}x_{j}^{(k)} \right)$ pro $a_{ii} \neq 0$ + - $H$ ... řádky jsou jednotlivá vyjádření $x_{i}$ + - $g$ ... sestavený z členů bez $x$ ve vyjádření $x_{i}$ + +**Gaussova-Seidelova metoda** +- stejný princip jako u Jacobihovy metody, ale pokud při výpočtu $(k+1)$-iterace již známe $(k+1)$ iteraci u některých složek, tak ji použijeme +- iterační formule + - $\displaystyle x_{i}^{(k+1)} = \frac{1}{a_{ii}}\left( b_{i} - \sum^{i-1}_{j=1} a_{ij}x_{j}^{(k+1)} - \sum^{n}_{j=i+1} a_{ij} x_{j}^{(k) }\right)$ + +**SOR metoda** +- princip + - vychází z Gauss-Seidelovy metody + - vyjádříme $(k+1)$-iteraci pomocí $k$-té iterace a změny ... $x_{i}^{(k+1)} = x_{i}^{(k)} + r_{i}^{(k)}$ + - idea: k urychlení nepřičteme změnu $r_{i}^{(k)}$ ale její násobek $\omega\cdot r_{i}^{(k)}$ +- iterační formule + - $\displaystyle x_{i}^{(k+1)} = \omega\cdot x_{i,GS}^{(k+1)} + (1-\omega)x_{i}^{(k)}$ + - lineární kombinace $(k+1)$-iterace GS-metody a $k$-té iterace metody SOR +- volba $\omega$ + - musíme si zvolit parametr $\omega$ + - tento parametr může metodu zhoršit či vylepšit oproti GS + - vzorec, který (ne vždy) dokáže vypočítat optimální $\omega$ + - $\displaystyle\omega_\text{opt} = \frac{2}{1 + \sqrt{ 1- \rho(H_{J}) }}$ + - $\rho(H_{J})$ ... spektrální poloměr Jacobiho matice $H$ + +### Konvergence iteračních metod + +$\displaystyle\lim_{ x \to \infty } x^{(k)} = x^*$ + +Nutná a postačující podmínka konvergence +- $\rho(H) = \max|\lambda_{i}(H)| < 1 \Longleftrightarrow$ metoda konverguje $\Longleftrightarrow$ úloha je stabilní + - $\rho(H)$ ... spektrální poloměr matice $H$ = maximální vl. číslo matice $H$ v abs. hodnotě +- čím blíž bude spektrální poloměr 1, tím bude metoda pomalejší + - snaha, dostat ho co nejvíce k 0 + +Postačující podmínka konvergence +- $\Vert H\Vert \leq q < 1 \implies$ metoda je konvergentní + - multiplikativní maticová norma: $\Vert A\cdot B\Vert \leq \Vert A\Vert\cdot\Vert B\Vert$ +- podmínka pro konvergenci SOR + - $\rho(H_{SOR}) \geq |\omega-1| \quad \forall \omega \in R$ + +Konvergenční věty +- podmínky pro $H$ jsou nepraktické, $H$ je těžko spočitatelná +- $A$ je ostře diagonálně dominantní $\implies$ konverguje Jacobiho i GS metoda pro libovolnou volbu $x_{0}$ +- $A$ je symetrická a poz. definitní $\implies$ konverguje GS metoda +- SOR metoda konverguje $\implies 0 < \omega < 2$ +- $A$ je symetrická a poz. definitní, $0 < \omega < 2 \implies$ SOR metoda konverguje diff --git a/KMA NM/Zkouška/06. okruh.md b/KMA NM/Zkouška/06. okruh.md new file mode 100644 index 0000000..08bea0d --- /dev/null +++ b/KMA NM/Zkouška/06. okruh.md @@ -0,0 +1,88 @@ +**Numerické metody pro řešení úloh na vlastní čísla. ƒČástečný problém a úplný problém. Mocninná metoda a metoda Rayleighova podílu. Ortogonální transformace. Singulární rozklad matice. Využití pro rešení obecných soustav lineárních algebraických rovnic.** + +### Vlastní čísla + +- $Av = \lambda x$ + - $\lambda$ ... vlastní číslo + - $x$ ... vlastní vektor +- charakteristická rovnice ... $\det(A - \lambda I) = 0$ +- spektrální matice ... $A = \text{diag}(\lambda_{1}, \lambda_{2}, \dots, \lambda_{n})$ + +Typy problémů +- **úplný problém**: úlohou je najít všechna vl. čísla +- **částečný problém**: úlohou je najít pouze některá vl. čísla (obvykle s největší absolutní hodnotou) + +### Mocninná metoda + +Řeší částečný problém - vlastní číslo matice $A$ s největší absolutní hodnotou. + +**Předpoklady** +- $A$ má $n$ LN vlastních vektorů +- existuje právě jedno dominantní vlastní číslo +- vl. čísla lze seřadit: $|\lambda_{1}| > |\lambda_{2}| \geq |\lambda_{3}| \geq \dots \geq |\lambda_{n}|$ + +**Algoritmus** +- **vstup**: matice $A$ a sloupcový vektor $y^{(0)}$ (LK vlastních vektorů) +- **zastavovací podmínka**: $|\lambda^{(k+1)} - \lambda^{(k)}| < \epsilon$ +1. pomocí iterační formule $y^{(k+1)} = A\cdot y^{(k)}$ počítáme další $y^{(k+1)}$ pro $k = 0, 1, \dots$ +2. z vektoru $y^{(k+1)}$ vybereme index $i$, kde je absolutní hodnota $|y^{(k+1)}_{i}|$ největší +3. vypočítáme přibližné vl. číslo $\displaystyle\lambda^{(k+1)} = \frac{y^{(k+1)}_{i}}{y^{(k)}_{i}}$ + - použijeme hodnoty na $i$-tém indexu v aktuálním a předchozím vektoru $y$ +4. opakujeme, pokud neplatí zastavovací podmínka + +**Poznámky** +- kvůli přetečení/podtečení je vhodné vektor $y^{(k+1)}$ v každém kroku normovat + - $\displaystyle y^{(k)} = \frac{y^{(k)}}{\Vert y^{(k)}\Vert}$ + +### Metoda Rayleighova podílu + +Tato metoda je velice podobná mocninné metodě, ale pro výpočet lambdy použijeme **jiný vzorec** níže. + +$\displaystyle\lambda_{k} = \frac{y^{(k-1)^T} \cdot y^{(k)}}{y^{(k-1)^T} \cdot y^{(k-1)}}$ + +**Předpoklady** +- stejné jako u mocninné metody +- **navíc**: matice $A$ je **blízce symetrická** (hodnoty jsou téměř symetrické) + - vlastní vektory jsou díky tomu ortonormální + - $v_{i}^Tv_{j} = 0, i\neq j \quad v_{i}^Tv_{i} = 1$ + +**Poznámky** +- konverguje k nule zhruba dvakrát rychleji + +### Ortogonální transformace + +**Podobnost matic** +- matice $A$ a $B$ jsou si podobné, pokud existuje $P$, pro které platí $P^{-1}AP = B$ nebo $A = PBP^{-1}$ +- podobné matice mají **stejná vlastní čísla** + +**Princip** +- konstruujeme posloupnost vzájemně podobných matic, která konverguje k matici, jejíž vlastní čísla se dají snadno určit +- posloupnost vzájemně podobných matic: $A_{k+1} = Q_{k}^TA_{k}Q_{k}, k = 0,1,2,\dots$ + +**Metoda QU-rozkladu** +- používáme pro obecnou matici +- $A = QU$ + - $Q$ ... ortogonální matice - $QQ^T = I$, tedy $Q^T = Q^{-1}$ + - $U$ ... horní trojúhelníková matice +- $B = UQ$ + - $U = Q^{-1}A \implies B = Q^{-1}AQ = Q^{T}AQ$ + +Příkladem ortogonální matice je matice rovinné rotace o úhel $\alpha$. +- pro dostatečně velké $k$ je $A^k$ horní trojúhelníková matice + +$$ +\begin{bmatrix} +\cos \alpha & -\sin \alpha \\ +\sin \alpha & \cos \alpha +\end{bmatrix} +$$ + +**Metoda Jacobiovy diagonalizace** +- používáme, když $A$ ... reálná symetrická matice +- $\implies \exists$ ortogonální matice $Q$ taková, že $Q^TAQ = A$ +- $A$ ... spektrální matice = matice s vlastními čísly na diagonále +- **postupné nulování** + - vybereme prvek mimo diagonálu a ten vynulujeme + - poté vybereme další, ale zase se nám odnuluje ten původní + - při iteračním pojetí ale budou všechny prvky mimo diagonálu konvergovat k nulám +