Interpolacja wielomianowa (dokument w formacie PDF)
Transkrypt
Interpolacja wielomianowa (dokument w formacie PDF)
Interpolacja wielomianowa Kazimierz Jakubczyk 18 lutego 2008 Zagadnienie interpolacji Zakładamy, że danych jest n + 1 punktów x0 , x1 , . . . , xn i wartości y0 , y1 , . . . , yn pewnej funkcji f (znanej lub nieznanej) w tych punktach: yi = f (xi ) (i = 0, 1, . . . , n) Klasyczne (najstarsze i najprostsze) zagadnienie interpolacji wielomianowej polega na znalezieniu wielomianu Pn stopnia co najwyżej n takiego, że spełnione są warunki [1, 2, 3]: yi = Pn (xi ) (i = 0, 1, . . . , n) Mówimy, że wielomian Pn interpoluje wartości yi w węzłach xi , a także, że wielomian Pn interpoluje funkcję f . Istnienie i jednoznaczność rozwiązania Twierdzenie 1. Jeżeli liczby x0 , x1 , . . . , xn są parami różne, to istnieje dokładnie jeden wielomian Pn stopnia nie wyższego niż n taki, że yi = Pn (xi ) (i = 0, 1, . . . , n) Dowód. Jednoznaczność (dowód nie wprost). Przypuśćmy, że istnieją dwa wielomiany Pn i Qn stopnia co najwyżej n spełniające warunki Pn (xi ) = Qn (xi ) = yi (i = 0, 1, . . . , n) Wówczas różnica Rn ≡ Pn −Qn byłaby wielomianem stopnia nie wyższego niż n znikającym w n + 1 różnych punktach. Ponieważ jednak wielomian stopnia co najwyżej n nieznikający tożsamościowo może mieć nie wiecej niż n zer, więc Pn ≡ Qn (sprzeczność). Istnienie (wzór interpolacyjny Lagrange’a). Dla i = 0, 1, . . . , n funkcje pomocnicze 1 Li (x) = n Y (x − x0 ) . . . (x − xi−1 )(x − xi+1 ) . . . (x − xn ) x − xj = (xi − x0 ) . . . (xi − xi−1 )(xi − xi+1 ) . . . (xi − xn ) xi − xj j=0 j6=i są wielomianami stopnia dokładnie n takimi, że 1 (i = j) Li (xj ) = δij = 0 (i 6= j) (δij jest tzw. deltą Kroneckera). Wynika stąd, że Pn (x) = n X yi Li (x) = i=0 n X yi i=0 n Y x − xj xi − xj j=0 j6=i jest wielomianem stopnia co najwyżej n przyjmującym w węzłach xi wartości yi , co dowodzi istnienia rozwiązania zagadnienia interpolacji wielomianowej. Wybór bazy wielomianowej Wzór interpolacyjny Lagrange’a przedstawia wielomian interpolacyjny Pn jako kombinację liniową, w której n + 1 wielomianów Li stopnia n stanowi bazę przestrzeni wektorowej wielomianów stopnia co najwyżej n. Wzór jest łatwy do zaprogramowania na komputerze, ale koszt obliczeń (złożoność czasowa) jest wysoki z uwagi na dużą liczbe działań arytmetycznych. Mniejszym kosztem można zrealizować tego typu obliczenia, znając współczynniki postaci naturalnej tego wielomianu: Pn (x) = n X ai xi = a0 + a1 x + a2 x2 + . . . + an xn i=0 Bazę stanowią wówczas wielomiany 1, x, x2 , . . . , xn (potęgi zmiennej x), a warunki interpolacji prowadzą do układu n + 1 równań liniowych: a0 + a1 xi + a2 x2i + . . . + an xni = yi (i = 0, 1, . . . , n) który w zapisie macierzowym wygląda następujaco: 1 x0 x20 · · · xn0 a0 y0 1 x1 x21 · · · xn1 a1 y1 1 x2 x22 · · · xn2 × a2 = y2 ··· ··· ··· ··· ··· ··· ··· 1 xn x2n · · · xnn an yn Macierzą powyższego układu jest tzw. macierz Vandermonde’a. Jest ona nieosobliwa, ale bywa często źle uwarunkowana [2]. Dlatego nie zaleca się rozwiązywania tego układu, zwłaszcza że i koszt obliczeń byłby nadmiernie duży. 2 Wielką zaletą postaci naturalnej wielomianu jest łatwość obliczania jego wartości według schematu Hornera. Jeśli postać naturalną przedstawimy nieco inaczej: Pn (x) = (. . . ((an x + an−1 )x + an−2 )x + . . . + a1 )x + a0 to nietrudno zauważyć, że obliczanie wartości w = Pn (t) można zaprogramować następująco: w := a[n]; for i := n-1 downto 0 do w := w*t + a[i]; Dowodzi się, że ten sposób postępowania, zwany algorytmem Hornera, jest nie tylko numerycznie poprawny, ale i optymalny z punktu widzenia złożoności obliczeniowej. Szczególnie użyteczna jest postać Newtona wielomianu interpolacyjnego. Bazę stanowią wówczas wielomiany: N0 (x) = 1 Ni (x) = (x − x0 )(x − x1 ) · · · (x − xi−1 ) (i = 1, 2, . . . , n) Wzór interpolacyjny Newtona ma postać Pn (x) = c0 + c1 (x − x0 ) + c2 (x − x0 )(x − x1 ) + . . . + +cn (x − x0 )(x − x1 ) · · · (x − xn−1 ) = n X ci Ni (x) = i=0 n X i−1 Y ci i=0 (x − xj ) j=0 Współczynniki c0 , c1 , . . . , cn można wyznaczać kolejno, korzystając ze wzorów: y0 = c0 y1 = c0 + c1 N1 (x1 ) y2 = c0 + c1 N1 (x2 ) + c2 N2 (x2 ) ··· ··· ··· yn = c0 + c1 N1 (xn ) + c2 N2 (xn ) + . . . + cn−1 Nn−1 (xn ) + cn Nn (xn ) Nie warto jednak stosować tej metody, bo jest zbyt kosztowna w porównaniu z algorytmem wyznaczania tzw. ilorazów różnicowych. Warto jednak zauważyć, że znając współczynniki wielomianu interpolacyjnego Newtona, można również zaprogramować obliczanie jego wartości według schematu Hornera: w := c[n]; for i := n-1 downto 0 do w := w*(t-x[i]) + c[i]; 3 Ilorazy różnicowe Współczynniki ci (i = 0, 1, . . . , n) we wzorze interpolacyjnym Newtona zależą jedynie od węzłów x0 , x1 , . . . , xi i wartości y0 , y1 , . . . , yi funkcji f w tych węzłach. Zazwyczaj oznacza się je ci = f [x0 , x1 , . . . , xi ] i nazywa ilorazami różnicowymi rzędu i. Zapis wzoru interpolacyjnego Newtona za pomocą ilorazów różnicowych ukazuje zależność wielomianu interpolacyjnego od funkcji interpolowanej [2]: Pn (x) = n X f [x0 , x1 , . . . , xi ] i=0 i−1 Y (x − xj ) j=0 Nietrudno zauważyć, że ilorazy różnicowe rzędu pierwszego i drugiego mają postać: f [x0 ] = y0 y1 − y0 f [x1 ] − f [x0 ] f [x0 , x1 ] = = x1 − x0 x1 − x0 Twierdzenie 2. Ilorazy różnicowe spełniają zależność: f [x0 , x1 , . . . , xk ] = f [x1 , x2 , . . . , xk ] − f [x0 , x1 , . . . , xk−1 ] xk − x0 (k = 1, 2, . . . , n) Dowód. Niech pk będzie wielomianem stopnia nie wyższego niż k interpolującym f w węzłach x0 , x1 , . . . , xk . Wielomian taki będzie potrzebny dla k = n − 1 i k = n. Prócz tego niech q będzie wielomianem stopnia co najwyżej n − 1 interpolującyn f w węzłach x1 , x2 , . . . , xn . Zachodzi równość pn (x) = q(x) + x − xn [q(x) − pn−1 (x)] xn − x0 ponieważ lewa i prawa strona określają wielomiany stopnia co najwyżej n interpolujące funkcję f w węzłach x0 , x1 , . . . , xn , czyli ten sam wielomian. Porównanie współczynników obu stron przy xn prowadzi do tożsamości: f [x0 , x1 , . . . , xn ] = f [x1 , x2 , . . . , xn ] − f [x0 , x1 , . . . , xn−1 ] xn − x0 co, z uwagi na dowolność n, daje prawdziwość tezy. Oznaczenia węzłów użyte w tezie powyższego twierdzenia są nieistotne. Ich zmiana daje ogólny wzór: f [xi , xi+1 , . . . , xi+k ] = f [xi+1 , xi+2 , . . . , xi+k ] − f [xi , xi+1 , . . . , xi+k−1 ] xi+k − xi 4 Znając węzły xi i wartości funkcji yi = f (xi ), czyli ilorazy f [xi ] zerowego rzędu, można za pomocą tego wzoru utworzyć trójkątną tabelę ilorazów różnicowych wyższych rzędów: x0 x1 x2 ... xn f [x0 ] f [x1 ] f [x2 ] ... f [xn ] f [x0 , x1 ] f [x1 , x2 ] f [x0 , x1 , x2 ] ... ... ... f [xn−1 , xn ] f [xn−2 , xn−1 , xn ] . . . f [x0 , x1 , . . . , xn ] Jak widać, współczynniki ci są ilorazami różnicowymi leżącymi na głównej przekątnej tabeli ilorazów. Ich obliczanie można łatwo realizować na komputerze, używając jednowymiarowej tablicy c: for i := 0 to n do c[i] := y[i]; for j := 1 to n do for i := n downto j do c[i] := (c[i]-c[i-1])/(x[i]-x[i-j]); Wstępnie elementom tej tablicy przypisywane są wartości funkcji f w węzłach (ilorazy różnicowe zerowego rzędu). Następnie, w kolejności od dołu do góry, obliczane są ilorazy wyższych rzędów. Dzięki takiej organizacji obliczeń tablica zawiera w każdym kroku tylko te ilorazy, które będą później potrzebne. Na końcu zawiera współczynniki występujące we wzorze Newtona. Zaleca się, by węzły interpolacji były uporządkowane od najmniejszego do największego (lub odwrotnie). Udowodniono bowiem, że wówczas algorytm jest numerycznie poprawny i jednocześnie możliwie dokładny. Błąd interpolacji wielomianowej Twierdzenie 3. Jeżeli f ∈ C n+1 [a, b] i wielomian Pn stopnia co najwyżej n interpoluje funkcję f w n + 1 różnych punktach x0 , x1 , . . . , xn przedziału [a, b], to dla każdego x ∈ [a, b] istnieje takie ξ ∈ (a, b), że f (x) − Pn (x) = n Y 1 f (n+1) (ξ) (x − xi ) (n + 1)! i=0 Dowód. Wystarczy udowodnić twierdzenie dla x różnego od wszystkich węzłów, gdyż w przeciwnym razie obie strony powyższej równości są równe zero. Niech w(t) = n Y (t − xi ) i=0 Funkcja g(t) = f (t) − Pn (t) − 5 f (x) − Pn (x) w(t) w(x) jest klasy C n+1 [a, b] i znika w n + 2 punktach x, x0 , x1 , . . . , xn . Na podstawie twierdzenia Rolle’a funkcja g 0 ma w (a, b) co najmniej n + 1 zer, funkcja g 00 ma tam co najmniej n zer itd., a funkcja g (n+1) co najmniej jedno zero. Oznaczając je przez ξ, otrzymujemy: 0 = g (n+1) (ξ) = f (n+1) (ξ) − Pn(n+1) (ξ) − = f (n+1) (ξ) − f (x) − Pn (x) (n+1) w (ξ) = w(x) f (x) − Pn (x) (n + 1)! w(x) a to daje tezę twierdzenia. Uwagi końcowe W oszacowaniu różnicy f (x) − Pn (x) określającej błąd interpolacji można optymalizować czynnik (x − x0 )(x − x1 ) · · · (x − xn ), dobierając węzły w szczególny sposób. Zadanie to badał rosyjski matematyk Pafnutij L. Czebyszew (1821– 1894). Rozwiązanie wyraża się poprzez wielomiany noszące jego imię [2]: T0 (x) = 1 T1 (x) = x Tn (x) = 2xTn−1 (x) − Tn−2 (x) (n = 2, 3, . . .) Istnieje wiele efektywnych algorytmów przechodzenia pomiędzy różnymi bazami wielomianowymi, m. in. naturalną, Lagrange’a, Newtona i Czebyszewa. Oprócz interpolacji wielomianowej opartej na węzłach parami różnych rozpatruje się również interpolację z węzłami wielokrotnymi. Na przykład interpolacja Hermite’a polega na poszukiwaniu wielomianu, który w węzłach ma dane nie tylko wartości, ale i wartości pochodnych. Prostym przykładem takiej interpolacji jest zadanie, w którym poszukiwany jest wielomian p możliwie niskiego stopnia interpolujący w dwóch punktach x0 i x1 funkcję f i jej pochodną f 0 . Mówiąc dokładniej, wielomian ten ma spełniać cztery warunki: p(xi ) = f (xi ), p0 (xi ) = f 0 (xi ) (i = 0, 1) Literatura [1] Jankowscy J. i M.: Przegląd metod i algorytmów numerycznych, część 1, WNT, Warszawa 1981. [2] Kincaid D., Cheney W.: Analiza numeryczna, WNT, Warszawa 2006. [3] Stoer J.: Wstęp do metod numerycznych, tom 1, PWN, Warszawa 1979. 6