Obliczenia naukowe Wykład nr 6 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].
Rozpatrzmy następujacy problem. Mamy dane n + 1 punktów (x i, y i ): x x 0 x 1 x 2 x n y y 0 y 1 y 2 y n Węzły x i sa takie, że x 0 < x 2 < < x n. Trzeba znaleźć wielomian p Π n taki, że p(x i ) = y i (0 i n).
Gdybyśmy chcieli otrzymać wielomian interpolacyjny w postaci spełniajacy p(x) = a 0 + a 1 x + a 2 x 2 + + a n x n, p(x i ) = y i dla 0 i n. Wówczas musimy wyznaczyć n + 1 współczynników a 0, a 1,..., a n. Co prowadzi do układu równań z macierza Vandermonde a, źle uwarunkowana, 1 x 0 x0 2 x n 0 a 0 y 0 1 x 1 x1 2 x1 n a 1........ = y 1. 1 x n xn 2 xn n a n y n
Twierdzenie 1 Dla węzłów x i i liczb y i istnieje dokładnie jeden wielomian p Π n spełniajacy warunki interpolacji p(x i ) = y i (0 i n).
Dowód Wprowadźmy wielomian l i stopnia n n x x j l i (x) =, l i (x) = x i x j j=0 j i { 0 dla x = xj, 1 dla x = x i. Otrzymujemy wielomian L n Π n spełniajacy warunki interpolacji n n L n (x) = y i l i (x), L n (x j ) = y i l i (x j ) = y j. i=0 (Jednoznaczność) Załóżmy, że istnieja dwa wielomiany L 1, L 2 Π n. Spełniajace warunki interpolacji. Zatem (L 1 L 2 )(x j ) = 0 (0 j n). (L 1 L 2 ) Π n i n + 1 miejsc zerowych (sprzeczność). St ad L 1 L 2. i=0
Postać Lagrange a wzoru interpolacyjnego L n (x) = n y i i=0 j=0 j i n x x j x i x j
... Twierdzenie 2 (Bład interpolacji wielomianowej) Niech f C n+1 [a, b] i niech p Π n będzie wielomianem interpolacyjnym na węzłach x 0, x 1,..., x n [a, b]. To istnieje ζ x (a, b) (zależna od x) takie, że f (x) p(x) = 1 (n + 1)! f (n+1) (ζ x ) n (x x i ). Przykład Jaki jest bład interpolacji funkcji f (x) = sin x za pomoca wielomianu stopnia 9 w przedziale [0, 1]. Korzystamy z Twierdzenia 2. Szacujemy f (10) (ζ x ) 1, Π 9 i=0 (x x i) 1 dla x [0, 1]. sin x p(x) = f (10) (ζ x ) Π 9 i=0 10! (x x i) 1 10! < 2.8 10 7. i=0
Dowód Twierdzenia 2 Jeżeli x jest węzłem interpolacyjnym x i, to obie strony równania się zeruja (w twierdzeniu). Ustalmy x taki, że x x i i zdefiniujmy funkcję φ n w(t) = (t x i ), φ f p λw. i=0 λ jest liczba rzeczywista dobrana tak, aby φ(x) = 0. Stad λ = (f (x) p(x))/w(x). φ C n+1 [a, b] i φ zeruje się w n + 2 punktach x, x 0, x 1,..., x n. Z twierdzenia Rolle a pochodna φ ma co najmniej n + 1 miejsc zerowych. Podobnie φ ma co najmniej n miejsc zerowych. Stosujac dalej twierdzenie Rolle a. Dostajemy, że φ n+1 ma co najmniej jedno zero, powiedzmy ζ x (a, b). φ (n+1) = f (n+1) p (n+1) λw (n+1) = f (n+1) (n + 1)!λ. Stad 0 = φ (n+1) (ζ x) = f (n+1) (ζ x) (n + 1)!λ = f (n+1) (ζ x) (n + 1)! Ostatecznie f (x) p(x) = 1 (n + 1)! f (n+1) (ζ x) n (x x i ). i=0 f (x) p(x). w(x)
Ilorazy różnicowe Z Twierdzenia 1 wiemy, że dla różnych węzłów x 0, x 1,..., x n istnieje dokładnie jeden wielomian p Π n interpolujacy f taki, że p(x i ) = f (x i ) (0 i n) Wielomian p można przedstawić jako kombinację liniowa 1, x, x 2,..., x n (baza Π n ). Jednak takie przedstawienie nie jest zalecane, ponieważ prowadzi do układu z macierza Vandermonde a (zadanie źle uwarunkowane). Przedstawimy p w innej bazie Π n q 0 (x) = 1 q 1 (x) = (x x 0 ) q 2 (x) = (x x 0 )(x x 1 ). q n (x) = (x x 0 )(x x 1 ) (x x n 1 )
Ilorazy różnicowe p(x) = n c j q j (x). Z faktu, że p spełnia warunki interpolacji, otrzymujemy układ równań z którego wyznaczamy c 0, c 1,..., c n j=0 n c j q j (x i ) = f (x i ) (0 i n) j=0 1 0 0 0 1 q 1 (x 1 ) 0 0....... 1 q 1 (x n ) q 2 (x n ) q n (x n ) c 0 c 1. c n = f (x 0 ) f (x 1 ). f (x n )
Ilorazy różnicowe Rozwiazuj ac układ z góry w dół wyznaczamy c 0, c 1,..., c n. Możemy zauważyć, że c 0 zależy od f (x 0 ), c 1 zależy od f (x 0 ) i f (x 1 ) itd. c n zależy od f w punktach x 0, x 1,..., x n. Wprowadzimy notację c n = f [x 0, x 1,..., x n ]. f [x 0, x 1,..., x n ] jest współczynnikiem przy q n. Ponieważ q n (x) = (x x 0 )(x x 1 ) (x x n 1 ) = x n + więc f [x 0, x 1,..., x n ] jest współczynnikiem przy x n wielomianu stopnia co najwyżej n interpolujacego f w węzłach x 0, x 1,..., x n. Wielkość f [x 0, x 1,..., x n ] będziemy nazywali ilorazem różnicowym opartym na węzłach x 0, x 1,..., x n.
Ilorazy różnicowe Np. f [x 0 ] jest współczynnikiem przy x 0 wielomianu stopnia 0 interpolujacego f w x 0. f [x 0 ] = f (x 0 ). f [x 0, x 1 ] jest współczynnikiem przy x 1 wielomianu stopnia 1 interpolujacego f w x 0, x 1. p(x) = f (x 0 ) + f (x 1) f (x 0 ) x 1 x 0 (x x 0 ) = f (x 0 ) + f [x 0, x 1 ](x x 0 ). Ogólnie c i wyznaczamy z wcześniejszego układu równań c 0 = f [x 0 ], c 1 = f [x 0, x 1 ] aż do c n = f [x 0, x 1,..., x n ]. Otrzymujemy postać Newtona wzoru interpolacyjnego p(x) = n c k q k (x) = k=0 n k=0 k 1 f [x 0, x 1,..., x k ] (x x j ). j=0
Ilorazy różnicowe Oczywiście: f [x i ] = f (x i ), dla 0 i n. Twierdzenie 3 (Ilorazy różnicowe wyższych rzędów) Ilorazy różnicowe spełniaja równość: f [x 0, x 1,..., x n ] = f [x 1, x 2,..., x n ] f [x 0, x 1,..., x n 1 ] x n x 0.
Dowód Twierdzenia 3 Niech będzie wielomianem p k Π k interpolujacym f w węzłach x 0,..., x k. Potrzebujemy p n and p n 1. Niech będzie wielomianem q Π n 1 interpolujacym f w węzłach x 1,..., x n. Wtedy p n (x) = q(x) + x x n x n x 0 (q(x) p n 1 (x)) Po obu stronach równości sa wielomiany stopnia n. Wartości tych w punktach x 0, x 1,..., x n sa takie same, co implikuje wielomiany musza być identyczne. Muszę mieć więc, po obu stronach, identyczne współczynniki przy x n i te współczynniki sa równe. Współczynnik wielomianu stopnia n interpolujacego f w punktach x 0, x 1,..., x n jest równy f [x 0, x 1,..., x n ]. Stad dostajemy f [x 0, x 1,..., x n ] = f [x 1, x 1,..., x n ] f [x 0, x 1,..., x n 1 ] x n x 0
Ilorazy różnicowe Jeżeli dana jest tablica wartości funkcji (x i, f (x i )), wówczas ilorazy różnicowe łatwo obliczamy konstruujac tablicę trójkatn a Ilorazy różnicowe rzędów 0, 1, 2, 3 obliczamy x 0 f [x 0 ] f [x 0, x 1 ] f [x 0, x 1, x 2 ] f [x 0, x 1, x 2, x 3 ] x 1 f [x 1 ] f [x 1, x 2 ] f [x 1, x 2, x 3 ] x 2 f [x 2 ] f [x 2, x 3 ] x 4 f [x 3 ]
Ilorazy różnicowe Przykład Skonstruować tablicę ilorazów różnicowych dla wartości z tabeli x 3 1 5 6 f (x) 1 3 2 4 Korzystajac z Twierdzenia 3 konstruujemy tablicę ilorazów różnicowych 3 1 2 3/8 7/40 1 3 5/4 3/20 5 2 2 6 4
Ilorazy różnicowe Twierdzenie 4 Ilorazy różnicowe nie zależa od kolejności węzłów. Jeśli (z 0, z 1,..., z n ) jest permutacja (x 0, x 1,..., x n ), to f [z 0, z 1,..., z n ] = f [x 0, x 1,..., x n ]. Dowód Iloraz różnicowy f [z 0, z 1,..., z n ] jest równy współczynnikowi przy x n wielomianu stopnia n interpolujacego f w węzłach z 0, z 1,..., z n. Podobnie Iloraz różnicowy f [x 0, x 1,..., x n ] jest równy współczynnikowi przy x n wielomianu stopnia n interpolujacego f w węzłach x 0, x 1,..., x n. Wielomiany oczywiście sa równe więc współczynniki sa równe.
Ilorazy różnicowe Twierdzenie 5 Niech będzie wielomianem p Π n interpolujacym f różnych węzłach x 0, x 1,..., x n. Jeżeli t x i, wtedy n f (t) p(t) = f [x 0, x 1,..., x n, t] (t x j ). j=0
Dowód Twierdzenia 5 Niech będzie wielomianem q Π n+1 interpolujacym f w węzłach x 0, x 1,..., x n, t. Wielomian q możemy otrzymać z p przez dodanie jednego czynnika (postać Newtona) q(x) = p(x) + f [x 0, x 1,..., x n, t] Ponieważ q(t) = f (t) dla x = t. Zatem f (t) p(t) = f [x 0, x 1,..., x n, t] n (x x j ). j=0 n (t x j ) j=0
Ilorazy różnicowe Twierdzenie 6 Jeżeli f C n+1 [a, b] i węzły x 0, x 1,..., x n (a, b). Wtedy istnieje ζ (a, b) taka, że f [x 0, x 1,..., x n ] = 1 n! f (n) (ζ).
Dowód Twierdzenia 6 Niech będzie wielomianem p Π n 1 interpolujacym f w węzłach x 0, x 1,..., x n 1. Z Twierdzenia 2 wynika, że istnieje ζ (a, b) takie, że f (x n ) p(x n ) = 1 n 1 n! f (n) (ζ) (x n x j ) dla x = x n. Z Twierdzenia 5 otrzymujemy j=0 n 1 f (x n ) p(x n ) = f [x 0, x 1,..., x n ] (x n x j ) dla t = x n. j=0 Porównujac te dwa równania dostajemy f [x 0, x 1,..., x n ] = 1 n! f (n) (ζ)