Rozdziaª 5 Interpolacja wielomianowa i...

18
x a, b (x n ,x n-1 ,..., 1).

Transcript of Rozdziaª 5 Interpolacja wielomianowa i...

Page 1: Rozdziaª 5 Interpolacja wielomianowa i splajnowadydmat.mimuw.edu.pl/sites/default/files/wyklady/matematyka... · Interpolacja wielomianowa polega na tym, »e szukamy funkcji pz pewnej

Rozdziaª 5

Interpolacja wielomianowa i

splajnowa

5.1 Wielomiany w octavie

W octavie istnieje caªa gamma funkcji zwi¡zanych z wielomianami:

• polyval( ) - funkcja pozwalaj¡ca oblicza¢ warto±¢ wielomianu zada-nego w bazie pot¦gowej dla danej warto±ci x, czy caªej macierzy war-to±ci

• poly�t( ) - funkcja znajduj¡ca wspóªczynniki wielomianu zadanegostopnia najlepiej dopasowanego do zadanej tabelki punktów.

• polyinteg( ) - zwraca wspóªczynniki wielomianu b¦d¡cego caªk¡ nie-oznaczon¡ z danego wielomianu

• polyderiv( ) - zwraca wspóªczynniki wielomianu b¦d¡cego pochodn¡ zdanego wielomianu

• roots( ) - zwraca zera wielomianu

• conv(a,b) - zwraca wspóªczynniki wielomianu b¦d¡cego iloczynem wie-lomianów o wspóªczynnikach odpowiednio z wektorów a, b

B¦dziemy korzystali przede wszystkim z dwóch pierwszych funkcji.We wszystkich tych funkcjach przyjmowane jest, »e rozpatrujemy wspóª-

czynniki wielomianu w bazie pot¦gowej, ale w nast¦puj¡cej kolejno±ci:

(xn, xn−1, . . . , 1).

45

Page 2: Rozdziaª 5 Interpolacja wielomianowa i splajnowadydmat.mimuw.edu.pl/sites/default/files/wyklady/matematyka... · Interpolacja wielomianowa polega na tym, »e szukamy funkcji pz pewnej

Wspóªczynniki indeksowane s¡ od jedynki, tzn. wielomian stopnia nie wi¦k-szego od n:

w(x) =n+1∑k=1

akxn+1−k

jest reprezentowany przez wektor wspóªczynników: (a1, . . . , an+1).Je±li chcemy policzy¢ warto±¢ w w danym punkcie x, czy ewentualnie dla

tablicy punktów umieszczonych w macierzy X, wywoªujemy polyval(a,x)lub polyval(a,X).

Tak wi¦c, aby narysowa¢ wykres funkcji x3 − 2x + 1 na [−3, 4] mo»nawykona¢ nast¦puj¡c¡ sekwencj¦ komend :

a=[1 ,0 ,−2 ,1 ] ; #def in iu j emy wsp .x=linspace (−3 ,4) ;#s i a t k awx=polyval ( a , x ) ; #wartosc w na s i a t c eplot (x ,wx ) ; #wykres

5.2 Interpolacja wielomianowa

Interpolacja wielomianowa polega na tym, »e szukamy funkcji p z pewnejprzestrzeni wielomianów (zazwyczaj wielomianów stopnia nie wi¦kszego odn), które w tych punktach speªniaj¡ odpowiednie warunki interpolacyjne,tzn. p oraz jej pochodne maj¡ w tych punktach zadane warto±ci.

5.2.1 Interpolacja Lagrange'a

W interpolacji wielomianowej Lagrange'a dla zadanych n+1 ró»nych punktówxk i warto±ci yk = f(xk) szukamy wielomianu p(x) stopnia co najwy»ej ntakiego, »e speªnione s¡ nast¦puj¡ce warunki interpolacyjne:

f(xk) = p(xk) = yk k = 1, . . . , n+ 1.

Funkcja poly�t(x,y,n) znajduje wspóªczynniki wielomianu p w bazie po-t¦gowej dla wektorów x, y dªugo±ci n + 1. Wa»ne aby warto±ci w x byªyró»ne.

Przetestujmy t¦ funkcj¦ dla nast¦puj¡cych danych: x = (−1, 0, 2, 4), y =(1, 1, 2,−1):

