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