Metody Numeryczne Ćwiczenie 4 Interpolacja

Transkrypt

Metody Numeryczne Ćwiczenie 4 Interpolacja
Metody Numeryczne
Ćwiczenie 4
Interpolacja wielomianowa
Podstawy teoretyczne.
Niech
( X , ⋅ ) będzie
przestrzenią unormowaną wszystkich funkcji
(niekoniecznie
ciągłych), określonych na skończonym przedziale domkniętym [a, b] ⊂ R; niech P będzie
zbiorem wszystkich wielomianów jednej zmiennej rzeczywistej. Szczególnym rodzajem
aproksymacji czyli poszukiwania dla danej funkcji f ∈ X ,takiego wielomianu Pn ∈ P ,że
∀Wn ∈ P Pn − f ≤ Wn − f ; ( w sensie zadanej metryki ⋅ )
jest interpolacja wielomianowa.
Wśród interpolacji wielomianowych szczególnie prosta
interpolacja Lagrange’a.
w Metodach Numerycznych jest
3.1 Zadanie interpolacji wielomianowej Lagrange’a.
W przedziale [a, b] dany jest układ n + 1 różnych punktów zwanych węzłami.
a ≤ x0 < x1 < x2 < ... < xn ≤ b.
Dla danej funkcji f ∈ X poszukujemy wielomianu Pn ∈ P, stopnia ≤ n, o tej własności, że
f ( x j ) = Pn ( x j ) dla j = 0,1, 2,..., n.
Wielomian Pn spełniający powyższe warunki nazywamy wielomianem interpolacyjnym
Lagrange’a. dla funkcji f, i węzłów x0 , x1 , x2 ,..., xn .
Ten sposób aproksymacji pozwala przybliżać przy pomocy wielomianu Pn stopnia
≤ n dowolną funkcję ( nawet niekoniecznie ciągłą ), określoną jedynie w zadanych węzłach
wymienionych w sformułowaniu zadania (3.1), ( mogą to być na przykład wielkości
otrzymane z pomiarów eksperymentalnych ), zastępujemy wielomianem Pn .
Twierdzenie 3.1
Zadanie interpolacji Lagrange’a ma jednoznaczne rozwiązanie.
Dowód
1) Istnienie Podamy konstrukcję rozwiązania używając, tak zwanych wielomianów
bazowych Lagrange’a., związanych z węzłami
x0 , x1 , x2 ...xn . Każdemu węzłowi
przyporządkowany jest wielomian stopnia n :
( x − x0 )( x − x1 )...( x − x j −1 )( x − x j +1 )...( x − xn )
(3.0 )
l j ( x) =
, dla j = 0,1,..., n.
( x j − x0 )( x j − x1)...( x j − x j −1 )( x j − x j +1 )...( x j − xn )
1dlaj = k 
l j ( xk ) = 
 = δ jk , gdzie δ jk jest tak zwaną deltą Kroneckera oraz
0dlaj ≠ k 
że każda z funkcji l j jest wielomianem stopnia n.
Zauważmy, że
Stąd wynika, że
n
Pn ( x) = ∑ f ( x j )l j ( x),
(3.1)
j =0
jest wielomianem stopnia ≤ n, oraz, że
n
Pn ( xk ) = ∑ δ jk f ( x j ) = f ( xk ),
j =0
co oznacza, że Pn jest wielomianem interpolacyjnym Lagrange’a o węzłach x0 , x1 ,..., xn dla
funkcji f .
2) Jednoznaczność. Jeżeli poszukiwany wielomian Pn zapiszemy w postaci naturalnej,
n
Pn ( x) = ∑ a j x j ,
j =0
to jest w postaci jego rozwinięcia względem bazy wielomianów: 1, x, x 2 ,..., x n , to widzimy,
że zadanie (3.1) sprowadza się do znalezienia współczynników
ao , a1 , a2 ,..., an ,
spełniających układ n + 1 równań algebraicznych liniowych
n
∑a x
j =0
j
j k
= f ( xk ) dla k = 0,1,..., n.
(3.2)
Macierzą tego układu jest macierz Vandermonda:
1

1
V = 1

...
1

xo
x1
x0 2
x12
x2
x2 2
...
xn
...
xn 2
x03 ... x0 n 

x13 ... x1n 
x23 ... x2 n 