x=[−1 ,0 ,2 ,4 ] ;y=[1 ,1 ,2 ,−1] ;a=polyf it (x , y , 3 ) ;s=linspace (−2 ,5) ;plot ( s , polyval ( a , s ) , x , y , " r+;war i n t e rp ; " )

46

Page 3: Rozdziaª 5 Interpolacja wielomianowa i splajnowadydmat.mimuw.edu.pl/sites/default/files/wyklady/matematyka... · Interpolacja wielomianowa polega na tym, »e szukamy funkcji pz pewnej

Rysunek 5.1: Wykres wielomianu interpolacyjnego. Czerwone plusy - wa-runki interpolacyjne

Wida¢ na rysunku 5.1, »e wielomian speªnia warunki interpolacyjne. Mo»emyto sprawdzi¢ te» obliczeniowo:

max(abs (y−polyval ( a , x ) ) )

Otrzymali±my wynik: bª¡d w w¦zªach jest równy prawie zero.Przetestujmy poly�t(x,y,n) dla du»ych n dla w¦zªów równoodlegªych na

[0, 1] i losowe warto±ci y z [−1, 1], nast¦pnie policzmy bª¡d w w¦zªach wzale»no±ci od N :

N=100;e r=zeros (N+1 ,1) ;for k= 0 :N,

x=linspace (0 , 1 , k+1);y=2∗(rand ( s ize ( x ) ) −0 .5 ) ;a=polyf it (x , y , k ) ;e r ( k+1)=max(abs (y−polyval ( a , x ) ) ) ;

endfor

47

Page 4: Rozdziaª 5 Interpolacja wielomianowa i splajnowadydmat.mimuw.edu.pl/sites/default/files/wyklady/matematyka... · Interpolacja wielomianowa polega na tym, »e szukamy funkcji pz pewnej

max( e r )

Widzimy, »e mo»emy otrzyma¢ niepoprawny wynik dla du»ych N . Wynikato ze zªych wªasno±ci algorytmu stosowanego przez octave'a ze wzgl¦du nazaburzenia powodowane przez niedokªadne obliczenia w arytmetyce zmien-nopozycyjnej.

Zbadajmy bª¡d pomi¦dzy funkcj¡, a jej wielomianem interpolacyjnym.Na pocz¡tek rozpatrzmy analityczn¡ funkcj¦ f(x) = sin(x) i w¦zªy równo-odlegªe, oraz norm¦ supremum na odcinku [−4, 6]. Norm¦ supremum:

‖g‖∞,[a,b] :=∑t∈[a,b]

|g(t)|

przybli»ymy poprzez dyskretn¡ norm¦ na siatce N równomiernie rozªo»onychpunktów na tym odcinku [a, b], czyli

‖f‖h,∞,[a,b] = maxk|f(a+ k ∗ h)|

z h = (b− a)/N :

x=[−1 ,0 ,2 ,4 ] ;y=[1 ,1 ,2 ,−1] ;a=polyf it (x , y , 3 ) ;s=linspace (−2 ,5) ;

plot ( s , polyval ( a , s ) , x , y , " r+;war i n t e rp ; " )

5.2.2 Interpolacja Hermite'a

Rozpatrzmy teraz zadanie interpolacji Hermite'a. W interpolacji wielomia-nowej Hermite'a dla zadanych n + 1 ró»nych punktów xk i naturalnychkrotno±ci w¦zªów pk szukamy wielomianu w(x) stopnia co najwy»ej N dlaN =

∑nk=0 pk − 1 takiego, »e speªnione s¡ nast¦puj¡ce warunki interpola-

cyjne:

w(j)(xk) = yk,j k = 1, . . . , n+ 1, j = 0, . . . , pk − 1.

Tutaj yk,j to N + 1 zadanych warto±ci.W octavie nie ma funkcji realizuj¡cej interpolacje Hermite'a.Ale czy w szczególnych przypadkach nie mo»emy ªatwo rozwi¡za¢ tego

problemu korzystaj¡c z odpowiednich funkcji octave'a?Rozpatrzmy przypadek w¦zªów tej samej krotno±ci; np. n ró»nych dwu-

krotnych w¦zªów.

48

Page 5: Rozdziaª 5 Interpolacja wielomianowa i splajnowadydmat.mimuw.edu.pl/sites/default/files/wyklady/matematyka... · Interpolacja wielomianowa polega na tym, »e szukamy funkcji pz pewnej

