Sylabus V rámci PNV budeme řešit konkrétní úlohy a to z následujících oblastí: Nelineární úlohy Řešení nelineárních rovnic Numerická integrace Lineární úlohy Řešení soustav lineárních rovnic Metoda nejmenších čtverců pro lineární úlohy Sumace obecné a s korekcí Numerické výpočty v C a C++ Optimalizace výrazů, optimalizace při překladu
Písemka - termíny Poslední přednáška bude za týden (9.5.) Do 16.5. dodám na Internet a k Marečkovi všechny materiály + vzorovou písemku + opravím zbylé DCV Vypsala jsem tyto termíny: 24.5. v 16:30 7.6. v 16:30 14.6. v 16:30 Písemka bude trvat 2 hodiny, je povolena kalkulačka
Minimalizace součtu čtverců - shrnutí Optimalizuje teoretický model tak, aby co nejvíce odpovídal naměřeným datům. => Minimalizuje odchylku modelu od naměřených hodnot. Využití: Všude, kde máme co do činění s analýzou nějakého přírodního nebo technického systému.
Minimalizace součtu čtverců - shrnutí II Máme naměřená data: (ai, bi), i = 1, ..., m kde: ai Î Rk bod měření bi hodnota, naměřená v bodě ai Chceme vytvořit matematický model M: Rk+n -> R, který je závislý na n volných parametrech x1, x2, ..., xn a pro který požadujeme, aby: M(ai, x) » bi i = 1, ..., m => Musíme z naměřených hodnot dopočítat hodnoty parametrů JAK?: Pomocí minimalizace součtu čtverců
Lineární úloha nejmenších čtverců - shrnutí Model M(ai, x) je lineární vzhledem k hledaným parametrům a lze tedy zapsat takto: M(ai, x) = f1(ai).x1 + ... + fn(ai).xn bi kde: i = 1, ..., m m je počet naměřených bodů (m ≥ n) f1, ..., fn jsou lineární funkce Pro odchylku modelu od reálného výsledku měření platí: => ri(x) = M(ai, x) - bi = f1(ai).x1 + ... + fn(ai).xn - bi Hledáme takové x, aby suma čtverců odchylek ri(xi) byla minimální:
Lineární úloha nejmenších čtverců - shrnutí II Metody řešení problému: Využití minimalizace Využití matice lineárních kombinací Řešení rovnice ATAx = ATb Vypočítat x přímo z této rovnice. Využít Choleského faktorizaci. Využít QR faktorizaci Využít SVD (singular value decomposition)
Řešení rovnice ATAx = ATb - využití Choleského faktorizace - obecně Pokud je matice M pozitivně definitní, pak pro ni může být vytvořena matice R tak, aby platilo: M = RT.R přičemž matice R je horní trojúhelníková matice. Proces vytvoření matice R se nazývá Choleského faktorizace matice M.
Řešení rovnice ATAx = ATb - využití Choleského faktorizace – příklad 1 Proveďte Choleského faktorizaci matice M: Řešení: => m11 = r112 => r11 = 5 => m21 = r11.r21 => r21 = m21/r11 = 15/5 = 3 …
Řešení rovnice ATAx = ATb - využití Choleského faktorizace – obecně II Algoritmus: Vypočítej matice C a c: C = AT.A; c = AT.b Poznámka: Matice A obsahuje 1 sloupec navíc (= první sloupec, tvořený čísly 1). Najdi Cholského faktorizaci matice C: C = RT.R Získej x řešením rovnic: RT.y = c (odtud získej y) Rx = y (odtud získej x)
Řešení rovnice ATAx = ATb - využití Choleského faktorizace – příklad 2 Měřením jsme získali 3 body: (2, 0, -1); (2, 1,-2) a (1, -1, 1) (m = 3) Chceme vytvořit model: M(si, (g, h, e)) = g.si1 + h.si2 + e Di Problém lze řešit pomocí rovnice x = (AT.A)-1.ATb a Chol. fakt.:
Řešení rovnice ATAx = ATb - využití Choleského faktorizace – příklad 2 (2) Měřením jsme získali 3 body: (2, 0, -1); (2, 1,-2) a (1, -1, 1) (m = 3) Chceme vytvořit model: M(si, (g, h, e)) = g.si1 + h.si2 + e Di Problém lze řešit pomocí rovnice x = (AT.A)-1.ATb a Chol. fakt.: => h = -1; g = -1; e = 1 => f(si1, si2) = -si1 - si2 + 1
Řešení rovnice ATAx = ATb - využití Choleského faktorizace – příklad 2 (2) Měřením jsme získali 3 body: (2, 0, -1); (2, 1,-2) a (1, -1, 1) (m = 3) Chceme vytvořit model: M(si, (g, h, e)) = g.si1 + h.si2 + e Di Problém lze řešit pomocí rovnice x = (AT.A)-1.ATb a Chol. fakt.:
Řešení rovnice ATAx = ATb - využití Choleského faktorizace – zhodnocení Výhoda: Nižší časová složitost než u výpočtu přímo z rovnice (viz d.cv.) Nevýhody: Algoritmus není příliš numericky stabilní: float(ATA) ≠ (ATA) hodnota může být velká, pokud je velké x* přesné řešení, odhad navíc nelze určit, jak přesné je řešení
Domácí úkol Určete (+zdůvodněte) časovou složitost řešení úlohy nejmenších čtverců pro metodu: a) Využití matice lineárních kombinací (to máme už od minule) b) Přímé řešení rovnice ATAx = ATb c) Řešení rovnice ATAx = ATb pomocí Choleského faktorizace Snažte se určit složitost co nejpřesněji (vzhledem k m a n) Do 16.5.2005 Každá část 2%
Řešení rovnice ATAx = ATb - využití QR faktorizace - obecně Pokud má matice M Rm x n, kde m ≥ n, hodnost n, pak pro ni mohou být vytvořeny matice R a Q tak, aby platilo: M = Q.R kde: R Rn x n je horní trojúhelníková matice Q Rm x n je ortogonální matice
Řešení rovnice ATAx = ATb - využití QR faktorizace – obecně 2 Algoritmus: Vypočítej matice Q a R: A = Q.R Vypočítej d: d = QT.b Získej x řešením rovnice: Rx = d
Řešení rovnice ATAx = ATb - využití QR faktorizace – příklad Měřením jsme získali 3 body: (3, -6, -1); (4, -8,7) a (0, 1, 2) (m = 3) Chceme vytvořit model: M(ti, (e1, e2, e3)) = e1.ti1 + e2.ti2 + e3 Vi Problém lze řešit pomocí rovnice x = (AT.A)-1.ATb a QR fakt.:
Řešení rovnice ATAx = ATb - využití QR faktorizace – příklad (2) Měřením jsme získali 3 body: (3, -6, -1); (4, -8,7) a (0, 1, 2) (m = 3) Chceme vytvořit model: M(ti, (e1, e2, e3)) = e1.ti1 + e2.ti2 + e3 Vi Problém lze řešit pomocí rovnice x = (AT.A)-1.ATb a QR fakt.:
Řešení rovnice ATAx = ATb - využití QR faktorizace – příklad (2) Měřením jsme získali 3 body: (3, -6, -1); (4, -8,7) a (0, 1, 2) (m = 3) Chceme vytvořit model: M(ti, (e1, e2, e3)) = e1.ti1 + e2.ti2 + e3 Vi Problém lze řešit pomocí rovnice x = (AT.A)-1.ATb a QR fakt.:
Řešení rovnice ATAx = ATb - využití QR faktorizace – zhodnocení Výhody: Časová složitost nižší než u výpočtu přímo z rovnice (viz d.cv.) Větší numerická stabilita než u Choleského faktorizace. Nevýhody: Pomalejší než u Choleského faktorizace. Složitější implementace.
Řešení rovnice ATAx = ATb - využití SVD (single value decomposition) - obecně Nechť M Rm x n je matice řádu n, pak existují ortogonální matice U Rm x n a V Rm x n tak, že platí: M = U..VT kde 1 ≥ 2 ≥ … r > 0. Tento rozklad je určen jednoznačně.
Řešení rovnice ATAx = ATb - využití SVD (single value decomposition) – obecně 2 Pro x potom platí následující: kde:
Řešení rovnice ATAx = ATb - využití SVD (single value decomposition) – zhodnocení Výhody: Časová složitost nižší než u výpočtu přímo z rovnice (viz d.cv.) Větší numerická stabilita než u Choleského faktorizace. Nevýhody: Složitější implementace.
Sumace - obecně Úkol: Vypočítat hodnotu výrazu Postup: Rekursivní sumace Párová sumace Sumace s vkládáním
Sumace - rekursivní sumace Vstup: posloupnost čísel x1, …, xn Algoritmus rekursivní sumace: suma = 0 for (i=1; i<=n; i++) suma = suma + xi
Sumace - párová sumace Vstup: posloupnost čísel x1, …, xn Algoritmus párové sumace: Krok 1) xi(1) = x2i-1 + x2i Pokud je n liché, pak Krok j) xi(j+1) = x2i-1(j) + x2i (j) Probíhá v krocích. Je možno realizovat paralelně nebo pomocí vektorů.
Sumace - sumace vkládáním Vstup: posloupnost čísel x1, …, xn Algoritmus párové sumace: Čísla xi setřídíme: Opakuj: (a) t = x1 + x2 (b) zařaď t do posloupnosti x3, ...xn
Sumace - zobecnění předchozích 3 algoritmů Vstup: posloupnost čísel x1, …, xn Obecný algoritmus: Nechť S = {x1,…,xn} WHILE |S| > 1 DO Odstraň z S vybraná čísla x a y. Přidej x + y do S. DONE Na konci získáme jednoprvkovou množinu S, obsahující číslo, které je sumou posloupnosti x1, …, xn
Sumace - zhodnocení předchozích 3 algoritmů Chyba kde: je odhad Sn, získaný uvedeným algoritmem. je definována takto: kde: v i-tém běhu cyklu přičemž u je relativní zaokrouhlovací chyba elementárních operací => Pravidlo: Provádějte sčítání tak, aby se minimalizovaly velikosti => Lépe sčítat čísla vzestupně k jejich velikosti než sestupně.
Sumace - sumace s korekcí Algoritmus: s = 0; e = 0 for (i=1; i<=n; i++) { tmp = s y = xi + e (i-tý sčítanec + oprava chyby z minulého cyklu) s = s + y e = (tmp – s) + y (odhad chyby ve výrazu s+y) } Toto se může výrazně lišit od –y (speciálně pokud je s daleko větší než y)