... ... ... 
xn 3 ... xn n 
(3.3)
Z wykładu algebry wiadomo, że macierz taka jest nieosobliwa, jeśli węzły są różne. Zatem
układ (1.2) ma jednoznaczne rozwiązanie. ,
Zauważmy, że dowód Twierdzenia 3.1 zawiera dwa różne algorytmy wyznaczania
wielomianu Pn . Jeden z nich określony jest wzorem (3.1), zaś drugi wzorem (3.2). Każdy z
tych algorytmów wyznacza ten sam wielomian Pn w postaci rozwinięcia względem innej bazy
podprzestrzeni wielomianów stopnia ≤ n.
Chwilowo zwróćmy uwagę, że na to, że układ równań (3.2), o macierzy Vandermonda (3.3)
jest na ogół przy dużych wartościach n , bardzo źle uwarunkowany. To też dla dużych n
unika się wyznaczania Pn przy pomocy układu (1.2).
Oszacowanie błędu dla wielomianu interpolacyjnego Lagrange’a.
Niech
węzłach
Pn będzie wielomianem interpolacyjnym Lagrange’a dla funkcji f :[a, b] → R, o
a ≤ x0 < x1 < x2 < ... < xn ≤ b.
Twierdzenie 3.2 Jeśli f ∈ C n +1 ([a, b]), to dla każdego x ∈ [a, b], w przedziale otwartym
istnieje punkt ξ ( x), taki, że
(min{x, x0 ,..., xn }, max{x, x0 ,..., xn })
f ( x) − Pn ( x) =
f n +1 (ξ ( x))
ω ( x),
(n + 1)!
gdzie ω ( x) = ( x − x0 )( x − x1 )...( x − xn ).
Uwaga. To twierdzenie podaje błąd interpolacji w każdym punkcie x ∈ [a., b]. Zauważmy, że
błąd zależy od własności funkcji aproksymowanej f oraz od węzłów interpolacji (ω ( x)).
Dowód
Niech
f ( x) − Pn ( x)
gdy x ≠ x j , j = 0,1..., n
ω ( x)
K ( x) = 0
gdy x = x j , j = 0,1,..., n.
K ( x) =
oraz
Zdefiniujmy funkcję zmiennej t i parametru x :
F (t , x) = f (t ) − Pn (t ) − K ( x)ω (t ).
Zauważmy, że F (t , x) jest funkcją różniczkowalną n+1 razy w sposób ciągły jako funkcja
zmiennej t ∈ [a, b]. Ponadto
F ( x, x) = 0,
F ( x j , x) = 0, dla j = 0,1,..., n.
Jeśli x ≠ x j ,
j = 0,1,..., n, to F (t , x) traktowana jako funkcja zmiennej t , zeruje się w n+2
różnych punktach przedziału [a, b]
x, x0 , x1 ,..., xn .
Stosując n+1 razy twierdzenie Rolle’a do kolejnych pochodnych funkcji F względem
t , stwierdzamy, że
•
∂
F (t , x) znika w n punktach między kolejnymi węzłami x, x1 ,..., xn ,
∂t
a więc n razy w różnych punktach przedziału otwartego (a, b),
•
•
∂2
F (t , x) znika w n-1 różnych punktach przedziału otwartego (a, b),
∂t 2
...................................................................................................................
∂ n +1
F (t , x) znika w przynajmniej w jednym punkcie przedziału (a, b).
∂t n +1
Oznaczmy ten punkt przez ξ ( x).
Zgodnie z definicją funkcji F (t , x), mamy
∂ n +1
F (t , x) = f ( n +1) (ξ ( x)) − K ( x)(n + 1)! = 0,
∂t n +1
gdyż ω ( n +1) (t ) = (n + 1)!. Stąd dla x ≠ x j , j = 0,1,..., n
K ( x) =
lub
f ( x) − Pn ( x) f n +1 (ξ ( x))
=
ω ( x)
(n + 1)!
f ( x) − Pn ( x) =
f ( n +1) (ξ ( x))
ω ( x).
(n + 1)!
Wzór ten pozostaje prawdziwy, również gdy x = x j , j=0,1,...,n..
,
Wnioski
Z twierdzenia 3.2 wynika, że jeśli f ∈ C n +1 ([a, b]), to dla błędu interpolacji Lagrange’a
mamy następujące oszacowanie w normie "sup" ( n + 1 ) pochodnej funkcji f.
f − Pn
∞ ,[ a ,b ]
≤
f n +1
∞ ,[ a ,b ]
(n + 1)!
ω
∞ ,[ a ,b ]
(3.4)
We wzorze tym błąd interpolacji jest szacowany z góry przez wyrażenie zależne od normy
''sup'' (n +1) pochodnej funkcji f .
Przykład 3.1
Znaleźć wielomian interpolacyjny Lagrange’a dla danych :
x
f(x)
1
3
2
1
4
1
-1
7
Rozwiązanie
Z równania (3.0)
1
( x − ) ( x − 1)
1
4
l0 ( x) =
= −18( x − )( x − 1),
1 1 1
4
( − )( − 1)
3 4 3
1
( x − )( x − 1)
1
3
l1 ( x) =
= 16( x − )( x − 1),
1 1 1
3
( − )( − 1)
4 3 4
1
1
( x − )( x − )
3
4 = 2( x − 1 )( x − 1 ).
l2 ( x ) =
1
1
3
4
(1 − )(1 − )
3
4
Z równania (3.1) wynika, że wielomian postaci
1
1
1
1
P2 ( x) = −36( x − )( x − 1) − 16( x − )( x − 1) + 14( x − )( x − )
4
3
3
4
jest poszukiwanym wielomianem interpolacyjnym Lagrange’a.
Przykład 3.1 ( zadanie 2 z listy 3 Pana dr Zbigniewa Szczepaniaka )
Wartość ln( x) chcemy liczyć w sposób przybliżony używając wielomianu interpolującego
stopnia 3. o węzłach w wx = [100,101,102,103]. Nie wypisuj (to znaczy nie znajduj ) tego
wielomianu, ale oszacuj błąd jaki popełnimy licząc ln(100.5).
Rozwiązanie
Korzystamy z równości (3.4) . Funkcję, którą interpolujemy jest funkcja f ( x) = ln( x).
Zauważmy, że jest to funkcja klasy C ∞ . Przedziałem [a, b] jest przedział [100,103].
Liczba n+1 = 3+1=4. Obliczamy więc czwartą pochodną funkcji f .
Mamy
1
f ' ( x) = ;
x
1
f '' ( x) = − 2 ,
x
2
f (3) ( x) = 3 ,
x
−6
f (4) ( x) = 4 .
x
6
6
= f 4 ( x)
=− 4
= 4
= 6 ⋅100−4.
Z (3.5) wynika , że f (4) ( x)
[100,103]
∞[100,103]
x [100,103] x [100,103]
(3.5)
( bo f 4 ( x) jest funkcją malejącą , więc największą wartość ( która jest jej ograniczeniem
górnym) przyjmuje w lewym końcu przedziału [100,103]).
Obliczamy
1 1 3 5
2 2 2 2
ω ( x) ∞[100,103] = ω ( x) [100,103] = (100.5 − 100)(100.5 − 101)(100.5 − 102)(100.5 − 103) = ⋅ ⋅ ⋅ =
Podstawiając obliczone wartości norm do (3.4), otrzymujemy oszacowanie błędu interpolacji
funkcji f ( x) = ln( x) wielomianem Lagrange’a stopnia trzeciego dla danych węzłów wx i
punktu ( 100.5, 0 ).
f − P3 (100.5)
∞
≤
15 /16
15 ⋅ 6
15
15
100−4 = ⋅100−4 = ⋅10−8.
⋅ 6 ⋅100−4 =
4!
16 ⋅ 24
64
64
Zatem błąd jaki popełniamy licząc ln(100.5) nie przekracza wartości
15
⋅10−8.
64
Po tym ćwiczeniu powinniście Państwo umieć znajdować wielomian interpolacyjny w sensie
Lagrange’a dla danych węzłów i danej funkcji oraz szacować błąd interpolacji Lagrange’a.
Proponuję następujące dodatkowe zadania.
Zadania
3.1 Wzorując się na przykładzie (3.1), znaleźć wielomian interpolacyjny Lagrange’a dla
danych:
x
0
2
3
4
f(x)
7
11
28
63
(5 punktów)
15
.
16
3.2 Wzorując się na przykładzie (3.2) oszacować błąd interpolacji funkcji f ( x ) = sin( x)
liniowym wielomianem interpolacyjnym Lagrange’a w przedziale [0, 2].
(10 punktów)
Uwaga Znajomość dowodów twierdzeń (3.1) i (3.2) tylko dla studentów, którzy mają
ambicję uzyskania z ćwiczeń Metod Numerycznych 1 ocen: bardzo dobry lub dobry.
Janusz Chojnacki