Rysunek 5.2: Interpolacja Hermite'a sin(3x) - dwa dwukrotne w¦zªy −1, 1

Chcemy znale¹¢ wspóªczynniki wielomianu∑N

k=1 akxk dla N = 2(n + 1)

takie, »ew(xk) = f(xk), w′(xk) = f ′(xk).

Czyli rozwi¡zanie speªnia nast¦puj¡cy ukªad równa« liniowych:

N∑k=0

akxkj = f(xk) j = 0, . . . , n

N∑k=1

kakxk−1j = f ′(xk) j = 0, . . . , n.

Utwórzmy macierz tego ukªadu z pomoc¡ funkcji vander(x), która tworzymacierz Vandermonde'a dla w¦zªów podanych w wektorze x:

function [ a ,C, f ]= interpo lyH (x , y , dy )#tworzy wspo l c z ynn i k i wielomianu Hermite ' a d la#wezlow dwukrotnych z x#y= war to sc i w wez lach x ( wektor pionowy )

49

Page 6: Rozdziaª 5 Interpolacja wielomianowa i splajnowadydmat.mimuw.edu.pl/sites/default/files/wyklady/matematyka... · Interpolacja wielomianowa polega na tym, »e szukamy funkcji pz pewnej

#war to sc i pochodnej w wez lach x ( wektor pionowy )#output : wspo l c z ynn i k i wielomainu w ba z i e potegowej# (Zgodne z p o l y v a l ( ) )#C− opcja − macierz uk ladun=length ( x ) ;N=2∗n−1;A=vander (x ,N+1);D=diag (N: −1 :0 ) ;B=zeros ( s ize (A) ) ;B( : , 1 :N)=A( : , 2 :N+1);B=B∗D;C=[A;B ] ;f =[y ; dy ] ;a=C\ [ y ; dy ] ;endfunction

Rysunek 5.3: Interpolacja Hermite'a sin(3x) - trzy dwukrotne w¦zªy −1, 0, 1

Na pocz¡tku przetestujmy t¦ funkcj¦ dla w¦zªów −1, 1 dwukrotnych ifunkcji sin(3 ∗ x).

50

Page 7: Rozdziaª 5 Interpolacja wielomianowa i splajnowadydmat.mimuw.edu.pl/sites/default/files/wyklady/matematyka... · Interpolacja wielomianowa polega na tym, »e szukamy funkcji pz pewnej

x=[−1;1 ] ;f=@(x ) sin (3∗x ) ;df=@(x ) 3∗cos (3∗x ) ;y=f (x ) ;dy=df (x ) ;a=interpo lyH (x , y , dy ) ;z=linspace ( −1 . 1 , 1 . 1 ) ;plot ( z , polyval ( a , z ) , " ; w i e l H; " , z , f ( z ) , " ; f ; " , x , y , " r+" ) ;

Z wykresu funkcji i wielomianu widzimy, »e wielomian przecina wykres i jeststyczny w punktach −1, 1, por. rysunek 5.2.

Zobaczmy co si¦ stanie w przypadku trzech w¦zªów. Testujemy funkcj¦dla w¦zªów −2, 0, 2 dwukrotnych i sin(3 ∗ x).

x=[ −1 ;0 ;1 ] ;f=@(x ) sin (3∗x ) ;df=@(x ) 3∗cos (3∗x ) ;y=f (x ) ;dy=df (x ) ;a=interpo lyH (x , y , dy ) ;z=linspace ( −1 . 2 , 1 . 2 ) ;plot ( z , polyval ( a , z ) , " ; w i e l H; " , z , f ( z ) , " ; f ; " , x , y , " r+" ) ;

Z rysunku 5.3 wida¢, »e funkcja dziaªa poprawnie równie» w tym przypadku.

5.3 Interpolacja zespolona. Algorytm FFT

W tym rozdziale omówimy krótko interpolacj¦ zespolon¡, ale tylko w przy-padku okre±lonych w¦zªów zespolonych równomiernie rozmieszczonych na sfe-rze jednostkowej.

Chcemy znale¹¢ wspóªczynniki zespolone ak ∈ C, k = 0, . . . , N takie, »e

N∑k=0

