WYKŁAD 6 INTERPOLACJA FUNKCJAMI SKLEJANYMI (SPLAJNY)

Transkrypt

WYKŁAD 6 INTERPOLACJA FUNKCJAMI SKLEJANYMI (SPLAJNY)
WYKŁAD 6
INTERPOLACJA FUNKCJAMI
SKLEJANYMI (SPLAJNY)
W tym wykładzie omówimy problem interpolacji przy pomocy tzw. funkcji sklejanych,
zwanych też (żargonowo) splajnami. W przeciwieństwie do metod interpolacyjnych
opisanych w Wykładzie nr 1, gdzie stosowaliśmy jeden globalny wielomian dla całego
przedziału interpolacji, w metodzie splajnów stosowane są funkcje zdefiniowane jako
wielomiany niskiego stopnia osobno dla każdego odcinka pomiędzy sąsiednimi węzłami
interpolacyjnymi. Te lokalne wielomiany są jednak tak dobrane, aby – oprócz warunków
interpolacji – spełniać warunki sklejenia w taki sposób, aby cały splajn był funkcją o
odpowiedniej regularności. Skoncentrujemy się przede wszystkim na zagadnieniu interpolacji
za pomocą splajnu kubicznego, tj. funkcji ciągłej wraz z pochodnymi do rzędu drugiego
włącznie i zbudowanej z wielomianów 3-ego stopnia.
Należy wspomnieć, że funkcje sklejane (i ich daleko idące uogólnienia), maja wiele
zastosowań
praktycznych,
w
szczególności
stanowią
współczesnego projektowanie geometrycznego (CAD).
podstawowe
narzędzie
Rozważmy układ n węzłów interpolacyjnych {( x0 , y0 ), ( x1 , y1 ),...,( xn1 , yn1 )}, gdzie
a  x0  x1  ..  xn1  b .
Splajnem kubicznym C = C(x) nazywamy funkcje określoną na przedziale [a,b] i taką, że:
1. C ( x )  C 2 ([a, b]) , tj. jest ona ciągła wraz z pierwszą i drugą pochodną w [a,b].
2. Ck ( x ) : C ( x ) [ x , x
k
k 1 ]
 ak ,3 x 3  ak ,2 x 2  ak ,1 x  ak ,0 , k  0,.., n  2 , tj. wewnątrz każdego
podprzedziału funkcja ta jest pewnym wielomianem 3-ego stopnia.
3. Dla każdego węzła funkcja C(x) spełnia warunki interpolacji tj.
C ( xk )  yk , k  0,.., n  1.
Z powyższego wynika, że wielomiany lokalne muszą spełniać warunki interpolacyjne
Ck ( xk )  yk , k  0,.., n  1,
oraz warunki sklejenia zapewniające założoną regularność funkcji C, a mianowicie
Ck 1 ( xk )  Ck ( xk )

Ck1 ( xk )  Ck ( xk )
C  ( x )  C ( x )
 k 1 k
k
k
dla k  1,.., n  2 (tj. w węzłach wewnętrznych).
Zauważmy, że liczba postawionych warunków jest równa 4n - 6. Całkowita liczba nieznanych
współczynników lokalnych wielomianów jest natomiast równa 4(n - 1) = 4n - 4. Zatem,
problem wyznaczenia splajna kubicznego jest niedookreślony.
Potrzebujemy nałożyć dwa dodatkowe warunki tak, aby zagadnienie wyznaczenia
funkcji C miało jednoznaczne rozwiązanie.
y
C1(x) y
2
y1
yk-1
Ck-1(x)
yk
y0
yn-2
yk+1
C0(x)
Cn-2(x)
yn-1
Ck(x)
x0 x1
x2
xk-1
xk
xk+1
xn-2 xn-1
x
Splajn kubiczny
Zwykle (ale nie zawsze) warunki dodatkowe mają formę warunków „brzegowych”
nałożonych na pierwszą lub drugą pochodną funkcji C, a mianowicie:
( C ( x0 )   lub C ( x0 )   ) i ( C ( xn1 )   lub C ( xn1 )   )
W powyższych warunkach liczby α, β, γ, i δ są oczywiście zadane.
Ważnym przypadkiem szczególnym jest tzw. splajn naturalny. Jest to taki splajn kubicznym
który spełnia warunki postaci
C ( x0 )  0 , C ( xn1 )  0
Splajn naturalny posiada interesującą własność. Okazuje się, że spośród wszystkich funkcji
ciągłych wraz z dwiema pierwszymi pochodnymi i interpolujących zadany układ węzłów
splajn naturalny ma najmniejszą wartość całki z kwadratu drugiej pochodnej na
przedziale interpolacji [a,b], tj.
b
a
2
C ( x )  dx  min
Dokładniej, mamy następujące
TWIERDZENIE: Niech
f  C 2 ([ x0 , xn1 ]) będzie dowolna. Załóżmy, że C (a )  0 i
C (b)  0 lub C (a )  f (a ) i C (b)  f (b) . Wówczas

