3. Ortogonální transformace a QR rozklady Petr Tichý 10. října 2012 1
Úvod Unitární (ortogonální) transformace, Gram-Schmidtova ortogonalizace Příklad Schurovy věty unitární transformace nezvětšují chyby ve vstupních datech. Tato kapitola: základními dva typy unitárních transformací Givensovy rotace, Householderovy reflexe. Využití: (numericky stabilní) transformace matice na matici s předem zvolenou strukturou. Výpočet QR rozkladu široké použití. Gram-Schmidtova ortogonalizace, výpočetní náročnost, numerická stabilita. 3
Ortogonální projekce Libovolný x R n lze rozložit na součet ortogonálních vektorů x = x q + y tak, že x q leží v předem daném směru q a y, x q = 0. e j x x q q y e i 5
Ortogonální projekce vektoru x do směru q Nechť x R n, hledáme rozklad vektoru x = x q + y takový, že vektor x q leží v předem daném směru q a y q. Bez újmy na obecnosti q = 1. Potom zřejmě platí x q = x q q. Z podmínky kolmosti y = x x q na směrový vektor q plyne x x q, q = 0 x, q = x q, q = x q q, q = x q a vektor x q můžeme psát ve tvaru x q = x q q = x, q q. x q nazveme ortogonální projekcí x do prostoru span{q}. 6
Ortogonální projekce vektoru zapsaná pomocí matice Skalární součin budeme zapisovat ve tvaru maticového součinu a, b = b T a resp. a, b = b a. Výše uvedený vztah můžeme přepsat pomocí vnějšího součinu x q = x, q q = (q T x)q = q(q T x) = (qq T ) x P q x, kde P q qq T je čtvercová symetrická matice řádu n. P q : x P q x span{q} přičemž x P q x span{q}. P q projektuje x do prostoru generovaného bází {q}. 7
Ortogonální projekce vektoru do podprostoru Uvažujme ortonormální soubor vektorů {q 1,..., q m } R n, Q span{q 1,..., q m }, Q [q 1,..., q m ] R n m. Úloha: Dán x R n, hledáme rozklad x na složky x = x Q + y tak, že x Q Q a y Q, t.j. Q T y = 0. x Q nazveme ortogonální projekcí x do Q. q i jsou vzájemně ortogonální x Q lze vyjádřit jako součet složek (projekcí) do jednotlivých směrů q i, m x Q = (q i qi T )x = (QQ T ) x P Q x. i=1 P Q = QQ T je čtvercová symetrická matice hodnosti m, projektuje libovolný x do prostoru Q = span{q 1,..., q m }. 8
Ortogonální projektory Ortogonální projektor je lineární operátor P (v našem případě čtvercová matice) symetrický a idempotentní, tedy platí P T = P, P 2 = P. Matice P Q je ortogonálním projektorem. Symetrie matice P Q je zřejmá, idempotence plyne ze vztahu P 2 Q = P QP Q = Q(Q T Q)Q T = QQ T = P Q. Pro vektor x x Q platí kde x x Q = x (QQ T ) x = (I QQ T ) x Π Q x, Π Q I QQ T = I P Q. Π Q je ortogonálním projektorem do prostoru Q (je symetrický a idempotentní), nazývá se projektor komplementární k projektoru P Q. 9
Givensovy rotace vr n Úloha vr 2 Chceme sestrojit matici G(ϕ) R 2 2, která realizuje pootočení libovolného vektoru x o úhel ϕ proti směru hodinových ručiček. Zapíšeme-li vektor x v bázi {e 1, e 2 }, x = [ ξ1 ξ 2 ] = ξ 1 [ 1 0 ] + ξ 2 [ 0 1 je možné vektor G(ϕ)x vyjádřit ve tvaru ] = ξ 1 e 1 + ξ 2 e 2, G(ϕ)x = ξ 1 (G(ϕ) e 1 ) + ξ 2 (G(ϕ) e 2 ). Otáčí-li G(ϕ) bázové vektory e 1 a e 2 o úhel ϕ, otáčí i libovolný vektor x o úhel ϕ. 11
Rotace jednotkových vektorů o úhel ϕ 0 12
Matice Givensovy rotace vr 2 G(ϕ) [ 1 0 ] = [ cos ϕ sin ϕ ], G(ϕ) [ 0 1 ] = [ sin ϕ cos ϕ ], tj. [ cos ϕ sin ϕ G(ϕ) = sin ϕ cos ϕ ] Jsou-li v R 2 dány vektory x a y, x = y 0, svírající úhel ϕ, lze y získat pootočením x proti směru hodinových ručiček o úhel ϕ, tj. platí y = G(ϕ)x. Matice G(ϕ) se nazývá matice Givensovy rotace. 13
Matice Givensovy rotace vr n Elementární Givensova rotace Uvažujme nyní prostor R n. Chceme-li provést rotaci v rovině dané dvojicí jednotkových vektorů {e i, e j }, i < j, o úhel ϕ ve směru od e i k e j, pak má matice příslušné rotace následující tvar. 1... 1 cos ϕ sin ϕ 1 G i,j (ϕ) =... 1 sin ϕ cos ϕ 1... 1 14
Matice Givensovy rotace vr n Vlastnosti je ortonormální, det(g i,j (ϕ)) = 1 (cvičení). G i,j (ϕ)x modifikuje pouze i-tý a j-tý prvek vektoru x = [ξ 1,..., ξ n ] T, G i,j (ϕ) x = ξ 1. ξ i cos ϕ ξ j sin ϕ. ξ i sin ϕ + ξ j cos ϕ. ξ n i-tý řádek j-tý řádek. 15
Nulování prvků vektoru pomocí Givensových rotací Nulování vr 2, možnost 1 Chceme vynulovat druhý prvek daného vektoru x = [ξ 1, ξ 2 ] T R 2, tj. požadujeme, aby platilo [ ] [ ] ξ1 ξ y = G(ϕ) x = G(ϕ) = 1 2 + ξ2 2. ξ 2 0 Ze vztahu pro druhý prvek dostaneme ξ 1 sin ϕ + ξ 2 cos ϕ = 0 sin ϕ = ξ 2 ξ 2 1 + ξ2 2, cos ϕ = ξ 1 ξ 2 1 + ξ2 2. 16
Nulování prvků vektoru pomocí Givensových rotací Nulování vr 2, možnost 2 Požadavek Potom je y = G(ϕ) x = [ ξ1 2 + ξ2 2 0 ]. sin ϕ = ξ 2 ξ 2 1 + ξ2 2 a cos ϕ = ξ 1 ξ 2 1 + ξ2 2. 17
Nulování prvků vektoru pomocí Givensových rotací Nulování vr n x = [ξ 1,..., ξ n ] T R n opakovaně aplikuleme elementární Givensovy rotace, postupně vynulujeme n 1 prvků vektoru. Požadavek: y má být násobkem jednotkového vektoru e 1 Postupně vynulujeme prvky na pozicích n, n 1,..., 2 (volíme roviny rotace postupně jako span{e 1, e n }, span{e 1, e n 1 },..., span{e 1, e 2 }) Celý proces nulování lze schematicky zapsat jako x =.. 0... 0. 0 ± x 0. 0 = y. 18
Nulování prvků vektoru pomocí Givensových rotací Nulování vr n Označíme-li jednotlivé elementární Givensovy rotace jako G 1,2,..., G 1,n 1, G 1,n, potom y = Γx, kde Γ G 1,2... G 1,n 1 G 1,n. Matici Γ budeme nazývat složenou Givensovou rotací. Prvky nemusíme nutně nulovat v pořadí, které jsme naznačili. Násobení elementárních (tedy i složených) Givensových rotací není obecně komutativní (cvičení), Změníme-li pořadí nulování prvků, dostaneme obecně jinou složenou Givensovu rotaci Γ, pro kterou rovněž platí Γx = [± x, 0,..., 0] T. 19
Nulování prvků vektoru pomocí Householderových reflexí Nulování vr n Druhá základní unitární transformace je Householderova reflexe (zrcadlení, odraz). Úloha: Nechť je v R n dána nadrovina dimenze n 1, kterou popíšeme jejím normálovým vektorem q, q = 1, a nechť je dán vektor x R n. H(q) {z R n : z q}, Cíl: nalézt zrcadlový obraz vektoru x podle nadroviny H(q) (nadrovinu H(q) nazveme nadrovinou zrcadlení). 21
Zrcadlení x q x 0 q x x q y = x 2x q Vektor x můžeme rozložit na složku x q = (qq T ) x ležící ve směru normálového vektoru a na složku (x x q ) ortogonální na q, tedy na složku ležící v dané nadrovině. 22
Matice Householderovy reflexe y = (x x q ) x q = x 2x q = (I 2qq T ) x H(q) x Nechť q R n a q = 1. Pak matici H(q) = I 2qq T R n n nazýváme maticí Householderovy reflexe vzhledem k nadrovině H(q) definované normálovým vektorem q. H(q) je ortonormální a symetrická a platí H 2 (q) = I. Dále platí det(h(q)) = 1 (cvičení). 23
Zrcadlení x na y pomocí Householderovy reflexe Úloha: Dány vektory x a y stejné délky, nalézt Householderovu reflexi, která realizuje zrcadlení vektoru x na vektor y (a naopak). Zrcadlení x na ±y vr n Nechť jsou dány dva různé vektory x R n a y R n, x = y, a nechť q 1 x y x y, q 2 x + y x + y. Potom H(q 1 )x = y, H(q 2 )x = y. Důkaz: Vektor x y je kolmý k nadrovině zrcadlení vektoru x na vektor y. Podobně, vektor x + y je kolmý k nadrovině zrcadlení vektoru x na vektor y. 24
Nulování prvků vektoru pomocí Householderových reflexí Householderovy reflexe umožňují eliminovat více prvků jedním zrcadlením. Je-li dán vektor x R n a chceme-li nalézt Householderovu reflexi H takovou, že Hx = ± x e 1, pak stačí za y dosadit vektor ± x e 1 a definovat příslušné normálové vektory, Potom platí q 1 = x x e 1 x x e 1, q 2 = x + x e 1 x + x e 1. H(q 1 )x = x e 1, H(q 2 )x = x e 1. Je lepší zvolit q 1 nebo q 2? 25
Nulování prvků vektoru pomocí Householderových reflexí Volba vektoru q Nechť x = [ξ 1,..., ξ n ] T. Pokud je ξ 1 kladný a blízký k x, potom při odečítání x x e 1 může dojít k vyrušení platných číslic a kvůli dělení malou normou k relativnímu zvětšení chyby vypočteného vektoru ve srovnání s chybou obsaženou v původním vektoru x. Totéž se může stát v případě ξ 1 < 0 při výpočtu x + x e 1. Z důvodů numerické stability je vhodné použít k nulování vektoru x normálový vektor q = x + sgn(ξ 1) x e 1 x + sgn(ξ 1 ) x e 1. 26
Givensovy rotace a Householderovy reflexe v komplexním oboru Analogická definice, jde o unitární matice. Ztrácejí obecně geometrický význam rotace a zrcadlení. I přesto je lze použít k nulování prvků vektorů. Příklad. Matice Householderovy reflexe: H(q) I 2qq C n n, q = 1. Uvažujme x = [ξ 1,..., ξ n ] T C n. Prvek ξ 1 zapišme ve tvaru ξ 1 = ξ 1 e iα, 0 α < 2π. Potom pro matici H(q) určenou normálovým vektorem platí q = x + eiα x e 1 x + e iα x e 1 H(q)x = e iα x e 1. 27
QR rozklad Nechť A C n m je obecně obdélníková matice. Rozklad tvaru A = QR, kde Q je matice s ortonormálními sloupci (Q Q = I) a R má všechny prvky pod hlavní diagonálou nulové, nazýváme QR rozkladem matice A. Pro n > m může QR rozklad vypadat schematicky jako A Q R = kde Q C n n a R C n m. 0, 29
Vynecháním posledních n m nulových řádků matice R a posledních n m sloupců matice Q dostaneme rozklad tvaru A = Q R 0, kde Q C n m a R C m m. Tomuto QR rozkladu, jehož uložení vyžaduje méně paměťového místa než v prvním případě, se říká ekonomický QR rozklad. Pro n m má QR rozklad, schematicky, tvar A Q R = kde Q C n n a R C n m. 0, 30
Příklady použití QR rozkladu Problém Ax = b, kde A C n n je regulární matice. Ax = b QRx = b, QRx = QQ b, Rx = Q b, přičemž soustava s trojúhelníkovou maticí je snadno řešitelná. Jiná možnost řešení: LU rozklad matice A - obecně levnější, použití QR rozkladu je numericky stabilnější. V případě rozsáhlých úloh s řídkou maticí A je však QR rozklad prakticky nepoužitelný (požadavek ortogonality sloupců matice Q vede velmi rychle ke ztrátě řídkosti). QR rozklad je standardním nástrojem pro řešení problémů nejmenších čtverců. Algoritmů pro výpočet QR rozkladu je několik. 31
QR rozklad užitím Givensových rotací I A C n m, A = [a 1,..., a m ]. Cíl: vynulování všech prvků pod hlavní diagonálou za použití Givensových rotací, získáme Givensův QR rozklad. Symbolem Γ 1 označíme složenou Givensovu rotaci, která realizuje transformaci a 1,1 r 1,1 a 2,1 0 a 1 =. a n,1. 0 = Γ 1a 1 r 1. 32
QR rozklad užitím Givensových rotací II Aplikujeme-li Γ 1 na A, dostaneme (r 1,1 = 0 a 1 = 0) 0 A = 0 = Γ 1 A A (1), 0 0 Nyní nulujeme poddiagonální prvky druhého sloupce matice A (1) = [r 1, a (1) 2,..., a(1) m ], aplikujeme n 2 rotací, a (1) 1,2 a (1) a (1) 1,2 2,2 r 2,2 a (1) a (1) 0 3,2 2 = = Γ 2 a (1) 2 r 2.. a (1) n,2.. 0 33
QR rozklad užitím Givensových rotací III Aplikací složené rotace Γ 2 na matici A (1) = Γ 1 A dostaneme A (1) = 0 0 0 0 0 0 0 0 0 0 0 = Γ 2 Γ 1 A A (2). V k-tém kroku, k < min{m, n}, konstruujeme složenou rotaci tak, aby nulovala n k poddiagonálních prvků sloupce a (k 1) k. Příslušná složená rotace Γ k je blokově diagonální se dvěma bloky, kde první blok je jednotková matice řádu k 1. r k,k = 0 je-li k-tý sloupec matice A lineární kombinací předchozích k 1 sloupců matice A (cvičení). 34
QR rozklad užitím Givensových rotací IV Poslední transformační maticí Γ m 1 pro n > m resp. Γ n 1 pro n m Případ n > m, platí 0 A (m 2) = 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 A (m 1) = Γ m 1... Γ 1 A. = A (m 1) R. Γ i jsou unitární součin je také unitární matice. Označíme-li Q Γ 1 Γ 2... Γ m 1, platí A = QR. 35
Existence a jednoznačnost QR rozkladu Existence Z konstrukce QR rozkladu plyne, že matice Q je čtvercová matice řádu n a matice R je stejných rozměrů jako matice A s nulovými prvky pod hlavní diagonálou. Dokázali jsme existenci QR rozkladu, kde matice Q má rozměr n n a R má rozměr n m (nezávisle na tom, zda je n m nebo n > m). Ekonomický QR rozklad pro n > m, a tím i důkaz jeho existence, dostaneme vynecháním nulových řádků v matici R a odpovídajících sloupců v matici Q. 36
Existence a jednoznačnost QR rozkladu Jednoznačnost QR rozklad není obecně jednoznačný: pro každou diagonální D, D D = I, a pro libovolný QR rozklad A = QR platí A = QR = (QD )(DR) = Q R, kde Q R je rovněž QR rozkladem matice A. Povolíme-li na diagonále matice R pouze kladné prvky, je ekonomický QR rozklad jednoznačný. Jednoznačnost QR rozkladu Nechť A C n m, n m, je matice s lineárně nezávislými sloupci. Pak existuje jediná dvojice matic Q C n m a R C m m taková, že Q má ortonormální sloupce a R je horní trojúhelníková matice s kladnými diagonálními prvky a přitom A = QR. 37
Důkaz jednoznačnosti Nechť A = QR = Q 1 R 1 jsou dva ekonomické QR rozklady matice A a R i R 1 mají kladné diagonální prvky. Pak Q 1 = QRR 1 1 a platí Q 1 Q 1 = (RR1 1 ) Q Q(RR1 1 ) = (RR 1 1 ) (RR1 1 ) = I. Z toho vyplývá ((RR 1 1 ) ) 1 = RR 1 1. Matice na levé straně je dolní trojúhelníková, matice na pravé straně je horní trojúhelníková obě matice jsou diagonální a platí RR 1 1 = I, tj. R = R 1 a Q = Q 1. 38
QR rozklad užitím Householderových reflexí Householderův QR rozklad konstrukčně stejný jako Givensův. Místo složených Givensových rotací Γ k používáme k nulování vektorů matic Householderových reflexí H k. Pro n > m transformujeme A C n m dle schématu A H 1 A... H m 1... H 2 H 1 A R, kde H k je blokově diagonální matice, první blok je jednotková matice řádu k 1, druhý blok je matice Householderovy reflexe nulující poddiagonální prvky aktuálního k-tého sloupce. Označme Q H 1 H 2... H m 1 A = QR. Analogicky QR rozklad matice A C n m pro n m. 39
QR rozklad a Gram-Schmidtův ortogonalizační proces Pro jednoduchost případ n > m a podprostor C n generovaný lineárně nezávislými vektory {a 1,..., a m }. Gram-Schmidtův ortogonalizační proces spočte ortonormální bázi {q 1,..., q m } takovou, že span{a 1,..., a k } = span{q 1,..., q k }, k = 1,..., m. Z podmínky span{a 1 } = span{q 1 } a q 1 = 1 plyne, že q 1 získáme normalizací vektoru a 1, r 1,1 = a 1, q 1 = a 1 r 1,1. Druhý krok: hledáme bázový q 2 takový, že span{a 1, a 2 } = span{q 1, q 2 }, q 2 q 1 a q 2 = 1. Odečteme projekce a 2 ve směru q 1 a normalizujeme, z = (I q 1 q 1 ) a 2 = a 2 (q 1 a 2)q 1, r 2,2 = z, q 2 = z/r 2,2. 41
Gram-Schmidtův ortogonalizační proces k-tý krok V k-tém kroku odečteme projekci a k na prostor generovaný ortonormálními vektory q 1,..., q k 1, Q k 1 = [q 1,..., q k 1 ], a normalizujeme k 1 z = (I Q k 1 Q k 1 ) a k = a k (qi a k)q i r k,k = z q k = z/r k,k. Jelikož jsou vektory a 1,..., a m lineárně nezávislé, je vektor z vždy nenulový, a tudíž r k,k 0, k = 1,..., m. i=1 Dosadíme-li za z vektor r k,k q k a označíme-li r i,k = q i a k, k 1 a k = r i,k q i + r k,k q k, k = 1,..., m. i=1 42
Gram-Schmidtův ortogonalizační proces QR rozklad Po rozepsání a 1 = r 1,1 q 1 a 2 = r 1,2 q 1 + r 2,2 q 2. a m = r 1,m q 1 + r 2,m q 2 + + r m,m q m. S označením A = [a 1,..., a m ], Q = [q 1,..., q m ] a r 1,1 r 1,2 r 1,m 0 r 2,2 r 2,m R........ Cm m 0 0 r m,m dostáváme A = QR 43
Gram-Schmidtův ortogonalizační proces QR rozklad komentáře Narozdíl od QR rozkladu spočteného pomocí rotací či reflexí má zde matice Q rozměr n m a matice R má rozměr m m. Gram-Schmidtův ortogonalizační proces spočítá pro n > m ekonomický QR rozklad. Gram-Schmidtův ortogonalizační proces vzhledem ke skalárnímu součinu, zapíšeme vztahy k 1 z = a k a k, q i q i, r k,k = q k = z/r k,k. i=1 z, z, Výsledná báze {q 1,..., q k } prostoru span{a 1,..., a k } je ortonormální vzhledem ke zvolenému skalárnímu součinu,. 44
Implementace Gram-Schmidtova procesu Gram-Schmidtův proces lze přepsat několika matematicky (v přesné aritmetice) ekvivalentními způsoby. Dvě základní varianty klasický a modifikovaný algoritmus + varianty s iteračním zpřesněním. Pro jednoduchost a 1,..., a m jsou lineárně nezávislé. Výpočet vektoru z v k-tém kroku lze zapsat ve tvaru kde ortogonální projektor k 1 z = (I q i qi ) a k C Q a k, i=1 k 1 C Q = I q i qi = I Q k 1Q k 1 i=1 je komplementárním projektorem k projektoru Q k 1 Q k 1. Tento zápis umožňuje paralelní implementaci. 45
Implementace Gram-Schmidtova procesu Klasický a modifikovaný Gram-Schmidtův algoritmus Využijeme-li ortonormality vektorů q 1,..., q k 1, platí k 1 I q i qi = (I q k 1 qk 1)... (I q 2 q2)(i q 1 q1) i=1 (cvičení). Potom zřejmě z = (I q k 1 q k 1 )... (I q 2q 2 )(I q 1q 1 ) a k M Q a k, kde ortogonální projektor M Q je definován vztahem M Q (I q k 1 q k 1)... (I q 2 q 2)(I q 1 q 1) a je matematicky ekvivalentní s ortogonálním projektorem C Q. 46
Implementace Gram-Schmidtova procesu Klasický a modifikovaný Gram-Schmidtův algoritmus Implementace využívající M Q je sekvenční v tom smyslu, že pomocný vektor z počítáme postupně v k na sebe navazujících krocích, z 1 = a k z 2 = z 1 (q1z 1 ) q 1,. z k = z k 1 (q k 1 z k 1) q k 1. Vztahy používající C Q a M Q jsou matematicky ekvivalentní. Vedou však na algoritmy s různými numerickými vlastnostmi. Algoritmus používající C Q vede na tzv. klasický Gram-Schmidtův (CGS) algoritmus. 47
Klasický Gram-Schmidtův algoritmus (CGS) input A = [a 1,..., a m ] r 11 := a 1 q 1 := a 1 /r 11 Q 1 := [q 1 ] for k = 2 : m do z := a k [r 1,k,..., r k 1,k ] T := Q k 1 z z := z Q k 1 [r 1,k,..., r k 1,k ] T r kk := z q k := z/r kk Q k := [Q k 1, q k ] end for Nevýhoda: velký vliv zaokrouhlovacích chyb na spočtený výsledek při výpočtu v aritmetice s konečnou přesností. 48
Modifikovaný Gram-Schmidtův algoritmus (MGS) input A = [a 1,..., a m ] r 11 := a 1 q 1 := a 1 /r 11 Q 1 := [q 1 ] for k = 2 : m do z := a k for i = 1 : k 1 do r ik := q i z z := z r ik q i end for r kk := z q k := z/r kk Q k := [Q k 1, q k ] end for Chyby vznikající při výpočtu z jsou částečně eliminovány, výpočet r i,k := q i z následuje až po výpočtu aktualizace. 49
Iterační zpřesnění Ortogonalizační krok můžeme opakovat. Získáme tím například klasický Gram-Schmidtův algoritmus s opakovanou ortogonalizací (s iteračním zpřesněním, ICGS). ICGS si zachovává hlavní výhodu CGS velmi dobře se paralelizuje a navíc redukuje ztrátu ortogonality díky opakované ortogonalizaci. Pro dosažení maximální přesnosti (ztráty ortogonality na úrovni úměrné strojové přesnosti) stačí jediné opakování ortogonalizace. Jak vypočítat zpřesněné koeficienty r i,k? 50
CGS algoritmus s opakovanou ortogonalizací Při první ortogonalizaci projektujeme a k do podprostoru generovaného ortonormálními vektory q 1,..., q k 1, tj. vypočteme koeficienty q i a k, i = 1,..., k 1 a vektor z, z = a k [(q k 1a k ) q k 1 +... + (q 1a k ) q 1 ]. Při opakované ortogonalizaci projektujeme vektor z do podprostoru generovaného vektory q 1,..., q k 1, tj. vypočteme koeficienty qi z, i = 1,..., k 1 a vektor w, w = z [(q k 1 z) q k 1 +... + (q 1 z) q 1]. Dosadíme-li za vektor z do druhého vztahu, zjistíme, že w = a k [(q k 1 a k + q k 1 z) q k 1 +... + (q 1 a k + q 1 z) q 1]. Zpřesněné koeficienty (prvky horní trojúhelníkové R) vzniknou součtem projekcí a k a z do jednotlivých směrů. 51
Iterovaný klasický Gram-Schmidtův algoritmus input A = [a 1,..., a m ] r 11 := a 1 q 1 := a 1 /r 11 Q 1 := [q 1 ] for k = 2 : m do z := a k r := 0 for l = 1 : 2 do r := Q k 1 z z := z Q k 1 r r := r + r end for [r 1,k,..., r k 1,k ] T := r r kk := z q k := z/r kk Q k := [Q k 1, q k ] end for 52
Numerická stabilita algoritmů Pravidla v konečné aritmetice Pro počítání v konečné aritmetice počítače platí určitá pravidla, která jsou důležitá z matematického hlediska. Standardní model konečné aritmetiky předpokládá fl(x y) = (x y)(1 + ǫ), ǫ u, kde zastupuje operace +,,, / a fl( ) označuje, že výpočet byl proveden v konečné aritmetice počítače. 54
Numerická stabilita algoritmů Přímá a zpětná analýza chyb Uvažujme algoritmus, který řeší daný matematický problém. Použijeme-li tento algoritmus k výpočtu v aritmetice s pohyblivou řádovou čárkou, můžeme vlivem zaokrouhlovacích chyb získat nepřesné výsledky. Úkolem numerické analýzy je zjistit, jakým způsobem funguje daný algoritmus v prostředí konečné aritmetiky, a jak nepřesné výsledky může algoritmus generovat. Jinak řečeno, ptáme se, zda je algoritmus spolehlivý (zda dává rozumné výsledky) i v případě, kdy počítá s nepřesnými čísly. 55
Numerická stabilita algoritmů Přesnost výpočtu, absolutní a relativní chyba Nechť f(x) reprezentuje výsledek spočtený přesným algoritmem a fl(f(x)) výsledek spočtený algoritmem v konečné aritmetice (x reprezentuje vstupní data). Přesnost výpočtu můžeme měřit v absolutním smyslu pomocí f(x) fl(f(x)), kde je vhodná norma, nebo v relativním smyslu pomocí f(x) fl(f(x)). f(x) V této přednášce budeme k měření přesnosti algoritmu používat relativní chybu. Relativní chyba výpočtu v nejlepším případě úměrná strojové přesnosti f(x) fl(f(x)) = O(u). f(x) 56
Numerická stabilita algoritmů Význam O(u) O(u) označuje neurčité číslo, jehož velikost lze omezit pomocí O(u) Ku. Konstanta K je nezávislá na konkrétních datech, ale může záviset na dimenzi úlohy. Jsou-li např. vstupem algoritmu čtvercová matice A řádu n a vektor b, pak K nezávisí na A a b, ale může záviset na n. Závislost konstanty K na dimenzi problému je obvykle lineární, kvadratická či kubická v nejhorším případě. Vznikající chyby jsou většinou mnohem menší (díky krácení - kancelaci - zaokrouhlovacích chyb) než předpovídá odhad. Pokud je závislost K na n exponenciální (např. K = 2 n ), algoritmus může být velmi citlivý na n může být numericky nestabilní s rostoucím n. 57
Numerická stabilita algoritmů Analýza chyb Smyslem analýzy chyb je zjistit, jaké (největší) chyby se algoritmus může při výpočtu v konečné aritmetice dopustit. To, jak algoritmus v konečné aritmetice chybuje lze měřit a analyzovat dvěma základními způsoby. Přímá analýza chyb. Postupujeme podle algoritmu a snažíme se popsat šíření elementárních zaokrouhlovacích chyb. Na základě tohoto popisu odhadujeme přímo velikost výsledné chyby. Efektivní přímý odhad chyby je však možný jen zřídka (v případě jednoduchých výpočtů jako je např. skalární součin vektorů, násobení matice vektorem, apod.). Zpětná analýza chyb. Hledáme modifikovaná vstupní data úlohy tak, aby přibližné řešení spočtené algoritmem v konečné aritmetice počítače bylo přesným řešením té samé úlohy, avšak s modifikovanými vstupními daty. Cílem zpětné analýzy je interpretovat zaokrouhlovací chyby vzniklé při výpočtu v aritmetice s konečnou přesností pomocí změn vstupních dat. 58
Numerická stabilita algoritmů Analýza chyb 59
Příklad Přímá a zpětná analýza chyb při výpočtu skalárního součinu Pokud máme posloupnost operací jako např. s = x T y, x, y F n, kde F n označuje vektory délky n, jejichž prvky jsou čísla v pohyblivé řádové čárce (x i F, y i F, i = 1,..., n), potom budeme výsledek spočtený algoritmem 01 s = 0 02 for j = 1 : n do 03 s = s + x j y j 04 end v konečné aritmetice počítače zapisovat ve tvaru s = fl(x T y). 60
Analýza chyb při výpočtu skalárního součinu Zpětná analýza chyb I s 0 = 0, nechť s j je hodnota s na konci j-tého cyklu, s j = fl(s j 1 + x j y j ). Podle pravidla o chybě vzniklé při jedné operaci dostáváme s j = [s j 1 + x j y j (1 + ε j )](1 + δ j ), kde ε j u, δ j u. Indukcí plyne n n s n = x j y j (1 + ε j ) (1 + δ i ), j=1 i=j přičemž δ 1 = 0 a kde ε j u, δ j u. Definujme n µ j (1 + ε j ) (1 + δ i ) 1. i=j 61
Analýza chyb při výpočtu skalárního součinu Zpětná analýza chyb II Potom platí n s n = x j y j (1 + µ j ). j=1 Vypočtený výsledek jsme vyjádřili jako přesný výsledek skalárního součinu s perturbovanými (modifikovanými) daty, s n = x T ŷ, kde x = x a ŷ má prvky ŷ j = y j (1 + µ j ). Toto je příklad zpětné analýzy chyb, Vypočtený výsledek = přesný výsledek na perturbovaných datech. Úkolem zpětné analýzy chyb je odhadnout velikosti µ j a vyjádřit relativní vzdálenosti přesných a perturbovaných dat. 62
Analýza chyb při výpočtu skalárního součinu Přímá analýza chyb Dále lze ukázat, že s n = x T y + z, z = Přímá analýza chyb: vyjádřili jsme n x j y j µ j. j=1 Vypočtený výsledek = přesný výsledek + chyba. Úkolem přímé analýzy chyb je odhadovat velikost chyby z. Přímá a zpětná analýza chyb reprezentují dva pohledy, jak interpretovat chyby při výpočtech. 63
Odhady chyb při výpočtu skalárního součinu Nechť α i u, i = 1,..., n a nechť n u < 0.01. Potom platí n (1 + α i ) = 1 + β n, i=1 kde β n 1.01 n u (Lemma (Higham 2002)). Použitím tohoto lemmatu lze ukázat, že platí µ j 1.01 n u fl(x T y) x T y 1.01 n u x T y. Odtud již lehce plyne, že platí fl(x T y) = x T ŷ, kde x x x = 0 a y ŷ y 1.01 n u. 64
Zpětná stabilita algoritmu Přímá analýza chyb nám obvykle dává odpověď na otázku jak přesný je algoritmus v konečné aritmetice. Na základě zpětné analýzy chyb dospějeme často k poznání, že spočtené řešení úlohy lze interpretovat jako přesné řešení úlohy pro modifikovaná (perturbovaná) počáteční data, která jsou v jistém smyslu blízká původním počátečním datům. Definice: Algoritmus f(x) je zpětně stabilní, pokud platí fl(f(x)) = f( x) pro nějaké x splňující x x x = O(u), Algoritmus je zpětně stabilní, jestliže se chyby výpočtu způsobené zaokrouhlováním v průběhu algoritmu promítnou do malých změn vstupních dat. Výpočet skalárního součinu je zpětně stabilní. 65
Přesnost zpětně stabilního algoritmu Algoritmus f popis, jak řešit daný problém p. Problém p lze přitom vidět jako zobrazení, které vstupním datům z normovaného vektorového prostoru X přiřazuje řešení z normovaného vektorového prostoru Y, p : X Y. p je obvykle nelineární, ale bývá alespoň spojité. Dobře podmíněný problém je takový, že malé změny vstupních dat x vedou na malé změny v p(x). Špatně podmíněný problém je takový, že malé změny vstupních dat x vedou na velké změny v p(x). Lze ukázat, že pokud je algoritmus f řešící problém p zpětně stabilní a má-li problém p(x) podmíněnost κ(x), pak fl(f(x)) f(x) f(x) κ(x)o(u). 66
Numerická stabilita QR rozkladu Důležitý pojem: zpětná stabilita. Říkáme, že algoritmus je zpětně stabilní, pokud spočtené řešení dané úlohy je přesným řešením modifikované úlohy se vstupními daty, která jsou blízká původním datům dané úlohy. Nechť Q a R jsou spočtené faktory QR rozkladu matice A C n m v aritmetice s konečnou přesností. Nechť fl(u A) je spočtený výsledek aplikace elementární Givensovy rotace nebo Householderovy reflexe U na matici A v aritmetice s konečnou přesností. V následujícím uvedeme, jaká je přesnost vypočtené matice fl(ua), co lze říci o ortogonalitě spočtené matice Q, jak přesně spočtený je faktor R, a konečně, do jaké míry odpovídá součin spočtených matic Q R matici A. 68
Aplikace Givensových rotací a Householderových reflexí v konečné aritmetice Wilkinson, Turing: transformace A na matici U A, kde U C n n je matice elementární Givensovy rotace nebo Householderovy reflexe, potom fl(ua) = U(A + E), kde E A γn2 ε + O(ε 2 ), γ je konstantu nezávislá na velikosti úlohy ani na konkrétních datech, O(ε 2 ) značí členy úměrné ε 2, ε je strojová přesnost počítače (vzdálenost čísla 1 od nejbližšího většího čísla v množině čísel počítače). Faktor n 2 je velmi pesimistický a není důležitý z hlediska pochopení fungování algoritmu v konečné aritmetice počítače. Výše zmíněný odhad normy E budeme zjednodušeně zapisovat E ε A. 69
Numerická stabilita QR rozkladu Ortogonalita spočtené matice ˆQ Ztrátu ortogonality matic vypočtených v aritmetice s konečnou přesností budeme měřit pomocí spektrální normy matice E Q Q Q I. Často se rovněž používá Frobeniova norma. Přehled závislosti velikosti spektrální normy matice E Q na strojové přesnosti a podmíněnosti rozkládané matice: Algoritmus Householderův QR rozklad Givensův QR rozklad CGS MGS ICGS Lze matematicky dokázat. E Q ε ε κ 2 (A) ε κ(a) ε ε 70
Numerická stabilita QR rozkladu Stabilita výpočtu faktoru ˆR Pomocí analýzy zaokrouhlovacích chyb lze ukázat, že Householderův QR rozklad, Givensův QR rozklad a MGS jsou zpětně stabilní algoritmy v následujícím smyslu: Nechť R je spočtený trojúhelníkový faktor QR rozkladu matice A v aritmetice s konečnou přesností charakterizované strojovou přesností ε. Potom existuje unitární matice Q a malá perturbace matice A (označme ji jako E) taková, že platí Q (A + E) = R, E F ε A F, kde F je Frobeniova norma. Výsledek je překvapivý hlavně pro algoritmus MGS, kde není zaručená ztráta ortogonality na úrovni strojové přesnosti. 71
Numerická stabilita QR rozkladu Norma rezidua A ˆQ ˆR Matice Q a R vypočtené variantami Gram-Schmidtova procesu (MGS, CGS, ICGS) nebo pomocí Householderových či Givensových transformaci splňují A Q R ε A. Všimněme si, že tento výsledek platí nejen pro MGS, ale dokonce pro variantu CGS, u které je ztráta ortogonality ze všech variant největší. 72
Cena výpočtu Gram-Schmidtova procesu a QR rozkladu Čtvercová matice Měříme počtem provedených aritmetických operací. Podrobně ji vyjádříme u Gram-Schmidtova procesu. Není třeba rozlišovat klasický a modifikovaný Gram-Schmidtův algoritmus (počet operací je stejný). ICGS vyžaduje přibližně dvakrát více operací než CGS a MGS. Cena k-tého kroku (cvičení): k 1 z = a k i=1 (q i a k)q i, q k = z z = z z z, 2n(k 1) + 2n násobení, (2n 1)(k 1) + n 1 sčítání nebo odčítání, jednu odmocninu a jedno dělení. Sečtením všech operací pro kroky k = 1,..., n zjistíme, že CGS (MGS) stojí približně 2n 3 aritmetických operací. 73
Cena výpočtu QR rozkladu pomocí Gram-Schmidtova procesu Operace k-tý krok celkem 2n(k 1) + 2n n 3 + n 2 +, (2n 1)(k 1) + n 1 n 3 1 2 n2 1 2 n : 1 n 1 n 74
Výpočetní ceny různých implementací QR rozkladu Obdélníková matice Algoritmus celkový počet operací n > m n = m Householderův QR rozklad 2nm 2 2m 3 /3 4/3n 3 Givensův QR rozklad 3nm 2 m 3 2n 3 CGS, MGS 2nm 2 2n 3 Počet operací u Householderových reflexí je počet operací potřebných ke spočtení rozkladu v součinovém tvaru A = H 1H 2... H m 1R, kde H i jsou jednoduché Householderovy reflexe. Explicitní znalost matice Q vyžaduje dalších 2nm 2 2m 3 /3 operací. Totéž u Givensových rotací. 75
Cvičení 3.3 Určete vlastní čísla a determinant elementární Givensovy rotace. 3.5 Určete vlastní čísla a determinant Householderovy reflexe v reálném oboru. 3.8 Ukažte, že Householderovy reflexe odpovídající vzájemně ortogonálním normálovým vektorům jsou komutativní. 77
Cvičení 3.11 Mějme dánu matici Givensovy rotace v R 2 [ cos(ϕ) sin(ϕ) G(ϕ) = sin(ϕ) cos(ϕ) ]. Definujme dva normalizované vektory q 1 = 0.5 [ ] 1 cos(ϕ), q 1 + cos(ϕ) 2 = [ 0 1 q 1 = 1 2 (1 cos(ϕ) + 1 + cos(ϕ)) = 1 = q 2. ], Ukažte, že [ cos(ϕ) sin(ϕ) H(q 2 )H(q 1 ) = sin(ϕ) cos(ϕ) ] = G(ϕ), tedy každou Givensovu rotaci lze popsaným způsobem složit ze dvou Householderových reflexí. 78
Cvičení 3.13 Dokažte, že matici Householderovy reflexe nelze složit z Givensových rotací. Dále dokažte, že pomocí Givensových rotací nelze vyjádřit žádná matice, která je součinem lichého počtu Householderových reflexí. 3.15 Ukažte, že jsou-li vektory q 1,..., q k navzájem ortogonální, pak platí I q 1 q 1 q 2q 2... q kq k = (I q 1q 1 )(I q 2q 2 )... (I q kq k ), tedy součin na pravé straně je komutativní. 3.16 Ukažte, že cena k-tého kroku algoritmu CGS je dána cenou 2n(k 1) + 2n součinů, (2n 1)(k 1) + n 1 součtů nebo rozdílů, jednoho podílu a jednoho výpočtu odmocniny. Využijte sčítací vzorce n k = 1 n 2 n(n + 1) a k 2 = 1 n (2n + 1) (n + 1). 6 k=1 k=1 79