W1_Interpolacja wielomianowa
Transkrypt
W1_Interpolacja wielomianowa
WYKŁAD 1 INTERPOLACJA WIELOMIANOWA 1/16 Sformułowanie problemu interpolacji. Metoda Lagrange’a Rozważmy zadany układ punktów {( x j , y j ), j 0,1,..., n}, zwanych dalej węzłami interpolacyjnymi. Poszukujemy wielomianu interpolacyjnego zadanego wzorem Pn ( x ) an x an 1 x n i takiego, że n 1 n ... a1 x a0 ak x k k 0 Pn ( x j ) y j , j 0,1,..., n Innymi słowy – wykres wielomianu powinien być linią przechodzącą przez zadany układ węzłów interpolacyjnych (vide obrazek Trzy podstawowe pytania: 1. Czy taki wielomian istnieje? 2. Jeśli tak, to czy jest jedyny? 3. Jeśli tak, to jak go wyznaczyć? 2/16 Zacznijmy od podejścia typu „brutalna siła” (brute force approach). Podejście to polega na wypisaniu wynikającego z warunków interpolacji układu równań dla współczynników wielomianu Pn ( x j ) y j , j 0,1,..., n . Układ ten ma postać 1 1 1 1 x0 x1 x02 x12 xj x 2j xn xn2 W notacji macierzowo-wektorowej mamy x0n1 x0n a0 y0 x1n1 x1n a1 y1 n 1 n xj x j a j y j n 1 n xn xn an yn Wa y gdzie element macierzy W (zwanej macierzą Van der Monda) dane są wzorem w j ,k x kj , j, k 0,1,..., n Otrzymany układ równań można (przynajmniej w teorii) rozwiązać za pomocą jednej ze standardowych metod (np. metodą eliminacji Gaussa). Można pokazać, że jeśli wszystkie węzły są różne, to macierz W jest nieosobliwa i układ ma jednoznaczne rozwiązanie – wielomian interpolacyjny istnieje i jest jedyny. 3/16 Zauważmy, że stopień wielomianu interpolacyjnego Pn jest o jeden niższy niż liczba węzłów. W przeciwnym wypadku zagadnienie wyznaczenia wielomianu interpolacyjnego albo jest nieokreślone (gdy stopień wielomiany jest ≥ liczby węzłów; wtedy istnieje nieskończenie wiele wielomianów interpolacyjnych) lub nadokreślony (gdy stopień wielomianu jest < liczba węzłów minus jeden; wtedy układ jest na ogół sprzeczny i wielomian interpolacyjny nie istnieje) Dobra wiadomość: istnieją metody sprytniejsze niż metoda ”brutalna”! Ich zastosowane pozwala uniknąć rozwiązywania jakiegokolwiek układu równań. Zacznijmy od metody Lagrange’a. Jej główna idea polega na wykorzystaniu specjalnie skonstruowanych wielomianów interpolacyjnych, danych wzorem n ( x x0 ) ( x xk 1 )( x xk 1 ) ( x xn ) x xi lk ( x) , k 0,1,..., n ( xk x0 ) ( xk xk 1 )( xk xk 1 ) ( xk xn ) i0 xk xi ik Kluczowa własność tych wielomianów to lk ( x j ) jk symbol Kroneckera 0 gdy j k 1 gdy j k 4/16 Wykresy takich wielomianów przedstawiają się następująco Mając powyżej zdefiniowane wielomiany (interpolacyjne Lagrange’a; nie należy ich mylić w tzw. ortogonalnymi wielomianami Lagrange’a) rozwiązanie problemu interpolacji jest natychmiastowe. Wystarczy napisać n Pn ( x) yk lk ( x) k 0 W istocie, weryfikacja warunków interpolacji daje następujący efekt n n k 0 k 0 Pn ( x j ) yk lk ( x j ) yk jk y j , j 0,1,..., n 5/16 Dla dociekliwych: Alternatywna (ale równoważna) formuła dla wielomianu interpolacyjnego Pn ma postać n1 ( x ) yk k 0 ( x xk )n1 ( xk ) n Pn ( x ) (wykazać !) n gdzie n1 ( x ) ( x xk ) ( x x0 )( x x1 )...( x xn ) k 0 Przybliżanie (aproksymacja) funkcji wielomianem interpolacyjnym Wielomian interpolacyjny może być użyty do przybliżania innych funkcji. Załóżmy, że mamy dane węzły interpolacyjne {( x j , y j ), j 0,1,..., n} gdzie y j f ( x j ) , j 0,1,..., n Kluczowe pytanie: jaka jest dokładność przybliżenia (aproksymacji) zadanej funkcji f przez wielomian interpolacyjny Pn obliczony dla tych węzłów? Ogólnej odpowiedzi na tak zadane pytanie udziela następujące twierdzenie. 6/16 Twierdzenie 1: Załóżmy, że f C ( n1) ( I x ) dla pewnego przedziału I x z jej dziedziny. Niech x0 , x1 ,..., xn1 będą zadanymi i różnymi węzłami interpolacyjnymi zawartymi w I x i niech x oznacza dowolną liczbę w tym przedziale. Wówczas istnieje taka liczba I x , że błąd aproksymacji funkcji f przez wielomian interpolacyjny Pn może być zapisany w postaci f ( n1) ( ) En ( x ) f ( x ) Pn ( x ) n1 ( x ) ( n 1)! n gdzie n1 ( x ) ( x xk ) ( x x0 )( x x1 )...( x xn ) k 0 Dowód: Ustalmy x and rozważmy funkcję postaci g ( t ) En ( t ) En ( x ) n1 (t ) n1 ( x ) , x xk , k 0,1,..., n Twierdzimy, że funkcja g ma dokładnie n+2 miejsca zerowe (pierwiastki). 7/16 W istocie, mamy … En ( x ) g ( xk ) E n ( xk ) ( x ) 0 , k 0,1,..., n n 1 ( x ) n 1 k 0 0 En ( x ) g ( x ) En ( x ) n 1 ( x ) 0 n 1 ( x ) Skoro tak, to pochodna g ma w przedziale Ix n+1 miejsc zerowych, pochodna g ma n miejsc zerowych, itd. Wreszcie, pochodna g ( n 1) ma w przedziale Ix dokładnie jedno miejsce zerowe – oznaczmy je symbolem ξ g ( n1) ( ) 0 , I x Co to oznacza? Otóż mamy: 0 g ( n1) ( ) En( n1) ( ) En ( x) ( n1) E ( x) n1 ( ) f ( n1) ( ) Pn( n1) ( ) n n1 ( x) n1 ( x) 0 bo Pn jest stopnia n! (n 1)! wspolczynnik przy xn1 w n1 ( x ) jest rowny 1 co po przekształceniu daje natychmiast formułę z tezy twierdzenia. Koniec dowodu! 8/16 W przypadku szczególnym równoodległych węzłów interpolacyjnych mamy xk x0 kh , k 0,1,..., n , h xn x0 n Można pokazać, że dla węzłów równoodległych mają miejsce oszacowania n n1 ( x ) x xk h k 0 1 4 ( n 1) n! h n1 f ( x ) Pn ( x ) max | f ( n1) ( ) | 4(n 1) [ x0 , xn ] Czy zwiększenie liczby użytych węzłów interpolacyjnych prowadzi do ulepszenia aproksymacji, tj. zmniejszenia różnicy pomiędzy oryginalną funkcją a przybliżającym ją wielomianem interpolacyjnym? Niekoniecznie! Rozważmy aproksymację następującej fukcji wymiernej f ( x) 1 1 10 x 2 na odcinku [-1,1] wielomianami interpolacyjnym rozpiętych na węzłach równoogległych. Efekt pokazuje obrazek. 9/16 Amplituda “oscylacji” wielomianu interpolacyjnego w pobliżu konców przedziału powiększa się ze wzrostem jego stopnia n. Błąd aproksymacji nie maleje, lecz wzrasta. Ściślej, ciąg liczbowy postaci max f ( x) P ( x) n x[ 1,1] n jest rozbieżny. Jest to przykład tzw. efektu Rungego. Lekarstwem na efekt Rungego (do pewnego stopnia) jest użycie węzłów rozmieszczonych nierównomiernie. Intuicja podpowiada, że w pobliżu końców przedziału interpolacji węzły pownny być rozmieszczone gęściej. Okazuje się, że istnieje optymalny wybór węzłów! Dla przedziału [-1,1] są to liczby miejsca zerowe wielomianu Czebyszewa (2-ego rodzaju) stopnia n+1, tj. 2k 1 xkT cos , k 0,1,..., n n 1 2 Wielomiany Czebyszewa definiuje następująca reguła rekurencyjna T0 ( x) 1 , T1 ( x) x Tk 1 ( x) 2 xTk ( x) Tk 1 ( x) , k 1,2,... 10/16 Na przykład: T2 ( x) 2 x 2 1 , T3 ( x) 4 x3 3x , T4 ( x) 8 x 4 8 x 2 1 , itd. Zachodzi również następujący związek z funkcjami trygonometrycznymi cos kx Tk (cos x) Z punktu widzenia aktualnego problemu, kluczowa własność wielomianów Czebyszewa to x [1,1] Tk ( x) 1 , k 0,1,... Tn1 ( x) 2 Możemy zatem napisać n n k 0 ( x xkT ) n T ( x x k) k 0 1 2n Głębokie twierdzenie mówi, że dla każdego innego wyboru n+1 punktów w przedziale [-1,1] mamy zawsze n max x[ 1,1] ( x zk ) k 0 1 2n , zk [1,1] , k 0,1,..., n tj. wybór miejsc zerowych wielomianu Tn1 ( x) w roli węzłów interpolacyjnych minimalizuje wartość bezwzględną wielomianu n1 ( x ) w przedziale [-1,1]. 11/16 Oszacowanie błędu aproksymacji przez wielomian interpolacyjny zbudowany na węzłach Czebyszewa ma postać f ( x) Pn ( x) 1 ( n1) max | f ( ) | n [ 1,1] 2 (n 1)! Zauważmy, że mianownik bardzo szybko maleje ze wzrostem stopnia wielomianu n. Oznacza to, że dobre przybliżenie funkcji f jest możliwe nawet wtedy, gdy maksimum modułu jej (n+1)-ej pochodnej rośnie szybko z n. Jak pokazuje rysunek, wybór węzłów Czebyszewa eliminuje efekt Rungego w naszym przykładzie. Dla przedziału [a,b] węzły Czebyszewa definiujemy wzorem xkT ba 2k 1 a b cos 2 2 n 1 2 a oszacowanie błędu aproksymacji ma postać (b a )n1 f ( x ) Pn ( x ) 2 n1 max | f ( n1) ( ) | 2 ( n 1)! [ a ,b ] 12/16 Konstrukcja wielomianu interpolacyjnego metodą Newtona Na koniec przedstawimy alternatywną metodę wyznaczania wielomianu interpolacyjnego. Jak poprzednio, mamy dane Yk yk , k 0,1,...., n interpolacyjne Yk ,k 1 yk 1 yk Yk 1 Yk , k 0,1,..., n 1 {( x0 , y0 ),( x1 , y1 ),...,( xn , yn )} xk 1 xk xk 1 xk Yk 1,k 2 Yk ,k 1 Konstruujemy sekwencje Y , k 0,1,..., n 2 k ,k 1,k 2 (tablicę) tzw. różnic dzielonych xk 2 xk wg przedstawionych formuł. Należy zwrócić uwagę na Yk 1,k 2,...,k m Yk ,k 1,...,k m1 sposób numerowania kolejnych Y , k 0,1,..., n m k ,k 1,...,k m różnic dzielonych na kolejnych xk m xk poziomach. Y1,2,...,n Y0,1,...,n1 , mn Y0,1,...,n xn x0 13/16 Następnie, definiujemy rodzinę wielomianów k k ( x x0 )( x x1 )...( x xk ) ( x x j ) , k 0,..., n 1 j 0 Wreszcie, wielomian interpolacyjny Pn jest skonstruowany następująco n Pn ( x) Y0 Y0,1,..,kk 1 ( x) k 1 y0 Y0,1 ( x x0 ) Y0,1,2 ( x x0 )( x x2 ) ... Y0,1,2,...,n ( x x0 )( x x2 )...( x xn1 ) Powyższa formuła jest nieoczywista, ale jej dowód jest dość długi i „techniczny”. Można do znaleźc w większości podręczników do analizy numerycznej. Ograniczymu się do pokazania jak działa wzór Newtona dla n = 2. Zgodnie z tym wzorem, wielomian interpolacyjny dla węzłów {( x0 , y0 ),( x1 , y1 ),( x2 , y2 )} ma postać P2 ( x) Y0 Y0,1( x x0 ) Y0,1,2 ( x x0 )( x x1) 14/16 Pokażemy, że wielomian P2 ( x) istotnie spełnia warunki interpolacji tj. P2 ( x j ) y j , j 0,1,2 Rachunki przebiegają następująco: P2 ( x0 ) y0 P ( x ) y Y ( x x ) y y1 y0 ( x x ) y 0 0,1 1 0 0 1 2 1 x1 x0 1 0 P2 ( x2 ) y0 Y0,1 ( x2 x0 ) Y0,1,2 ( x2 x0 )( x2 x1 ) y1 y0 y2 y1 y yx1 xy0 ( x x ) x2 x1 x1 x0 ( x x ) ( x x ) 0 2 0 2 1 0 1 0 2 x2 x0 y0 yx1 xy0 ( x2 x0 ) y2 y1 yx1 xy0 ( x2 x1 ) 1 0 1 0 y0 y2 y1 yx1 xy0 ( x2 x0 x1 x2 ) y2 1 0 15/16 Algorytm Hornera Efektywną numerycznie metodą obliczania wartości wielomianu interpolacyjnedo zadanego w formie Newtona jest algorytm Hornera. Jego pseudokod można zapisać następująco % Algorytm Hornera % Wektor w przechowuje różnice dzielone % w(k ) Y0,1,..., k , k 0,1,..., n s W (n) for k n 1 : 0 : 1 ( pętla chodzi wstecz !) s s ( x xk ) W ( k ) end return s Ćwiczenie: napisz w języku C/C++ funkcję realizującą algorytm interpolacyjny Newtona. 16/16