b
a
b
[C ( x )] dx   [ f ( x )]2 dx
2
a
Dowód:

b
a
x b
b
C ( x )[ f ( x )  C ( x )]dx  C ( x )[ f ( x )  C ( x )] x a   C ( x )[ f ( x )  C ( x )]dx 
a
przez
czesci
b
 C (b)[ f (b)  C (b)]  C ( a )[ f ( a )  C (a )]   C ( x )[ f ( x )  C ( x )]dx 
0 z zalozenia
n 1
  
k 0
n 1
xk 1
xk
0 z zalozenia
n 1
Ck( x ) [ f ( x )  C ( x )]dx  6 ak ,3 
k 0
6 a k ,3  const
 6 ak ,3 [ f ( x )  C ( x )] x  xk 1  0
k 0
a
x x
k
0
bo C ( xk )  f ( xk ), k 0 ,1,..,n
xk 1
xk
[ f ( x )  C ( x )]dx 

Otrzymaliśmy równość
b
a
b
C ( x ) f ( x )dx   [C ( x )]2 dx .
a
Dalej mamy
b
b
b
b
a
a
0   [ f ( x )  C ( x )] dx   [ f ( x )] dx  2  f ( x )C ( x )dx   [C ( x )]2 dx 
2
a
a
2

b
b
a [C( x )] dx
2
b
  [ f ( x )] dx   [C ( x )]2 dx
2
a
czyli

b
a
a
b
[ f ( x )] dx   [C ( x )]2 dx . Koniec dowodu.
2
a
Pozostaje kwestia jak w efektywny sposób wyznaczyć (skonstruować) splajn kubiczny dla
zadanego układu węzłów. W teorii, moglibyśmy zbudować i rozwiązać układ równań
(liniowych) dla nieznanych współczynników lokalnych wielomianów Ck (k = 0,1,..,n-2).
Układ taki zawierałby 4n-4 równań, a macierz współczynników miałaby dość „paskudną”
strukturę.
Okazuje się (jak zwykle?), że istnieje alternatywna metoda inteligentna!
Zacznijmy od spostrzeżenia, że druga pochodna poszukiwanej funkcji sklejanej C jest funkcją
kawałkami liniową (mówimy też – jest splajnem liniowym). Można ją zapisać następująco:
C ( x ) [ x
y
k , xk 1 ]
L1(x)
y1
y2
yk-1
 C x( xk )
Lk-1(x)
yk
y0
yn-2
Ln-2(x)
yk+1
L0(x)
yn-1
x2
xk-1
xk
xk+1
xn-2 xn-1 x
xk 1  x
x  xk
 C x( xk 1 )
xk 1  xk
xk 1  xk
lub
Ck( x )  mk
Lk(x)
x0 x1
 Ck( x ) 
gdzie
xk 1  x
x  xk
 mk 1
hk
hk
mk  C ( xk ) , hk  xk 1  xk
Całkując dwukrotnie powyższą formułę otrzymamy postać lokalnego wielomianu Ck
Ck ( x ) 
mk
m
( xk 1  x )3  k 1 ( x  xk )3  pk ( xk 1  x )  qk ( x  xk )
6hk
6hk
przy czym symbole pk i qk oznaczają stałe całkowania. Czytelnik będzie uprzejmy upewnić
się, że druga pochodna funkcji Ck ma istotnie odpowiednią postać.
Póki co, stałe całkowania były dowolne. Teraz dobierzemy je tak, aby spełnić warunki
interpolacji
Ck ( xk )  yk , Ck ( xk 1 )  yk 1
Otrzymujemy wartości stałych pk i qk
yk 1
 6 mk hk
hk
y
 qk  k 1  16 mk 1hk
hk
yk  16 mk hk2  pk hk  pk 
yk 1  16 mk 1hk2  qk hk
i w konsekwencji ostateczna postać lokalnego wielomianu wyraża się formułą

 yk 1 1

mk
mk 1
3
3  yk
1
Ck ( x) 
( xk 1  x) 
( x  xk )    6 mk hk  ( xk 1  x)  
 6 mk 1hk  ( x  xk )
6hk
6hk
 hk

 hk