akzkj = bk j = 0, . . . , N

dla danych zespolonych bk i zj = exp(2π∗i∗jN+1

)dla j = 0, . . . , N , czyli pier-

wiastków z jedynki stopnia N + 1.Równowa»nie mo»emy to zadanie sformuªowa¢ jako zadanie znalezienia

ak takich, »e

N∑k=0

ak exp

(2π ∗ i ∗ j ∗ k

N + 1

)= bk j = 0, . . . , N.

51

Page 8: Rozdziaª 5 Interpolacja wielomianowa i splajnowadydmat.mimuw.edu.pl/sites/default/files/wyklady/matematyka... · Interpolacja wielomianowa polega na tym, »e szukamy funkcji pz pewnej

Okazuje si¦, »e rozwi¡zanie mo»emy wyrazi¢ poprzez operator dyskretnejtransformaty Fouriera, czy równowa»nie jako mno»enie przez macierz FN+1 =

1N+1

(ωk∗lN+1)Nk,l=0:

~a = FN+1~b

gdzie ~a = (ak)Nk=0,

~b = (bk)Nk=0, a ωN+1 = exp

(−2π∗iN+1

).

Mno»enie przez macierz FN+1 mo»na szybko wykona¢ z wykorzystaniemalgorytmu szybkiej transformacji Fouriera, czyli FFT (Fast Fourier Trans-form). Odpowiednia wersja algorytmu FFT sªu»y te» szybkiemu mno»eniuprzez macierz odwrotn¡ do FN+1: F−1N+1 = (N + 1)FN+1 = (ωk∗lN+1)

Nk,l=0.

Obliczaj¡c warto±¢ wielomianu∑

k akzk w punktach zj, czy równowa»nie

warto±ci wielomianu trygonometrycznego∑N

k=0 ak exp (i ∗ k ∗ x) w punktachxj = 2π∗j

N+1, to przyjmuj¡c bj =

∑k akz

kj otrzymujemy:

~b = F−1N+1~a.

Warto doda¢, »e cz¦sto macierz DFT de�niuje si¦ bez czynnika 1N+1

,oczywi±cie wtedy macierz odwrotna te» musi by¢ odpowiednio przeskalowana.

Funkcja

f f t ( )

sªu»y w octave'ie mno»eniu przez macierz FN+1. Jej najprostsze wywoªanieto

a=f f t (b)

Sprawd¹my, czy funkcja �t () oblicza warto±¢ DFT zgodnie z nasz¡ de�nicj¡.Policzmy F4(4, 0, 0, 0)T , powinni±my otrzyma¢ wektor samych jedynek:

a=f f t ( [ 4 ; 0 ; 0 ; 0 ] )

a otrzymali±my:

a =

4 + 0 i4 + 0 i4 + 0 i4 − 0 i

To oznacza, »e funkcja �t () oblicza warto±¢ mno»enia przez (N + 1)∗FN+1.Z kolei funkcja i�t () powinna oblicza¢ mno»enie przez macierz odwrotn¡

do (N + 1) ∗ FN+1.Sprawd¹my, jak to dziaªa:

52

Page 9: Rozdziaª 5 Interpolacja wielomianowa i splajnowadydmat.mimuw.edu.pl/sites/default/files/wyklady/matematyka... · Interpolacja wielomianowa polega na tym, »e szukamy funkcji pz pewnej

x=[1 , −3, 4 , 5 ] ;a=f f t ( x ) ;xx= i f f t ( a ) ;x−xxnorm(x−xx , 2 )

Powtórzmy to dla wi¦kszego N :

x=rand ( 1 0 0 ) ;a=f f t ( x ) ;xx= i f f t ( a ) ;norm(x−xx , 2 )

Stwórzmy macierz (N+1)∗FN+1 i porównajmy szybko±¢ mno»enia przezt¦ macierz wykonan¡ za pomoc¡ standardowego operatora octave'a, czylioperatora ∗, z szybko±ci¡ dziaªania funkcji �t ().

Stwórzmy najpierw funkcj¦ tworz¡c¡ macierz (N + 1) ∗ FN+1:

function F=DFTmac(N=3)om=exp((−2∗pi∗ i ∗ ( 0 :N) ) / (N+1)) ;F=zeros (N+1,N+1);for k=0:N,F(k+1 ,:)=om.^k ;endfor

