W n

Transkrypt

W n
Interpolacja
Zagadnienie interpolacji: znaleźć funkcję p określonej klasy
(np. wielomian), która w punktach
x0 , x1 ,..., xn (gdzie x x ,..., x ) przyjmuje wartości y0 , y1 ,..., yn
0
1
n
Mówimy, że p interpoluje wartości yk w węzłach xk.
Uwaga
Może się zdarzyć, że yk f ( xk ) dla k 0,1,, n
wartości funkcji f jest zbyt pracochłonne.
Mówimy wówczas,
że p interpoluje f.
lecz obliczanie
Zastosowania interpolacji
• Szacowanie określonych wielkości w
punktach pośrednich.
• Prowadzenie gładkich krzywych lub
powierzchni przez punkty pomiarowe lub z
symulacji.
• Algorytmy numeryczne (np. całkowanie
numeryczne)
Twierdzenie
Istnieje dokładnie jeden wielomian interpolacyjny Wn(x) stopnia n
(n 0), który w punktach x0 , x1 ,..., xn przyjmuje wartości y0 , y1 ,..., yn
Dowód: Szukany wielomian ma postać:
Wn ( x )
an x n
an 1 x n
1

a0
otrzymujemy układ n+1 równań liniowych z n+1 niewiadomymi
współczynnikami ai , i 0, 1, , n
a0
a1 x0
a2 x02  an x0n
y0
a0
a1 x1 a2 x12  an x1n
y1
a0
a1 xi
a2 xi2  an xin
yi
a0
a1 xn
a2 xn2  an xnn
yn
Macierz Vandermonde’a
Układ równań można zapisać w postaci macierzowej
1 x0
1 x1
x02  x0n
x12  x1n
 
1 xi
 
1 xn

xi2

xn2
Macierz
Vandermonde’a
 
 xin
 
 xnn
a0
a1

ai

an
y0
y1

yi

yn
1 x0
1 x1
 
1 xi
 
1 xn
x02  x0n
x12  x1n
  
2
i
n
i
x  x
  