przy czym indeks k przyjmuje wartości od 0 do n-2.
Pozostało obliczyć wartości drugiej pochodnej splajnu w węzłach, czyli wielkości
m0 , m1,..., mn1 .
Zauważmy, że nie wykorzystaliśmy jeszcze warunku „dopasowania” pierwszej pochodnej
sąsiadujących wielomianów lokalnych. Różniczkując otrzymaną wyżej formułę dla Ck mamy
Ck ( x )  
mk
m
y  yk 1
( xk 1  x )2  k 1 ( x  xk ) 2  k 1
 6 ( mk 1  mk )hk
2hk
2hk
hk
Rozważmy węzeł xk. Z powyższego wzoru wynika dla x  xk , że
Ck ( xk )   13 mk hk  16 mk 1hk 
yk 1  yk
  13 mk hk  16 mk 1hk  d k
hk
dk
Wartość pierwszej pochodnej wielomianu Ck-1 w węźle xk otrzymamy następująco: najpierw
w ogólnej formule dla 1-szej pochodnej wielomianu Ck podmienimy formalnie k na k-1, a
następnie podstawimy x  xk . Oto rezultat (sprawdzić!)
Ck1 ( xk )  13 mk hk 1  16 mk 1hk 1 
yk  yk 1 1
 3 mk hk 1  16 mk 1hk 1  d k 1
hk 1
d k 1
Z warunków ciągłości 1-szej pochodnej w węzłach mamy Ck1 ( xk )  Ck ( xk ) , co po
podstawieniu otrzymanych wzorów i prostych przekształceniach prowadzi do następującego
układu równań dla wielkości m0 , m1 ,..., mn1
hk 1mk 1  2(hk 1  hk )mk  hk mk 1  uk , k  1,2,.., n  2
 y  yk yk  yk 1 

gdzie oznaczyliśmy uk  6(d k  d k 1 )  6  k 1
.

hk 1 
 hk
Wiemy już, że do wyznaczenia funkcji sklejanej C potrzebujemy dwóch dodatkowych
warunków. Jeśli zdecydujemy się na określenie wartości pierwszej pochodnej w węzłach
skrajnych to warunki te przyjmą postać
C ( x0 )   13 h0m0  16 h0m1  d0  
 2h0m0  h0m1  6(d 0   )
C ( xn1 )  13 hn2 mn1  16 hn2 mn2  d n2  

hn2mn2  2hn2mn1  6(  d n2 )
Jeśli natomiast określimy wartości brzegowe drugiej pochodnej to dodatkowe równania są
bardzo proste, a mianowicie m0   i mn1   . W szczególności, jeśli     0 to
otrzymamy splajn kubiczny naturalny.
Podsumowując, kompletny układ równań liniowych dla wartości drugiej pochodnej splajna
kubicznego w węzłach może być zapisany następująco:
 m0   lub 2h0 m0  h0 m1  6(d 0   ) , k  0

 hk 1mk 1  2(hk 1  hk )mk  hk mk 1  uk , k  1,.., n  2
m   lub h m  2h m  6(  d ) , k  n  1
 n 1
n 2 n 2
n  2 n 1
n 2
W notacji macierzowo-wektorowej: Tm  r . Zauważmy, że macierz T jest trójdiagonalna.
Niezerowe elementy tej macierzy można zapisać jako elementy trzech wektorów a,b and c.
 c0
 a
 1
 0
T   0
 0

 0
 0
b0
c1
0
b1
0
0
0
0
0
0
 ak
0
0
0
ck
0
0
0
bk
0
0
0
0
0
0
 an2
0
cn2
 an1
0 
0 

0 
0 
0 

bn2 
cn1 
Wartości zapisane w tych wektorach zależą od przyjętego wariantu „warunków
brzegowych” i przedstawiają się następująco:
a0  0 (nie używany )

ak  hk 1 , k  1,.., n  2
a  0 lub a   h
n 1
n2
 n1
b0  0 lub b0  h0

bk  hk , k  1,.., n  2
b  0 (nie używany )
 n1
c0  1 lub c0  2h0

ck  2( hk 1  hk ) , k  1,.., n  2
c  1 lub c  2h
 n 1
n 1
n 2
Do efektywnego rozwiązania układu liniowego z macierzą trójdiagonalną stosujemy
specjalny wariant metody eliminacji Gaussa zwany algorytmem przeganiania (Thomasa).
Przedstawimy ten algorytm zakładając, że rozwiązywany układ równań ma postać

c0m0  b0m1  r0

 ak mk 1  ck mk  bk mk 1  rk
 a m  c m  r
n 1 n 2
n 1 n 1
n 1

, k  1,.., n  2
Metoda przeganiania (algorytm Thomasa)
Rozważmy dwa pierwsze równania układu
c0 m0  b0 m1  r0