endfunction

Przetestujmy j¡ na pocz¡tek dla N = 3:

F=DFTmac(3 )F∗F'a=rand ( 4 ) ;norm( f f t ( a)−F∗a , 2 )

W tym przypadku wyniki si¦ pokrywaj¡.Zgodnie z teori¡, por. np. [8], koszt obliczenia DFT przy zastosowaniu

algorytmu FFT to O(n log2(n)), a standardowe mno»enia przez macierz Fnkosztuje O(n2).

A teraz testujemy szybko±¢:

n=4∗512F=DFTmac(n−1);x=rand (n ) ;t ic ; y=F∗x ; t1=toct ic ; yy=f f t ( x ) ; t2=toct1 / t2

53

Page 10: Rozdziaª 5 Interpolacja wielomianowa i splajnowadydmat.mimuw.edu.pl/sites/default/files/wyklady/matematyka... · Interpolacja wielomianowa polega na tym, »e szukamy funkcji pz pewnej

Na moim komputerze FFT byªo ponad 63 razy szybsze dla n = 2048.Policzmy jeszcze wykres realnego kosztu wzgl¦dem n:

n=t1=t2=zeros ( 1 0 0 , 1 ) ;n (1)=100;for k=1:100 ,F=DFTmac(n(k)−1);x=rand (n(k ) ) ;t ic ; y=F∗x ; t1 (k)=toc ;t ic ; yy=f f t ( x ) ; t2 ( k)=toc ;n ( k+1)=n(k)+10;endfor

n=n ( 1 : 1 0 0 ) ;plot (n , t1 , " ; mnozenie przez macierz ; " ,n , t2 , " ; f f t ; " )

Na wynik chwil¦ musimy poczeka¢, ale potwierdza on teori¦, »e FFT jestwyra¹nie szybszym algorytmem.

5.4 Interpolacja splajnowa

W przypadku interpolacji splajnowej rozpatrujemy dane w¦zªy:

a = x0, . . . , xN = b

