Metody Numeryczne Ćwiczenie 4 Interpolacja
Transkrypt
Metody Numeryczne Ćwiczenie 4 Interpolacja
Metody Numeryczne Ćwiczenie 4 Interpolacja wielomianowa Podstawy teoretyczne. Niech ( X , ⋅ ) będzie przestrzenią unormowaną wszystkich funkcji (niekoniecznie ciągłych), określonych na skończonym przedziale domkniętym [a, b] ⊂ R; niech P będzie zbiorem wszystkich wielomianów jednej zmiennej rzeczywistej. Szczególnym rodzajem aproksymacji czyli poszukiwania dla danej funkcji f ∈ X ,takiego wielomianu Pn ∈ P ,że ∀Wn ∈ P Pn − f ≤ Wn − f ; ( w sensie zadanej metryki ⋅ ) jest interpolacja wielomianowa. Wśród interpolacji wielomianowych szczególnie prosta interpolacja Lagrange’a. w Metodach Numerycznych jest 3.1 Zadanie interpolacji wielomianowej Lagrange’a. W przedziale [a, b] dany jest układ n + 1 różnych punktów zwanych węzłami. a ≤ x0 < x1 < x2 < ... < xn ≤ b. Dla danej funkcji f ∈ X poszukujemy wielomianu Pn ∈ P, stopnia ≤ n, o tej własności, że f ( x j ) = Pn ( x j ) dla j = 0,1, 2,..., n. Wielomian Pn spełniający powyższe warunki nazywamy wielomianem interpolacyjnym Lagrange’a. dla funkcji f, i węzłów x0 , x1 , x2 ,..., xn . Ten sposób aproksymacji pozwala przybliżać przy pomocy wielomianu Pn stopnia ≤ n dowolną funkcję ( nawet niekoniecznie ciągłą ), określoną jedynie w zadanych węzłach wymienionych w sformułowaniu zadania (3.1), ( mogą to być na przykład wielkości otrzymane z pomiarów eksperymentalnych ), zastępujemy wielomianem Pn . Twierdzenie 3.1 Zadanie interpolacji Lagrange’a ma jednoznaczne rozwiązanie. Dowód 1) Istnienie Podamy konstrukcję rozwiązania używając, tak zwanych wielomianów bazowych Lagrange’a., związanych z węzłami x0 , x1 , x2 ...xn . Każdemu węzłowi przyporządkowany jest wielomian stopnia n : ( x − x0 )( x − x1 )...( x − x j −1 )( x − x j +1 )...( x − xn ) (3.0 ) l j ( x) = , dla j = 0,1,..., n. ( x j − x0 )( x j − x1)...( x j − x j −1 )( x j − x j +1 )...( x j − xn ) 1dlaj = k l j ( xk ) = = δ jk , gdzie δ jk jest tak zwaną deltą Kroneckera oraz 0dlaj ≠ k że każda z funkcji l j jest wielomianem stopnia n. Zauważmy, że Stąd wynika, że n Pn ( x) = ∑ f ( x j )l j ( x), (3.1) j =0 jest wielomianem stopnia ≤ n, oraz, że n Pn ( xk ) = ∑ δ jk f ( x j ) = f ( xk ), j =0 co oznacza, że Pn jest wielomianem interpolacyjnym Lagrange’a o węzłach x0 , x1 ,..., xn dla funkcji f . 2) Jednoznaczność. Jeżeli poszukiwany wielomian Pn zapiszemy w postaci naturalnej, n Pn ( x) = ∑ a j x j , j =0 to jest w postaci jego rozwinięcia względem bazy wielomianów: 1, x, x 2 ,..., x n , to widzimy, że zadanie (3.1) sprowadza się do znalezienia współczynników ao , a1 , a2 ,..., an , spełniających układ n + 1 równań algebraicznych liniowych n ∑a x j =0 j j k = f ( xk ) dla k = 0,1,..., n. (3.2) Macierzą tego układu jest macierz Vandermonda: 1 1 V = 1 ... 1 xo x1 x0 2 x12 x2 x2 2 ... xn ... xn 2 x03 ... x0 n x13 ... x1n x23 ... x2 n ... ... ... xn 3 ... xn n (3.3) Z wykładu algebry wiadomo, że macierz taka jest nieosobliwa, jeśli węzły są różne. Zatem układ (1.2) ma jednoznaczne rozwiązanie. , Zauważmy, że dowód Twierdzenia 3.1 zawiera dwa różne algorytmy wyznaczania wielomianu Pn . Jeden z nich określony jest wzorem (3.1), zaś drugi wzorem (3.2). Każdy z tych algorytmów wyznacza ten sam wielomian Pn w postaci rozwinięcia względem innej bazy podprzestrzeni wielomianów stopnia ≤ n. Chwilowo zwróćmy uwagę, że na to, że układ równań (3.2), o macierzy Vandermonda (3.3) jest na ogół przy dużych wartościach n , bardzo źle uwarunkowany. To też dla dużych n unika się wyznaczania Pn przy pomocy układu (1.2). Oszacowanie błędu dla wielomianu interpolacyjnego Lagrange’a. Niech węzłach Pn będzie wielomianem interpolacyjnym Lagrange’a dla funkcji f :[a, b] → R, o a ≤ x0 < x1 < x2 < ... < xn ≤ b. Twierdzenie 3.2 Jeśli f ∈ C n +1 ([a, b]), to dla każdego x ∈ [a, b], w przedziale otwartym istnieje punkt ξ ( x), taki, że (min{x, x0 ,..., xn }, max{x, x0 ,..., xn }) f ( x) − Pn ( x) = f n +1 (ξ ( x)) ω ( x), (n + 1)! gdzie ω ( x) = ( x − x0 )( x − x1 )...( x − xn ). Uwaga. To twierdzenie podaje błąd interpolacji w każdym punkcie x ∈ [a., b]. Zauważmy, że błąd zależy od własności funkcji aproksymowanej f oraz od węzłów interpolacji (ω ( x)). Dowód Niech f ( x) − Pn ( x) gdy x ≠ x j , j = 0,1..., n ω ( x) K ( x) = 0 gdy x = x j , j = 0,1,..., n. K ( x) = oraz Zdefiniujmy funkcję zmiennej t i parametru x : F (t , x) = f (t ) − Pn (t ) − K ( x)ω (t ). Zauważmy, że F (t , x) jest funkcją różniczkowalną n+1 razy w sposób ciągły jako funkcja zmiennej t ∈ [a, b]. Ponadto F ( x, x) = 0, F ( x j , x) = 0, dla j = 0,1,..., n. Jeśli x ≠ x j , j = 0,1,..., n, to F (t , x) traktowana jako funkcja zmiennej t , zeruje się w n+2 różnych punktach przedziału [a, b] x, x0 , x1 ,..., xn . Stosując n+1 razy twierdzenie Rolle’a do kolejnych pochodnych funkcji F względem t , stwierdzamy, że • ∂ F (t , x) znika w n punktach między kolejnymi węzłami x, x1 ,..., xn , ∂t a więc n razy w różnych punktach przedziału otwartego (a, b), • • ∂2 F (t , x) znika w n-1 różnych punktach przedziału otwartego (a, b), ∂t 2 ................................................................................................................... ∂ n +1 F (t , x) znika w przynajmniej w jednym punkcie przedziału (a, b). ∂t n +1 Oznaczmy ten punkt przez ξ ( x). Zgodnie z definicją funkcji F (t , x), mamy ∂ n +1 F (t , x) = f ( n +1) (ξ ( x)) − K ( x)(n + 1)! = 0, ∂t n +1 gdyż ω ( n +1) (t ) = (n + 1)!. Stąd dla x ≠ x j , j = 0,1,..., n K ( x) = lub f ( x) − Pn ( x) f n +1 (ξ ( x)) = ω ( x) (n + 1)! f ( x) − Pn ( x) = f ( n +1) (ξ ( x)) ω ( x). (n + 1)! Wzór ten pozostaje prawdziwy, również gdy x = x j , j=0,1,...,n.. , Wnioski Z twierdzenia 3.2 wynika, że jeśli f ∈ C n +1 ([a, b]), to dla błędu interpolacji Lagrange’a mamy następujące oszacowanie w normie "sup" ( n + 1 ) pochodnej funkcji f. f − Pn ∞ ,[ a ,b ] ≤ f n +1 ∞ ,[ a ,b ] (n + 1)! ω ∞ ,[ a ,b ] (3.4) We wzorze tym błąd interpolacji jest szacowany z góry przez wyrażenie zależne od normy ''sup'' (n +1) pochodnej funkcji f . Przykład 3.1 Znaleźć wielomian interpolacyjny Lagrange’a dla danych : x f(x) 1 3 2 1 4 1 -1 7 Rozwiązanie Z równania (3.0) 1 ( x − ) ( x − 1) 1 4 l0 ( x) = = −18( x − )( x − 1), 1 1 1 4 ( − )( − 1) 3 4 3 1 ( x − )( x − 1) 1 3 l1 ( x) = = 16( x − )( x − 1), 1 1 1 3 ( − )( − 1) 4 3 4 1 1 ( x − )( x − ) 3 4 = 2( x − 1 )( x − 1 ). l2 ( x ) = 1 1 3 4 (1 − )(1 − ) 3 4 Z równania (3.1) wynika, że wielomian postaci 1 1 1 1 P2 ( x) = −36( x − )( x − 1) − 16( x − )( x − 1) + 14( x − )( x − ) 4 3 3 4 jest poszukiwanym wielomianem interpolacyjnym Lagrange’a. Przykład 3.1 ( zadanie 2 z listy 3 Pana dr Zbigniewa Szczepaniaka ) Wartość ln( x) chcemy liczyć w sposób przybliżony używając wielomianu interpolującego stopnia 3. o węzłach w wx = [100,101,102,103]. Nie wypisuj (to znaczy nie znajduj ) tego wielomianu, ale oszacuj błąd jaki popełnimy licząc ln(100.5). Rozwiązanie Korzystamy z równości (3.4) . Funkcję, którą interpolujemy jest funkcja f ( x) = ln( x). Zauważmy, że jest to funkcja klasy C ∞ . Przedziałem [a, b] jest przedział [100,103]. Liczba n+1 = 3+1=4. Obliczamy więc czwartą pochodną funkcji f . Mamy 1 f ' ( x) = ; x 1 f '' ( x) = − 2 , x 2 f (3) ( x) = 3 , x −6 f (4) ( x) = 4 . x 6 6 = f 4 ( x) =− 4 = 4 = 6 ⋅100−4. Z (3.5) wynika , że f (4) ( x) [100,103] ∞[100,103] x [100,103] x [100,103] (3.5) ( bo f 4 ( x) jest funkcją malejącą , więc największą wartość ( która jest jej ograniczeniem górnym) przyjmuje w lewym końcu przedziału [100,103]). Obliczamy 1 1 3 5 2 2 2 2 ω ( x) ∞[100,103] = ω ( x) [100,103] = (100.5 − 100)(100.5 − 101)(100.5 − 102)(100.5 − 103) = ⋅ ⋅ ⋅ = Podstawiając obliczone wartości norm do (3.4), otrzymujemy oszacowanie błędu interpolacji funkcji f ( x) = ln( x) wielomianem Lagrange’a stopnia trzeciego dla danych węzłów wx i punktu ( 100.5, 0 ). f − P3 (100.5) ∞ ≤ 15 /16 15 ⋅ 6 15 15 100−4 = ⋅100−4 = ⋅10−8. ⋅ 6 ⋅100−4 = 4! 16 ⋅ 24 64 64 Zatem błąd jaki popełniamy licząc ln(100.5) nie przekracza wartości 15 ⋅10−8. 64 Po tym ćwiczeniu powinniście Państwo umieć znajdować wielomian interpolacyjny w sensie Lagrange’a dla danych węzłów i danej funkcji oraz szacować błąd interpolacji Lagrange’a. Proponuję następujące dodatkowe zadania. Zadania 3.1 Wzorując się na przykładzie (3.1), znaleźć wielomian interpolacyjny Lagrange’a dla danych: x 0 2 3 4 f(x) 7 11 28 63 (5 punktów) 15 . 16 3.2 Wzorując się na przykładzie (3.2) oszacować błąd interpolacji funkcji f ( x ) = sin( x) liniowym wielomianem interpolacyjnym Lagrange’a w przedziale [0, 2]. (10 punktów) Uwaga Znajomość dowodów twierdzeń (3.1) i (3.2) tylko dla studentów, którzy mają ambicję uzyskania z ćwiczeń Metod Numerycznych 1 ocen: bardzo dobry lub dobry. Janusz Chojnacki