Obliczenia naukowe Wykład nr 2 Paweł Zieliński Katedra Informatyki, Wydział Podstawowych Problemów Techniki, Politechnika Wrocławska
Literatura Literatura podstawowa [1] D. Kincaid, W. Cheney, Analiza numeryczna, WNT, 2005. [2] M. T. Heath, Scientific Computing, An Introductory Survey, The McGraw-Hill Companies, 1997. [3] A. Bjorck, G. Dahlquist, Metody numeryczne, PWN, 1987. [4] M. Dryja, J. i M. Jankowscy, Przeglad metod i algorytmów numerycznych, cz. 2, WNT, 1988. [5] Z. Fortuna, B. Macukow, J. Wasowski, Metody numeryczne, WNT 1998. [6] J. i M. Jankowscy, Przeglad metod i algorytmów numerycznych, cz. 1, WNT, 1988. [7] J. Stoer, R. Bulirsch, Wstęp do analizy numerycznej, PWN, 1987. Literatura uzupełniajaca [8] Kiełbasiński, H. Schwetlick, Numeryczna algebra liniowa, WNT, 1993. Znaczna część wykładu została przygotowana na podstawie ksiażki [1].
Uwarunkowanie zadania Definicja Jeśli niewielkie względne zmiany danych powoduja duże względne odkształcenia wyników, to zadanie nazywamy źle uwarunkowanym. Przykład Zbadajmy uwarunkowanie zadania obliczania wartości funkcji f (x) 0 w punkcie x. W tym celu zaburzymy dane x, x = x(1 + δ) = x + xδ. Oszacujmy względna zmianę wyniku. f ( x) f (x) f (x) = f (x + xδ) f (x) f (x) f (x)xδ f (x) = cond(x) δ, cond(x) = f (x)x / f (x) jest wskaźnikiem uwarunkowania zadania. Jeśli cond(x) jest mały ( f (x) jest mała), to zadanie jest dobrze uwarunkowane. Definicja Wielkości charakteryzujace wpływ zaburzeń danych na odkształcenia wyników nazywamy wskaźnikami uwarunkowania.
Uwarunkowanie zadania... Przykład Zbadajmy uwarunkowanie zadania obliczania iloczynu skalarnego S(a, b) = n i=1 a ib i 0, gdzie a = (a 1,..., a n ), b = (b 1,..., b n ). Zaburzmy dane ãa = (a 1 (1 + α 1 ),..., a n (1 + α n )), b = (b 1 (1 + β 1 ),..., b n (1 + β n )). Oszacujmy względna zmianę wyniku S(ãa, b) S(a, b) S(a, b) = n i=1 a ib i (1 + α i )(1 + β i ) n i=1 a ib i n i=1 a ib i = n i=1 a ib i (1 + α i + β i + α i β i ) n i=1 a ib i n i=1 a n i=1 a ib i (α i + β i ) ib i n i=1 a ib i n max α i=1 i + β i a ib i 1 i n n i=1 a = cond(a, b) max ib i α i + β i. 1 i n Jeśli a i, b i, i = 1,..., n, s a tego samego znaku, wówczas cond(a, b) = 1 i zadanie jest dobrze uwarunkowane.
Normy wektora i macierzy Definicja Norma w R n nazywamy funkcję rzeczywista o własnościach: x 0, x = 0 x = 0, αx = α x, α R, x R n, x + y x + y, x, y R n. Przykład Przykłady norm wektorów, x = (x 1,..., x n ): x 1 = n i=1 x i (norma sumacyjna), x 2 = ( n i=1 x ) i 2 1/2 (norma euklidesowa), x = max 1 i n x i (norma maksymalna). W języku Julia: norm(x::abstractvector, p::real=2) Definicja Norma w R m n nazywamy funkcję rzeczywista o własnościach: A 0, A = 0 A = 0, αa = α A, α R, A R m n, A + B A + B, A, B R m n.
Normy wektora i macierzy Ważna podklasę norm macierzy stanowia normy macierzy indukowane przez normy wektorów definiowane jako A = sup{ Ax x R n, x = 1}. Z powyższego wynika następujaca nierówność Ax A x. Przykład Przykłady norm macierzy, A R m n, A 1 = max m 1 j n i=1 a ij, A 2 = (λ max (A T A)) 1/2 (norma spektralna), λ max jest maksymalna wartości a własna macierzy A T A. A = max n 1 i m j=1 a ij. W języku Julia: norm(a::abstractarray, p::real=2)
Uwarunkowanie zadania Ax = b Zbadajmy uwarunkowanie zadania rozwiazywania układu równań liniowych Ax = b, o danej nieosobliwej macierzy A (n n) i o niezerowym wektorze prawych stron b. Zaburzmy wektor b otrzymujac b = (b 1 (1 + δ 1 ),..., b n (1 + δ n )). Jeśli x i x spełniaja Ax = b i A x = b, to oszacujmy względna zmianę wyniku. x x = A 1 b A 1 b = A 1 (b b) A 1 b b = A 1 b b b = A 1 b b Ax A 1 b b A x b b b x x x A 1 b b b b A = cond(a) b b cond(a) wskaźnik uwarunkowania macierzy. W języku Julia: cond(m, p::real=2)
Uwarunkowanie zadania Ax = b Przykład Przykładem macierzy bardzo źle uwarunkowanej jest macierz Hilberta H n = [1/(i + j 1)] n i,j=1. Wskaźniki cond(h 6 ) 1.5 10 7, cond(h 10 ) 1.6 10 13. Rozważmy teraz uwarunkowanie zadania Ax = b ze względu na zaburzenia macierzy układu ÃA = A + δa. Oszacujmy względna zmianę wyniku. Oszacowanie podamy bez dowodu. Jeśli A δa < 1 i I = 1, to x x x A 1 A A ÃA A 1 A 1 A A ÃA A = cond(a) A ÃA A 1 cond(a) A ÃA A.
Złośliwy wielomian (Wilkinson) Dany jest wielomian ω(x) = Π 20 i=1 (x i i) = x 20 + a 19 x 19 +... + a 1 x + a 0, gdzie a 19 = 210. Zaburzmy teraz a 19. ω ɛ (x) = ω(x) ɛx 19 = x 20 (210 + ɛ)x 19 +... + a 1 x + a 0, gdzie ɛ = 2 23. a 19 (ɛ) = 210 ɛ = a 19 (1 + 1 2 23 210 ) = a 19(1 + δ), względne zaburzenie δ < 2 30. Dla tak niewielkiego względnego zaburzenia a 19 wielomian ω ɛ (x) ma zera zespolone.
Uwarunkowanie zadania ω(x) = 0 Załóżmy, że ω (r) 0, gdzie r jest pierwiastkiem ω, tj. ω(r) = 0. Zaburzmy ω ω = ω ɛz, gdzie z C 2. Pytanie: Jaki jest pierwiastek ω, tj. r + h t. ż. ω(r + h) = 0? Rozwijamy ω w szereg Taylora: ω(r) + hω (r) + 1 2 h2 ω (η) ɛ(z(r) + hz (r) + 1 2 h2 z (ξ)) = 0. Stad z(r) h ɛ ω (r) ɛz (r) ɛ z(r) ω (r).
Złośliwy wielomian (Wilkinson) ω(x) = Π 20 i=1 (x i i) Zaburzenie z(x) = ɛx 19, ɛ = 2 23. Pytanie: Jak powyższe zaburzenie wpływa na pierwiastek r = 20? h ɛ z(20) ω (20) ɛ2019 19! ɛ10 8 102.76. Wniosek: Zadanie wyznaczanie pierwiastków wielomianu jest źle uwarunkowene ze względu na zaburzenia współczynników.
Numeryczna niestabilność Mówiac nieformalnie, proces numeryczny jest niestabilny jeśli niewielkie błędy, popełnione w poczatkowym stadium procesu kumuluja się w kolejnych stadiach, powodujac poważna utratę dokładności obliczeń. Przykład Rozważmy ciag liczb rzeczywistych zdefiniowany za pomoca rekurencyjnego zwiazku: { x0 = 1 x 1 = 1 3 x n+1 = 13 3 x n 4 3 x n 1 (n 1). Powyższy zwiazek generuje ciag x n = ( 1 n. 3) Dla n = 0 i n = 1 oczywiste. Załóżmy równoważność jest spełniona dla n m. Równoważność dla n = m + 1 wynika 13 3 xm 4 3 x m 1 = 13 ( ) m 1 4 ( ) m 1 ( ) m 1 ( 1 1 13 = 3 3 3 3 3 9 4 ) ( 1 = 3 3 ) m+1
Numeryczna niestabilność Poniżej 15 iteracji algorytmu (w arytmetyce single) { x0 = 1 x 1 = 1 3 x n+1 = 13 3 x n 4 3 x n 1 (n 1). x 0 = 1.0000000 x 8 = 0.0003757 (0 cyfr) x 1 = 0.3333333 (7 cyfr) x 9 = 0.0009437 x 2 = 0.1111112 (6 cyfr) x 10 = 0.0035887 x 3 = 0.0370373 (5 cyfr) x 11 = 0.0142927 x 4 = 0.0123466 (4 cyfr) x 12 = 0.0571202 x 5 = 0.0041187 (3 cyfr) x 13 = 0.2285939 x 6 = 0.0013857 (2 cyfr) x 14 = 0.9143735 x 7 = 0.0005131 (1 cyfr) x 15 = 3.657493 (bład względny 10 8 ) Niedokładność x n przenosi się na x n+1 z mnożnikiem 13/3. Zatem niedokładność x 1, rzędu 10 8, przenosi się na x 15 z wielkim mnożnikiem (13/3) 14 10 9.