na odcinku [a, b], oraz funkcje splajnowe (splajny), czyli funkcje, które s¡odpowiedniej klasy gªadko±ci (czyli s¡ w Ck([a, b]), oraz obci¦te do dowolnegopododcinka [xk, xk+1] dla k = 0, . . . , N − 1, s¡ wielomianami co najwy»ejustalonego stopnia.

W przypadku splajnów kubicznych rozwa»amy funkcje, które s¡ klasy C2

na [a, b], oraz s¡ wielomianami kubicznymi na ka»dym pododcinku.Zadanie interpolacji splajnowej kubicznej polega na znalezieniu splajnu

kubicznego s takiego, »e

s(xk) = yk k = 0, . . . , N

dla zadanych yk, oraz speªniaj¡cego odpowiednie warunki brzegowe. Np. wprzypadku splajnu hermitowskiego s musi speªni¢ warunki brzegowe hermi-towskie:

s′(a) = dya s′(b) = dyb

dla zadanych dodatkowych dwóch warto±ci dya, dyb. W przypadku splajnunaturalnego warunki brzegowe to

s′′(a) = s′′(b) = 0.

54

Page 11: Rozdziaª 5 Interpolacja wielomianowa i splajnowadydmat.mimuw.edu.pl/sites/default/files/wyklady/matematyka... · Interpolacja wielomianowa polega na tym, »e szukamy funkcji pz pewnej

Rysunek 5.4: Wykres prostego splajnu typu not-a-knot. Czerwone plusyoznaczaj¡ punkty interpolacji

Rozpatruje si¦ równie» splajny typu not-a-knot. W tym przypadku, za-miast warunków brzegowych, dodaje si¦ sztucznie dwa warunki ci¡gªo±ci trze-ciej pochodnej w w¦zªach x1 i xN−1.

Z kolei splajny okresowe speªniaj¡ nast¦puj¡ce warunki brzegowe okre-sowe:

s(j)(a) = s(j)(b) j = 0, 1, 2.

W ka»dym z tych czterech przypadków splajn interpolacyjny jest wyzna-czony jednoznacznie, por. np. [11].

W octave'ie istnieje kilka funkcji zwi¡zanych z interpolacj¡ splajnami ku-bicznymi, czy ogólnie - z funkcjami wielomianowymi na pododcinkach:

• spline() - funkcja sªu»¡ca znalezieniu splajnu interpolacyjnego hermi-towskiego, czy typu not-a-knot

• ppval() - funkcja sªu»¡ca obliczeniu warto±ci splajnu zadanego w for-macie octave'a

55

Page 12: Rozdziaª 5 Interpolacja wielomianowa i splajnowadydmat.mimuw.edu.pl/sites/default/files/wyklady/matematyka... · Interpolacja wielomianowa polega na tym, »e szukamy funkcji pz pewnej

Rysunek 5.5: Wykresy prostych splajnów typu not-a-knot i hermitowskiego(z zerowymi pochodnymi w ko«cach) z tymi samymi warunkami interpola-cyjnymi. Czerwone plusy oznaczaj¡ punkty interpolacji

• mkpp() - tworzy funkcj¦ wielomianow¡ na pod-odcinkach (szczegóªyhelp mkpp())

• unmkpp() - ze struktury splajnu w octave'ie zwraca wspóªczynniki wie-lomianów na pod-odcinkach (szczegóªy help unmkpp())

Podstawow¡ funkcj¡ sªu»¡c¡ znalezieniu splajnu interpolacyjnego hermi-towskiego, czy typu not-a-knot jest funkcja spline(). Jej najprostsze wywo-ªanie to

p=spline (x , y )

gdzie x to wektor wymiaru N z w¦zªami interpolacji splajnowej, a wektory ma t¦ sam¡ dªugo±¢ co x i zawiera warto±ci jakie ma przyj¡¢ splajn wtych w¦zªach. Druga mo»liwo±¢ to - przy takim samym wektorze w¦zªówx, podanie wektora y o dªugo±ci N + 2. Wtedy pierwsza i ostatnia warto±¢wektora y to warto±ci pochodnych splajnu w ko«cowych w¦zªach x. Pozostaªe

56

Page 13: Rozdziaª 5 Interpolacja wielomianowa i splajnowadydmat.mimuw.edu.pl/sites/default/files/wyklady/matematyka... · Interpolacja wielomianowa polega na tym, »e szukamy funkcji pz pewnej

warto±ci y tzn. yk dla k = 2, . . . , N+1 zawieraj¡ warto±ci splajnu w w¦zªach zx, czyli s¡ takie same jak w pierwszym przypadku. Funkcja zwraca struktur¦typu pp, czyli w odpowiednim formacie octave'a splajnu kubicznego typunot-a-knot w pierwszym przypadku, a w drugim - splajnu hermitowskiego.Nast¦pnie, korzystaj¡c z funkcji ppval() mo»na obliczy¢ warto±¢ tego splajnuw punkcie, czy tablicy punktów.

Policzmy splajn który w w¦zªach −2, 1, 0, 1, 2 przyjmie warto±ci 1, 0, 0, 0, 1i narysujmy jego wykres, por. rysunek 5.4:

x=−2:2;y= [ 1 , 0 , 0 , 0 , 1 ] ;pp=spline (x , y ) ;z=linspace (−2 ,2) ;plot ( z , ppval (pp , z ) , " ; s p l a j n n−a−k ; " ,x , y , " r+" ) ;

Korzystaj¡c z tej samej funkcji, stwórzmy splajn hermitowski przyjmuj¡c, »ejego pochodne w ko«cach wynosz¡ zero. Nast¦pnie narysujmy wykresy obusplajnów na odcinku [−2, 2], por. rysunek 5.5, oraz blisko lewego ko«ca, por.rysunek 5.6:

x=−2:2;y= [ 1 , 0 , 0 , 0 , 1 ] ;pp=spline (x , y ) ;yh=[0 ,y , 0 ] ;ph=spline (x , yh ) ;z=linspace (−2 ,2) ;plot ( z , ppval (ph , z ) , " ; s p l a j n hermitowski ; " , . . .z , ppval (pp , z ) , " ; s p l a j n n−a−k ; " ,x , y , " r+" ) ;pause ( 2 ) ;z=linspace (−2 ,−2+0.1);plot ( z , ppval (ph , z ) , " ; s p l a j n hermitowski ; " , . . .z , ppval (pp , z ) , " ; s p l a j n n−a−k ; " , −2 ,1 .3) ;

Wida¢, »e splajny s¡ ró»ne, oraz »e splajn hermitowski ma pochodn¡ równ¡zero w lewym i prawym ko«cu.

Czy w octave'ie mo»na wyznaczy¢ w prosty sposób inne splajny, np. na-turalny lub okresowy?

Okazuje si¦, »e tak, ale trzeba wykorzysta¢ funkcj¦ z rozszerzenia octave'a,czyli octave-forge'a: csape().

Jej wywoªanie to

pp=csape (x , y , cond , va l z )

gdzie x, y to wektory dªugo±ci N z w¦zªami i warto±ciami splajnu w w¦zªach,a cond przyjmuje warto±ci:

57

Page 14: Rozdziaª 5 Interpolacja wielomianowa i splajnowadydmat.mimuw.edu.pl/sites/default/files/wyklady/matematyka... · Interpolacja wielomianowa polega na tym, »e szukamy funkcji pz pewnej

Rysunek 5.6: Wykresy prostych splajnów typu not-a-knot i hermitowskiego(z zerowymi pochodnymi w ko«cach) blisko lewego ko«ca.

• 'variational' w przypadku splajnu interpolacyjnego kubicznego natu-ralnego

• 'complete' w przypadku splajnu interpolacyjnego kubicznego hermi-towskiego, warto±ci pochodnych w ko«cach s¡ podane w parametrzevalc

• 'not-a-knot' w przypadku splajnu interpolacyjnego kubicznego typunot-a-knot

• 'periodic' w przypadku splajnu interpolacyjnego kubicznego okreso-wego

• 'second' w przypadku splajnu interpolacyjnego kubicznego z ustalo-nymi warto±ciami drugiej pochodnej w ko«cach, zgodnymi z tym, copodano w parametrze valc

Funkcja zwraca struktur¦ typu pp, czyli dane splajnu kubicznego w formacieoctave'a.

58

Page 15: Rozdziaª 5 Interpolacja wielomianowa i splajnowadydmat.mimuw.edu.pl/sites/default/files/wyklady/matematyka... · Interpolacja wielomianowa polega na tym, »e szukamy funkcji pz pewnej

Porównajmy wyniki tej funkcji z wynikiem funkcji spline() dla danych znaszego prostego przykªadu i splajnu typu not-a-knot. Policzymy dyskretn¡norm¦ maksimum (na siatce równomiernej 300 punktów na [−2, 2] z wynikówobu funkcji:

x=−2:2;y= [ 1 , 0 , 0 , 0 , 1 ] ;pp=spline (x , y ) ;pp1=csape (x , y , ' not−a−knot ' ) ;z=linspace (−2 ,2 ,300) ;norm( ppval (pp , z)−ppval ( pp1 , z ) , ' i n f ' )

Otrzymali±my zero.Na jednym wykresie narysujmy wykresy trzech splajnów interpolacyjnych

dla N = 6 z tymi samymi warunkami interpolacyjnymi, ale z ró»nymi wa-runkami brzegowymi: hermitowskim, not-a-knot i naturalnym.

N=4;x=−2:2;y= [ 1 , 0 , 0 , 0 , 1 ] ;pp=spline (x , y ) ;ppn=csape (x , y , ' v a r i a t i o n a l ' ) ;yh=[0 ,y , 0 ] ;pph=spline (x , yh ) ;z=linspace (−2 ,2) ;plot ( z , ppval (pph , z ) , " ; s p l . hermit . ; " , . . .z , ppval (pp , z ) , " ; s p l . n−a−k ; " , . . .z , ppval (ppn , z ) , " ; s p l . natur . ; " , x , y , " r+" ) ;

Wszystkie trzy splajny s¡ ró»ne w tym przypadku, por. rysunek 5.7.Oczywi±cie obie funkcje umo»liwiaj¡ dowolny wybór w¦zªów, np. we¹my

w¦zªy [−2,−1, 2, 3, 4] z tymi samymi warto±ciami i stwórzmy splajny obutypów, por. rysunek 5.8:

x=[−3 ,2 ,3 ,4 ] ;y= [ 1 , 0 , 0 , 0 , 1 ] ;pp=spline (x , y ) ;yh=[0 ,y , 0 ] ;ph=spline (x , yh ) ;z=linspace (−3 ,4) ;plot ( z , ppval (ph , z ) , " ; s p l a j n hermitowski ; " , . . .z , ppval (pp , z ) , " ; s p l a j n n−a−k ; " ,x , y , " r+" ) ;

Popatrzmy na bª¦dy aproksymacji w normie supremum. Ustalmy, »e in-terpolujemy splajnami kubicznymi znan¡ funkcj¦ gªadk¡ f(x) na czterech

59

Page 16: Rozdziaª 5 Interpolacja wielomianowa i splajnowadydmat.mimuw.edu.pl/sites/default/files/wyklady/matematyka... · Interpolacja wielomianowa polega na tym, »e szukamy funkcji pz pewnej

Rysunek 5.7: Wykresy trzech ró»nych splajnów speªniaj¡cych te same wa-runki interpolacyjne. Splajn hermitowski posiada pochodne równe zero wko«cach odcinka.

w¦zªach równoodlegªych na odcinku [a, b]. Je±li pp to struktura typu pp opi-suj¡ca splajn interpoluj¡cy f , to dyskretn¡ norm¦ maksimum ró»nicy mi¦dzyf , a splajnem s, np. na siatce o tysi¡cu punktach, mo»emy obliczy¢ komend¡:

z=linspace ( a , b , 1 0 0 0 ) ;y=f ( z ) ;s=ppval (pp , z ) ;errmax=norm( s−y , ' i n f ' )

Zaªo»yli±my, »e funkcja f jest zaimplementowana wektorowo, tzn. »e wywo-ªanie w octave'ie f(z) dla z wektora zwróci wektor (f(z(k))). W przeciwnymrazie nale»aªoby u»y¢ p¦tli do wyznaczenia wektora y:

z=linspace ( a , b , 1 0 0 0 ) ;for k=1: length ( z ) ,y ( k)= f ( z ( k ) ) ;endfor

60

Page 17: Rozdziaª 5 Interpolacja wielomianowa i splajnowadydmat.mimuw.edu.pl/sites/default/files/wyklady/matematyka... · Interpolacja wielomianowa polega na tym, »e szukamy funkcji pz pewnej

Rysunek 5.8: Wykresy prostych splajnów typu not-a-knot i hermitowskiegoz w¦zªami nierównoodlegªymi z tymi samymi warunkami interpolacyjnymi.Czerwone plusy oznaczaj¡ punkty interpolacji. Splajn hermitowski posiadapochodne równe zero w ko«cach odcinka.

s=ppval (pp , z ) ;errmax=norm( s−y , ' i n f ' )

W poni»szym kodzie obliczymy przybli»on¡ norm¦ maksimum na odcinku[−1, 2] pomi¦dzy f(x) = sin(x), a jej dwoma splajnami interpolacyjnymi ku-bicznymi: naturalnym i typu not-a-knot na czterech w¦zªach równoodlegªych:

a=−1;b=2;f=@sin ;N=4;x=linspace ( a , b , 4 ) ;y=f (x ) ;pp=spline (x , y ) ;ppn=csape (x , y , ' v a r i a t i o n a l ' ) ;z=linspace ( a , b , 1 0 0 0 ) ;

61

Page 18: Rozdziaª 5 Interpolacja wielomianowa i splajnowadydmat.mimuw.edu.pl/sites/default/files/wyklady/matematyka... · Interpolacja wielomianowa polega na tym, »e szukamy funkcji pz pewnej

Rysunek 5.9: Wykresy ró»nicy pomi¦dzy funkcj¡ sin(x), a jej dwoma splaj-nami interpolacyjnymi - naturalnym i typu not-a-knot. Czerwone plusy ozna-czaj¡ cztery równoodlegªe punkty interpolacji na [−1, 2].

f z=f ( z ) ;pz=ppval (pp , z ) ;pn=ppval (ppn , z ) ;e r r=norm( fz−pz , ' i n f ' )e r rn=norm( fz−pn , ' i n f ' )

Bª¡d dla splajnu naturalnego byª wi¦kszy: errn = 0.048190, ni» dla splajnutypu not-a -knot: err = 0.025120, co wida¢ te» na rysunku 5.9.

Jako zadanie pozostawiamy policzenie bª¦dów dla innych funkcji, w¦zªówi typów splajnów kubicznych interpolacyjnych.

62