xn2  xnn
( xk
xj)
0 j k n
Wyznacznik Vandermonde’a jest różny od zera, jeśli tylko
xi xj, i j (dla i,j = 0,1,...,n). Wówczas układ równań ma
dokładnie jedno rozwiązanie.
Uwaga
Macierz Vandermonde’a bywa źle uwarunkowana - w obliczeniach
numerycznych stosuje się inne metody wyznaczania współczynników
wielomianu interpolacyjnego
Wzór interpolacyjny Lagrange’a
j
W
Skonstruujemy wielomiany pomocnicze n (x)
i = 0,1,...,n, stopnia n takie, że
i
n
W (x j )
ij
0 gdy i
1 gdy i
j
j
j
Oznacza to, że dla x0 , x1 ,, x j 1 , x j 1 ,, xn , wielomian Wn (x)
równa się zeru, a dla xj równa się jedności. Stąd jest postaci:
Wni ( x)
Ponieważ
1 ci ( xi
skąd
ci
( xi
ci ( x x0 )( x x1 )  ( x xi 1 )( x xi 1 )  ( x xn )
Wni ( xi ) 1
x0 )( xi
x0 )( xi
więc
x1 ) ( xi
x1 ) ( xi
xi 1 )( xi
1
xi 1 )( xi
xi 1 ) ( xi
xi 1 ) ( xi
xn )
xn )
Ostatecznie:
Wni ( x)
( x x0 )( x x1 ) ( x xi 1 )( x xi 1 ) ( x xn )
( xi x0 )( xi x1 ) ( xi xi 1 )( xi xi 1 ) ( xi xn )
Wystarczy przyjąć:
n
Wni ( x) yi
Wn ( x)
i 0
Czyli:
Wzór interpolacyjny Lagrange’a
n
Wn ( x)
i 0
( x x0 )( x x1 )  ( x xi 1 )( x xi 1 )  ( x xn )
yi
( xi x0 )( x j x1 )  ( xi xi 1 )( xi xi 1 )  ( xi xn )
otrzymujemy wielomian stopnia co najwyżej n spełniający
wszystkie warunki wymagane przy interpolacji.
Przyjmując oznaczenie
n 1
( x)
(x
x0 )( x
x1 )( x
xn )
Wzór interpolacyjny Lagrange’a można zapisać
następująco:
n
n 1
Wn ( x)
i 0
( x xi )
( x)
n 1
( xi )
yi
gdzie n 1 ( xi ) jest wartością pochodnej wielomianu
danym punkcie xi .
n 1
( x) w
Przykład
Znaleźć wielomian interpolacyjny Lagrange’a, który w punktach
(1,2,3,4) przyjmuje wartości (3,1,-1,2).
(x
(1
(x
1
(3
p ( x) 3
1
2
1
2
2)( x
2)(1
1)( x
1)(3
3)( x
3)(1
2)( x
2)(3
4)
(x
1
4)
(2
4)
(x
2
4)
(4
( x 3 9 x 2 26 x 24)
( x 3 7 x 2 14 x 8)
5
6
x3 5x 2
43
6
x
1
3
1
2
1)( x
1)(2
1)( x
1)(4
3)( x
3)(2
2)( x
2)(4
4)
4)
3)
3)
( x 3 8 x 2 19 x 12)
( x 3 6 x 2 11x 6)
3.5
3
2.5
2
1.5
5 3 2 43
x 5x
x 1
6
6
0.5
0
0.5
1
1.5
0
1
2
3
x
4
Przybliżając funkcję f klasy Cn
wielomianem interpolacyjnym Wn stopnia n, możemy
obliczać jej wartości z dokładnością
R( x)
gdzie
f ( x) Wn ( x)
f ( n 1) ( )
(n 1)!
n 1
( x)
[ x0 , xn ]
W praktyce, ponieważ nie znamy wartości , dla oszacowania
modułu błędu metody posługujemy się wzorem
Rn ( x)
gdzie
Mn
1
Mn 1
(n 1)!
max
x0 x x n
n 1
( x)
f ( n 1) ( x)
Przykład
f ( x) sin( x)
Załóżmy, że przybliżamy f wielomianem stopnia 9 w przedziale [0,1]
Mamy: dla x [0,1]
| f ( n 1) ( x) | | f (10) ( x) | 1
więc
Mn
1
M 10
max
x0 x x9
f (10) ( x)
1
oraz
|
n 1
( x) | |
10
( x) | | ( x x0 )( x x1 )  ( x x9 ) | 1
skąd
R9 ( x)
M 10
10!
10 ( x )
1
2.8 10
10!
7
Twierdzenie Weierstrassa
Jeśli f jest funkcją ciągłą w przedziale [a,b], to dla dowolnego
0
istnieje wielomian p, dla którego || f
p ||
Uwaga!
f ( x) ( x 2 1) 1 , x [ 5,5] funkcja Runge:
Załóżmy, że Wn , n 1,2
norma zbieżności
jednostajnej
jest ciągiem wielomianów interpolacyjnych dla f
z równo oddalonymi węzłami. Wówczas (Wn ) nie dąży do f
Jednak na pewno istnieje taki ciąg układów węzłów w przedziale [a,b],
a x0( n )  xn( n ) b
że ciąg wielomianów interpolacyjnych zbudowanych na tych węzłach
jest zbieżny do f
f ( x ) ( x 2 1) 1 ,
x [ 5,5]
Wielomiany Czebyszewa
Dane są wzorem rekurencyjnym:
T0 ( x) 1, T1 ( x)
Tn ( x)
x
2 xTn 1 ( x) Tn 2 ( x) n
T0 x
1
T1 x
x
T2 x
2x2 1
T3 x
4 x 3 3x
T4 x
8x 4 8x 2 1
T5 x
16 x 5 20 x 3 5 x
T6 x
32 x 6 48 x 4 18 x 2 1
2
Minimalizacja błędu przez wybór
węzłów optymalnych
Niech Wn będzie wielomianem interpolującym f na [-1,1]
( n 1)
f
( )
Mamy: || R( x) || || f ( x) Wn ( x) || ||
|| ||
(n 1)!
n 1
( x) ||
[ 1,1]
dla pewnego
Spróbujemy na przedziale [-1,1] znaleźć takie węzły interpolacji,
aby wartość
||
n 1
była jak najmniejsza.
( x) ||
Wielomian p stopnia nn nazywamy standardowym, jeśli
współczynik przy x jest równy jedności.
Jeśli Wn jest wielomianem standardowym stopnia n, to
|| Wn ||[
1 n
1,1]
2
Ponadto znak równości osiągniety jest dla wielomianu
21 n Tn
W szczególności na przedziale [-1,1]:
n
||
n 1
( x) || ||
( x xi ) || 2
n
i 0
oraz norma ta jest najmniejsza gdy
n 1
( x)
n
2 Tn
1
Jest tak, gdy gdy węzłami interpolacji są zera wielomianu
tzn. punkty
xi
(2i 1)
cos
2n 2
(0 i
Tn
1
n).
zwane węzłami optymalnymi.
Wówczas, na przedziale [-1,1]
f ( n 1) ( )
|| R( x) || ||
|| 2
(n 1)!
n
dla pewnego
[ 1,1]
Wzór interpolacyjny Newtona
Niech f będzie daną funkcją oraz x0 , x1 ,..., xn węzłami interpolacji
Wielomian interpolacyjny
pn ( xi )
pn
f ( xi )
taki, że
i 1, n
dla
można zapisać w postaci:
pn ( x) c0 c1 ( x x0 )  cn ( x x0 ) ( x xn 1 )
Współczynniki tego wielomianu można określić indukcyjnie
c0
f ( x0 )
f ( x1 ) c0 c1 ( x1 x0 )
c1
f ( x1 ) f ( x0 )
x1 x0
itd.
Zauważmy że dla
0
k
od węzłów x0 , x1 ,..., xk
Oznaczmy ck
współczynnik
n
ck
zależy tylko
oraz wartości funkcji w tych punktach
f [ x0 , x1 ,..., xk ]
mamy:
f [ x0 ]
f [ x0 , x1 ]
f ( x0 )
f ( x1 ) f ( x0 )
x1 x0
itd.
Wyrażenia powyższej postaci będziemy nazywać ILORAZAMI
RÓŻNICOWYMI
Fakt
dla 0 k
n
f [ x0 , x1 , xk ]
f [ x1 , x2 ,  xk ] f [ x0 , x1 , xk 1 ]
xk x0
Tablica ilorazów różnicowych
x0
f [ x0 ]
f [ x0 , x1 ]
f [ x0 , x1 , x2 ]
x1
f [ x1 ]
f [ x1 , x2 ]
f [ x1 , x2 , x3 ]
x2
f [ x2 ]
f [ x2 , x3 ]
x3
f [ x3 ]
f [ x0 , x1 , x2 , x3 ]
3
1
5
6
x
3 1 5 6
f(x)
1 -3 2 4
1
2
5
3
4
2 2
4
3 7
8 10
3
20
x0
f [ x0 ]
f [ x0 , x1 ]
f [ x0 , x1 , x2 ]
x1
f [ x1 ]
f [ x1 , x2 ]
f [ x1 , x2 , x3 ]
x2
f [ x2 ]
f [ x2 , x3 ]
x3
f [ x3 ]
f [ x0 , x1 , x2 , x3 ]
3
7
p( x) 1 2( x 3)
( x 3)( x 1)
( x 3)( x 1)( x 5)
8
10
Interpolacja Hermite’a
x0
x1  xn
Jeśli pewien punkt
xi występuje na tej liście k i
razy
oznacza to, że spełnione mają być warunki
p ( j ) ( xi )
f ( j ) ( xi ) dla 0
j
ki 1
Przyjmijmy
f [ x0 , , x0 ]
1 (n)
f ( x0 )
n!
n+1 razy
Jeśli
x0
xn
f [ x0 , x1 , xn ]
f [ x1 , x2 , xn ] f [ x0 , x1 , xn 1 ]
xn x0
Wówczas wielomian Hermite’a dany jest wzorem
j 1
n
f [ x0 ,  , x j ]
p( x)
j 0
( x xi )
i 0
p(1) 2, p' (1) 3, p(2) 6, p' (2) 7, p' ' (2) 8
Wyznaczamy tablicę:
x0
p ( x0 )
p[ x0 , x0 ]
p[ x0 , x0 , x1 ]
p[ x0 , x0 , x1 , x1 ]
x0
p ( x0 )
p[ x0 , x1 ]
p[ x0 , x1 , x1 ]
p[ x0 , x1 , x1 , x1 ]
x1
p ( x1 )
p[ x1 , x1 ]
p[ x1 , x1 , x1 ]
x1
p ( x1 )
p[ x1 , x1 ]
x1
p ( x1 )
p[ x0 , x0 , x1 , x1 , x1 ]
p ( x1 ) p ( x0 )
x1 x0
p[ x0 , x0 ]
p ' ( x0 )
p ' (1) 3, p[ x0 , x1 ]
p[ x1 , x1 ]
p ' ( x1 )
p ' (2) 7, p[ x0 , x0 , x1 ]
p[ x0 , x1 , x1 ]
p[ x1 , x1 ] p[ x0 , x1 ]
x1 x0
7 4
1
3, p[ x1 , x1 , x1 ]
p[ x0 , x1 , x1 ] p[ x0 , x0 , x1 ]
x1 x0
3 1
1
p[ x0 , x1 , x1 , x1 ]
p[ x1 , x1 , x1 ] p[ x0 , x1 , x1 ]
x1 x0
4 3
1
1
1
1
2
2
2
2
2
6
6
6
p[ x0 , x1 , x1 , x1 ] p[ x0 , x0 , x1 , x1 ]
x1 x0
3 1 2
4 3 1
7 4
7
1
4
p[ x0 , x1 ] p[ x0 , x0 ]
x1 x0
p[ x0 , x0 , x1 , x1 ]
p[ x0 , x0 , x1 , x1 , x1 ]
6 2
2 1
4 3
1
1
p ' ' (2)
2
4
2
1 2
1
1
...
p( x)
2 3( x 1) ( x 1) 2
2( x 1) 2 ( x 2) ( x 1) 2 ( x 2) 2