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