a1m0  c1m1  b1m2  r1
i załóżmy, że c0  0 . Najpierw „normalizujemy” pierwsze równanie dzieląc je przez c0,
następnie eliminujemy m0 metodą przeciwnych współczynników
m0   0 m1  0 ,  0  b 0 / c0 ,  0  r 0 / c0

a1m0  c1m1  b1m2  r1
i w końcu sprowadzamy zmodyfikowane drugie równanie do postaci „znormalizowanej”
( c1   0 a1 )m1  b1m2  r1  a1 0 / : ( c1   0 a1 )

m1  1m2  1
, 1 
r a 
b1
, 1  1 1 0
c1   0 a1
c1   0 a1
W trakcie obliczeń pojawiają się dwie pomocnicze wielkości  1 and 1 .
Zauważmy, że nowy zredukowany układ równań z niewiadomymi m1 ,..., mn1 wygląda „tak
samo” jak oryginalny, tj. ma strukturę 3-diagonalną i pierwsze z równań ma postać 3diagonalną i pierwsze równanie ma postać znormalizowaną. Układ ten jest zatem gotowy do
kontunuowania procedury eliminacji kolejnych niewiadomych. Po k krokach procedury
eliminacyjnej dochodzimy do etapu, w którym układ zwiera niewiadome o numerach od k do
n-1. Następny krok polega na eliminacji niewiadomej mk metodą przeciwnych
współczynników. W szczegółach wygląda to następująco
/ ak 1
mk   k mk 1   k

 ak 1mk  ck 1mk 1  bk 1mk 2  rk 1
( ck 1   k ak 1 )mk 1  bk 1mk 2  rk 1   k bk 1

mk 1   k 1mk 2   k 1 ,  k 1 
bk 1
r a 
,  k 1  k 1 k 1 k
ck 1   k ak 1
ck 1   k ak 1
Podczas obliczeń pojawia się kolejna para wielkości pomocniczych  k 1 and  k 1 .
Ostatecznie, po n-1 krokach eliminacji proces osiąga ostatnie równanie układu. Ostatni krok
eliminacji przebiega następująco
/ an 1
 mn 2   n 2 mn 1   n 2

 an 1mn 2  cn 1mn 1  rn 1
( cn 1   n 2 an 1 )mn 1  rn 1   n 2 bn 1

rn 1   n 2 bn 1
mn 1 
cn 1   n 2 an 1
Zauważmy, że ostatnie równanie układu zawiera jedynie dwie niewiadome (przedostatnią i
ostatnią), przez co wyniku eliminacji mn-2 otrzymujemy równanie z tylko jedną niewiadomą
mn-1. Zauważmy również, że podczas procesu eliminacji otrzymaliśmy rekursywną formułę
wiążącą dwie niewiadome o kolejnych numerach. Ogólna postać tej formuły wynika z
pierwszego równania (znormalizowanego) zredukowanego układu po k krokach eliminacji, a
mianowicie
mk  k  k mk 1 , k  n  2, n  3,...,1,0
W ten sposób wszystkie wyeliminowane wcześniej niewiadome mogą być wyznaczone w
pętli chodzącej wstecz.
Metodę przeganiania (algorytm Thomasa) można podsumować następująco:
ETAP 1 ( sweep  up )
 0  b0 / c0
;
 0  r0 / c0 ;
for k  0,.., n  3 do :
bk
 k 1 
;
ck 1   k ak 1
 k 1 
rk 1   k ak 1
;
ck 1   k ak 1
end ;
ETAP 2 ( sweep  down )
mn 1 
rn 1   n  2 an 1
;
cn 1   n  2 an 1
for k  n  2,.., 0 do : ! ta petla chodzi wstecz !
mk   k   k mk 1
end ;
UWAGA:
Ponieważ metoda przeganiania jest pewnym wariantem metody eliminacji Gaussa (bez
wyboru elementu głównego – vide Wykład 7), to na macierz trójdiagonalną należy nałożyć
pewne ograniczenia gwarantujące powodzenie obliczeń. Chodzi przede wszystkim o
gwarancję, że wszystkie operacje dzielenia będą wykonalne (nie wystąpi dzielenie przez
zero).
Można pokazać, że warunki wystarczające dla powodzenia przebiegu obliczeń metodą
przeganiania mają następującą postać:
1) c0  0, cn 1  0 , ak  0 , bk  0 , k  1,.., n  2
2) warunki diagonalnej dominacji
ck  ak  bk
, i  1,.., n  2
c0  b0
cn 1  an 1
,
Przynajmniej jedna z tych nierownosci musi byc OSTRA!

Podobne dokumenty