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
x0n1 x0n   a0   y0 
   
x1n1 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 ) i0 xk  xi
ik
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ć
n1 ( x )
yk
k 0 ( x  xk )n1 ( xk )
n
Pn ( x )  
(wykazać !)
n
gdzie n1 ( 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 ( n1) ( I x ) dla pewnego przedziału I x z jej dziedziny. Niech
x0 , x1 ,..., xn1 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 ( n1) ( )
En ( x )  f ( x )  Pn ( x ) 
n1 ( x )
( n  1)!
n
gdzie n1 ( 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 )
n1 (t )
n1 ( 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 ( n1) ( )  0 ,   I x
Co to oznacza? Otóż mamy:
0  g ( n1) ( )  En( n1) ( ) 
En ( x) ( n1)
E ( x)
n1 ( )  f ( n1) ( )  Pn( n1) ( )  n
n1 ( x)
n1 ( x)
 0 bo Pn jest
stopnia n!
(n  1)!
wspolczynnik
przy xn1 w  n1 ( 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
n1 ( x )   x  xk  h
k 0
1
4
( n 1)
n!

h n1
f ( x )  Pn ( x ) 
max | f ( n1) ( ) |
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,...
Tn1 ( 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 Tn1 ( x) w roli węzłów interpolacyjnych minimalizuje
wartość bezwzględną wielomianu n1 ( 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
( n1)
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 
ba
 2k  1   a  b
cos 

2
2
 n 1 2 
a oszacowanie błędu aproksymacji ma postać
(b  a )n1
f ( x )  Pn ( x )  2 n1
max | f ( n1) ( ) |
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  m1
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,...,n1
, mn
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,..,kk 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  xn1 )
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

Podobne dokumenty