Numerická matematika - výcuc LS 2009/2010, FMFI UK Cyby a nepresnosti reportujte na kovac zavináč fotopriestor.sk 16. mája 2010 1 Úvod 1.1 Literatúra Babušíková, Slodička, Weisz - Numerické metódy Mila - Numerické metódy algebry Přikryl - Numerické metódy matematickej analýzy Elden, Wittmeyer-Koc - Numerical Analysis: An Introduction Demidovič - Základy numerickej matematiky Vilásek - Numerické metódy 1.2 Cyby neodstrániteľná nepresnosť - z modelu cyby metódy - napr. z useknutia nejakéo rozvoja numerické cyby - zo zaokrúlenia 1.3 Numerická stabilita Úloa, algoritmus, metóda, riešenie sú stabilné, ak sú dobre podmienené, tj. málo citlivé na porucy v údajoc a numericky stabilné tj. málo citlivé na vplyv zaokrúľovacíc cýb. Numerická realizácia algoritmu musí byť numericky stabilná. Príklad. Systém rovníc 2x 1 + 6x 2 = 8 2x 1 + 6.000001x 2 = 8.000001 1
má riešenie x 1 = 1, x 2 = 1. Systém má riešenie x 1 = 7, x 2 = 1. 2x 1 + 6x 2 = 8 2x 1 + 5.999999x 2 = 8.000001 1.4 Reprezentácia čísiel v počítači Majme množinu počítačovýc čísiel M(q, t, L, U), kde: q = veľkosť sústavy (binárna, desiatková,...) t = počet číslic v mantise L = dolná ranica exponentu U = orná ranica exponentu Potom máme 2(q 1)q t 1 (U L + 1) + 1 zobraziteľnýc rôznyc čísiel. Napr. pre počítač M(2, 2, 1, 2) máme najväčšie kladné číslo 1.11 2 2 2 a najmenšie kladné číslo 1.00 2 2 1. Obr. 1: Kladné čísla zobraziteľné počítačom M(2, 2, 1, 2) 0 0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 5 5.5 6 6.5 7 Neplatí asociatívny zákon. Príklad (t = 3). (728 728) + 0.01 = 0.01 728 + ( 728 + 0.01) = 0 1.5 Cyba pri sčítaní a odčítaní Majme x 1, x 2 > 0, a ic aproximácie x 1 x 1, x 2 x 2. Potom ako absolútne cyby označujeme 1 = x 1 x 1, 2 = x 2 x 2. Absolútna cyba súčtu je potom s s x 1 x 1 + x 2 x 2 = 1 + 2. Relatívna cyba súčtu je s s s 1 x 1 + s + 2 x 2 + s 1 x 1 + 2 x 2 = Rel( x 1) + Rel( x 2 ). Pozor na relatívnu cybu pri číslac s podobnou absolútnou odnotou Rel(x 1 + x 2 ) = 1 + 2 x 1 + x 2 2
menovateľ zlomku môže byť veľmi malý a relatívna cyba výrazne narastie. Príklad. Majme x 1 = 0.996, x 1 = 1.00, x 2 = 0.994, x 2 = 0.99. Relatívne cyby aproximácií sú malé, ale relatívna cyba súčtu je veľká: Rel( x 1 ) = x 1 x 1 x 1 = 0.004 0.996 < 0.005 = 0.5% Rel( x 1 ) = x 2 x 2 x 2 = 0.004 0.994 < 0.005 = 0.5% Rel( x 1 + x 2 ) = 1+ 2 x 1 +x 2 = 0.008 0.002 = 4 = 400%. 2 Diferenčný počet 2.1 Diferencia nec je dané > 0 a c R, nec f je definovaná v bodoc c a c +. Potom rozdiel f(c) = f(c + ) f(c) je diferencia funkcie f v bode c, číslo nazveme diferenčným krokom. nec existuje f(x) pre všetky x m R, pri konštantnom diferenčnom kroku. Potom rozdiely f(x) = f(x + ) f(x) x m definujú funkciu, ktorú nazývame diferenciou funkcie f na množine m. Nec je dif. krok, x m a f(x) = g(x). Potom: (kf(x)) = k f(x) (1) (f 1 (x) ± f 2 (x)) = f 1 (x) ± f 2 (x) (2) (f 1 (x) f 2 (x)) = ( f 1 (x))f 2 (x) + f 1 (x) f 2 (x)+ + f 1 (x) f 2 (x) 2 (f(x)) = f(x + 2) 2f(x + ) + f(x) (4) k (f(x)) = k ( ) k ( 1) j f(x i + (k j)) j (5) j=0 x (k) = kx (k 1) (6) (3) a x = a x+ a x = a x (a 1) (7) 1 g(x) = 1 f(x) + c(x), kde c(x) je taká, že (8) c(x) = c(x + 1) c(x) = 0 b g(x) = f(b + ) f(a) = [f(x)] b+ x=a (9) x=a 2.2 Diferenčné rovnice V diferenčnýc rovniciac je okrem argumentu a funkcie aj diferencia funkcie. F (n, y n, y n, 2 y n,..., p y n ) = 0 (10) 3
Lineárna rekurentná rovnica p-teo rádu má všeobecný tvar y n+p = b p 1,n+p y n+p 1 + b p 2,n+p y n+p 2 +... + b 0,n+p y n + a n+p, (11) kde b i,n+p sú dané čísla, pričom b 0,n+p 0. Ak a n+p = 0, potom je relácia omogénna. Ak b i,n+p nezávisia od n, môžme ic písať ako b i a relácia má konštantné koeficienty. 2.3 Lineárne rekurentné relácie 1. rádu Lineárne rekurentné relácie 1. rádu majú tvar y n = b n y n 1 + a n, n Z. (12) Veta. Nec b n 0 pre n Z, nec c C, n 0 Z. Potom postupnosť y n = c a j n + b j b i (13) n0 j=n 0 +1 b i spĺňa y n = b n y n 1 + a n, n > n 0, y n0 = c. (14) Dôkaz. MI na n. Pre n = n 0 triviálne platí. Nec tvrdenie platí pre n, dokážeme, že platí aj pre n + 1: y n+1 = b n+1 y n + a n+1 = b n+1 c + b n0 = = = c + b n0 c + b n0 c + b n0 j=n 0 +1 j=n 0 +1 n+1 j=n 0 +1 j=n 0 +1 a j n j b i + a n+1 b i a j j b i n+1 b i + a n+1 a j j b i + a n+1 n+1 a j j b i n+1 b i b i. n+1 b i 2.4 Lineárne rekurentné omogénne relácie 2. rádu Lineárne rekurentné omogénne relácie 2. rádu majú tvar y n+2 + b 1 y n+1 + b 2 y n = 0, n Z. (15) 4
Riešenia ľadáme v tvare y n = z n, z 0 (je to podpriestor dimenzie dva). Hľadáme také z, aby platilo z n+2 + b 1 z n+1 + b 2 z n = 0, tj. z n (z 2 + b 1 z + b 2 ) = 0. (16) To platí, len ak je výraz z 2 + b 1 z + b 2 rovný nule tento výraz nazývame carakteristická rovnica má ten istý stupeň a tie isté koeficienty ako pôvodná diferenčná rovnica. Rozlišujeme tri prípady riešenia carakteristickej rovnice: 1. Ak má carakteristická rovnica dva rôzne korene z 1, z 2, potom {z1 n}, {z2 n } sú dve riešenia diferenčnej rovnice. Pritom z 1,2 = ± b 2 1 4b 2 b 1. (17) 2 Všeobecné riešenie diferenčnej rovnice má potom tvar y n = c 1 z n 1 + c 2 z n 2, (18) kde sa konkrétne odnoty c 1, c 2 určia podľa začiatočnýc podmienok. Postupnosti {z1 n}, {zn 2 } sú lineárne nezávislé. Dôkaz. Nec sú lineárne závislé, tj. c 1 z1 n +c 2z2 n = 0, pričom c 1 0 c 2 0 n. Spravme sústavu ( z n 1 z2 n ) ( ) c1 z1 n+1 z2 n+1 = c 2 ( 0 0 ) (19) Ak má mať omogénna sústava netriviálne riešenie, musí byť determinant sústavy rovný nule pre každé n. z1 n z n 2 z1 n+1 z2 n+1 = zn 1 z2 n+1 z1 n+1 z2 n = z1 n z2 n (z 2 z 1 ) = 0 (20) To je však spor: z n 1 zn 2 0 pretože riešenie je netriviálne a z 1 z 2 0 pretože riešenia sú rôzne. 2. Ak má carakteristická rovnica jeden dvojnásobný koreň z n, potom prvé riešenie je postupnosť {z n } a drué riešenie postupnosť {nz n } alebo {nz n 1 }. Zoberme si dvojicu {z n } a {nz n }. Determinant sústavy je z n nz n z n+1 (n + 1)z n+1 = (n + 1)z2n+1 nz 2n+1 = (21) z 2n+1 + nz 2n+1 nz 2n+1 = z 2n+1 0 n, takže riešenia sú lineárne nezávislé (podobne pre druú dvojicu). Ďalej ukážeme, že ak {z n } je riešením, tak aj {nz n } je riešením: 5
y n+2 + b 1 y n+1 + b 2 y n = 0 y n = nz n y n+1 = (n + 1)z n+1 y n+2 = (n + 2)z n+2 Keďže z je dvojnásobný koreň carakteristickej rovnice, tak je aj koreň jej derivácie (tj. 2z + b 1 ). Potom platí (n + 2)z n+2 + b 1 (n + 1)z n+1 + b 2 nz n = = nz n (z 2 + b 1 z + b 2 ) + z n+1 (2z + b 1 ) = 0 (22) Všeobecné riešenie má potom tvar y n = c 0 z n + c 1 nz n = (c 0 + c 1 n)z n, čo je vlastne polynóm stupňa o jedno menej krát koreň na n-tú. 3. Ak má carakteristická rovnica komplexne združené korene z 1 = a + ib, z 2 = a ib, z 1,2 = z cos ϕ ± i sin ϕ, (0 < ϕ π), tak všeobecné riešenie má tvar y n = c 1 z n (cos ϕ + i sin ϕ) n + c 2 z n (cos ϕ i sin ϕ) n = c 1 z n (cos nϕ + i sin nϕ) + c 2 z n (cos nϕ i sin nϕ) = (c 1 + c 2 ) z n cos n ϕ + z n (ic 1 ic 2 ) sin nϕ = k 1 z n cos n ϕ + k 2 z n sin nϕ, kde k 1 = c 1 + c 2, k 2 = ic 1 ic 2. Veta. Nec b 1, b 2, A, B R, n 0 n 1 Z, y n0 = A, y n1 = B. Potom existuje práve jedno riešenie rovnice y n+2 + b 1 y n+1 + b 2 y n = 0, n Z. 2.5 Lineárne rekurentné neomogénne relácie 2. rádu Lineárne rekurentné neomogénne relácie 2. rádu majú všeobecný tvar y n+2 + b 1 y n+1 + b 2 y n = a n, n Z. (23) Veta. Princíp superpozície. Nec V je nejaká postupnosť, ktorá je riešením (23). Potom každá postupnosť Y, ktorá je riešenie (23) sa dá zapísať ako Y = U + V kde U je riešenie (15). Naopak, nec V je riešenie (23) a U je riešenie (15), potom Y = U + V je riešenie (23). 6
Takže postupuje sa tak, že sa nájde všeobecné riešenie omogénnej rovnice, jedno partikulárne riešenie neomoǵennej a z too sa zostaví všeobecné riešenie neomogénnej rovnice. V n+2 + b 1 V n+1 + b 2 V n = a n Y n+2 + b 1 Y n+1 + b 2 Y n = a n (Y n+2 V n+2 ) + b 1 (Y n+1 V n+1 ) + b 2 (Y n V n ) = 0 U n = Y n V n Ak a n je polynóm, riešenie ľadáme v tvare polynómu, ak je a n = cq n, riešenie ľadáme v tvare y n = dq n. 3 Počítanie odnôt štandardnýc funkcií 3.1 Transformácia argumentu nepresná, takže ju treba robiť v dvojnásobnej presnosti 3.2 CORDIC algoritmus Slúži na výpočet trigonometrickýc funkcií dosť rýclo a dosť presne. Cceme napr. < 1. 2 2 23 sin β 0 sin β 0 veľké x transformujeme s dvojitou presnosťou do intervalu 0, π 2 na 0, π 2 pre malé β aproximujeme sin β = β inak použijeme CORDIC Pre aké malé β stačí sin β = β? sin β = β β3 3! + < β sin β 3 0 3! sin β 0 β = β2 6 1 2 2 t β = m2 e β 2 = m 2 2 2e < 4 2 2e β 2 6 < 4 2 2e = 2 6 3 2 2e < 1 2 2 t 2 2e 3 4 2 t ( ) 3 2e log 2 4 t e 1 3 log 2 2 4 t e 1 2 (t log. 2 0.75) = 1 2 (t + 0.41) < 1 (t + 1) 2 Takže ak e > 1 2 (t + 1) použijeme sin β = β, ak e 0; 1 2 (t + 1) použijeme CORDIC s transformáciou v 2t bitoc. 7
4 Hľadanie koreňov nelineárnyc rovníc f(x) = 0 4.1 Metóda prostej iterácie 4.2 Newtonova metóda Cyba: x n+1 x lim n x n+1 = x n + f(x n) f (x n ) x n x 2 = ϕ ( x) 2, ϕ(x) = x f(x) f (x) (24) (25) 4.3 Metóda regula falsi f(a)f(b) < 0 b a s = a f(a) f(b) f(a) ak f(a)f(s) < 0 tak b := s ak f(s)f(b) < 0 tak a := s (26) (27) 4.4 Metóda tetív x n x n 1 x n+1 = x n f(x n ) f(x n ) f(x n 1 ) (28) 4.5 Viacrozmerný Newtonov algoritmus [ 1 x (k+1) = x (k) J( x )] (k) f( x (k) ) (29) 5 Výpočet A A = 1.b 1 b 2... b t 2 e, a = c 1 c 0.d 1 d 2... d t 1, 1 a < 4 x n+1 = 1 2 (x n + a x n ) (30) c 1 c 0.d 1 d 2 sú uložené v tabuľke a podľa nic sa začína iterovať, stačia tri iterácie. 6 Riešenie sústav lineárnyc rovníc Nenulový vektor x je vlastný vektor n n matice A, ak existuje λ tak, že A x = λ x. Číslo λ je vlastné číslo matice. Rovnica (A λi) x = 0 má netriviálne 8
a 11 λ... a 1n riešenie len ak A λi =..... = 0. Riadková a stĺpcová a n1... a nn λ norma matice sú A R = max a ij (31) i Pre zodpovedajúce si normy platí A S = max i a ij (32) i=1 A x A x (33) AB A B (34) A 2 A A = A 2 (35) Riešme A x = b. Iterácie majú všeobecný tvar 6.1 Metóda postupnýc aproximácií 6.2 Jacobio metóda 6.3 Gaussova-Seidelova metóda (36) x (k+1) = C x (k) + g (37) C = (I A) (38) g = b (39) (40) A = L + D + U (41) C = D 1 (L + U) (42) g = D 1 b (43) (44) A = L + D + U (45) C = (L + D) 1 U (46) g = (L + D) 1 b (47) x (k+1) 1 i 1 i = b i a ij x (k+1) j + a ij x (k) j (48) a ii j=i+1 9
7 Aproximácie funkcií 7.1 Interpolácia polynómom Máme postupnosti {x i } n i=0, {f(x i)} n i=0, cceme taký p(x) P n aby p(x i ) = f(x i ) i. 7.2 Lagrangeov interpolačný polynóm p(x) = l j (x) = l j (x)f(x j ) (49) j=0 n i=0,i j x x i x j x i (50) Nevýoda: pri pridaní novéo uzla treba znova prepočítavať koeficienty. 7.3 Newtonov interpolačný polynóm p n (x) = p n (x) = i=0 (x x j ) (51) c i i 1 j=0 1 [ x n x 0 (x n x) p (0,n 1) n 1 (x) + (x x 0 ) p (1,n) n 1 (x) ] (52) c n = c(1) n 1 c(0) n 1 x n x 0 = f[x 0, x 1,..., x n ] = (53) = f[x 1,..., x n ] f[x 0,..., x n 1 ] x n x 0 (54) Koeficienty sa rátajú dynamickým programovaním d s,k = d s,k 1 d s 1,k 1 x s x s k. Podčiarknuté odnoty sú koeficienty Newtonovo polynómu. x i f(x i ) x 0 f(x 0 ) x 1 f(x 1 ) f[x 0, x 1 ] x 2 f(x 2 ) f[x 1, x 2 ] f[x 0, x 1, x 2 ] x 3 f(x 3 ) f[x 2, x 3 ] f[x 1, x 2, x 3 ] f[x 0, x 1, x 2, x 3 ] 7.4 Cyba interpolačnéo polynómu max f(x) p(x) M n+1 n (x x (n + 1)! i ), M n+1 = max i=0 x a,b f (n+1) (x) (55) 10
7.5 Čebyšeove interpolačné polynómy Tie sú najpresnejšie T 0 (x) = 1 (56) T 1 (x) = x (57) T n+1 (x) = 2xT n (x) T n 1 (x) = cos (n arccos x) (58) Spomedzi všetkýc polynómov n-téo stupňa sa práve Čebyševove normalizované polynómy na a, b najmenej odcyľujú od nuly: max p a,b n(x) max T n (x) = (b a) n 2 1 2m (59) x a,b x a,b 7.6 Zovšeobecnený Newtonov interpolačný polynóm pre viacnásobné uzly f(u i ) = F i,0 u 0 = x 0 F 00 u 1 = x 1 F 10 F 11 u 2 = x 2 F 20 F 21 F 22 u 3 = x 3 F 30 F 31 F 32 F 33 7.7 Splajny F s,k = F s,k 1 F s 1,k 1 u s u s k (60) F s,k = f (k) (u s ) k! (61) Na intervale a, b = a = x 0 < x 1 <... < x n = b máme odnoty f(x i ), cceme po častiac interpolovať polynómami nižšieo stupňa. S i (x) = f(x i ) + f(x i+1) f(x i ) x i+1 x i (62) Platí, že ak f(x) C 2 a, b tak x a, b : S(x) f(x) c 2, kde = max(x i+1 x i ) 11
7.7.1 Lineárne splajny S(x) = l 0 (x) = l i (x) = l n (x) = l i (x)f(x i ) (63) i=0 { x1 x x 1 x 0 pre x 0 x x 1 (64) 0 pre x 1 x x n 0 pre x 0 x x i 1 x x i 1 x i x i 1 pre x i 1 x x i x i+1 x (65) x i+1 x i pre x i x x i+1 0 pre x 0 x x 1 { 0 pre x0 x x n 1 x x n 1 (66) x n x n 1 pre x n 1 x x n 7.7.2 Kubické splajny i = x i+1 x i (67) S i x i+1 x x x i (x) = M i + M i+1 i i (68) S i(x) (x i+1 x) 2 (x x i ) 2 = M i + M i+1 2 i 2 i + A i (69) S i (x) = M i (x i+1 x) 3 6 i + M i+1 (x x i ) 3 A i (x) = f(x i+1) f(x i ) i B i = f(x i ) M i 2 i 6 6 i + A i (x x i ) + B i (70) i 6 (M i+1 M i ) (71) (72) Koeficienty M i vypočítame sústavou rovníc z podmienky spojitosti prvýc derivácií S i 1 (x i) = S i (x i). V tomto mám ešte guláš. 7.8 Metóda najmenšíc štvorcov Máme spojitú f(x) a cceme f(x) f n (x) tak, aby b a w(x) [f(x) f n(x)] 2 bol minimálny (spomedzi všetkýc polynómov nanajvýš n-téo stupňa). Skalárny súčin dvoc funkcií je (f, g) = b a w(x)f(x)g(x)dx. 12
7.9 Diskrétna metóda najmenšíc štvorcov 8 Výber empirickéo vzorca 9 Numerická kvadratúra - výpočet integrálu fcie b a w(x)f(x)dx = H j f(x j ) + e n (f) (73) j=0 Ak poznáme uzly x i, cceme to presné pre polynómy až do n-téo stupňa, ak nepoznáme, tak do 2n 1 stupňa. = b a n. 9.1 Newtonova-Cotesova kvadratúra 9.2 Simpsonovo pravidlo a b a f(x)dx = b a 6 [ f(a) + 4f( a + b ] 2 ) + f(b) 1 90 5 f (4) (ξ) (74) 9.3 Zložené licobežníkové pravidlo b f(x)dx = b a f(x m 1 0) + f(x j ) + f(x m) b a m 2 2 12 2 f (ξ) (75) 9.4 Zložené Simpsonovo pravidlo = b a 2m b a f(x)dx = f(x 0 ) + 4 3 m 1 j=0 m 1 f(x 2j+1 ) + 2 9.5 Gaussove kvadratúry, Hermitova interpolácia f(x 2j ) + f(x 2m ) b a 180 4 f (4) (ξ) (76) 9.5.1 Gaussov-Legendreov kvadratúrny vzorec 1 f(x)dx = H j f(x j ) + y n A 2 n(2n)! f ( 2n)(ξ) (77) 1 9.5.2 Gaussov-Hermitov kvadratúrny vzorec e x2 f(x)dx = H j f(x j ) + e n f (78) 13
9.5.3 Gaussov-Lagerov kvadratúrny vzorec e x f(x)dx = H j f(x j ) + e n f (79) 0 9.5.4 Gaussov-Čebyšeovov kvadratúrny vzorec 1 f(x) dx = H j f(x j ) + e n f = π f(x j ) + e n (f) (80) 1 x 2 n 1 10 Numerická derivácia j=0 Funkciu f (x 0 ) = lim 0 f(x 0 +) f(x 0 ) aproximujeme D + () = f(x 0 + ) f(x 0 ) (81) D () = f(x 0) f(x 0 + ) (82) D 0 () = f(x 0 + ) f(x 0 ) 2 (83) D + () f (x 0 ) c 1 (84) D 0 () f (x 0 ) c 2 2 (85) 10.1 Ricardsonova extrapolácia (86) Keď sme na ranici počítačovej presnosti, tak cyba aproximácie derivácie narastá (pretože je príliš veľká cyba zo zaokrúlenia). Takže sa snažíme nájsť optimálnu odnotu kroku tak, aby neboli cyby príliš veľké. T () = f (x 0 ) + b 1 2 + b 2 4 +... (87) T () = f (x 0 ) + b 1 2 + O( 4 ) (88) T i,k = T i,k 1 + T i,k 1 T i 1,k 1 (2 p ) k 1 p je lavný člen cyby, pre D +, D je 1, pre D 0 je 2. p = 2 D 0 () k = 1 k = 2 k = 3 k = 4 2 0 T 00 2 1 T 10 T 11 2 2 T 20 T 21 T 22 2 3 T 30 T 31 T 32 T 33 2 4 T 40 T 41 T 42 T 43 T 44 (89) 14