Interpolacja wielomianowa i splajnowa

Podobne dokumenty
Interpolacja Lagrange'a, bazy wielomianów

Arytmetyka zmiennopozycyjna

Liniowe zadania najmniejszych kwadratów

Rozdziaª 13. Przykªadowe projekty zaliczeniowe

Ukªady równa«liniowych - rozkªady typu LU i LL'

LZNK. Rozkªad QR. Metoda Householdera

Numeryczne zadanie wªasne

Interpolacja funkcjami sklejanymi

Zadania i scenariusze zaj z laboratorium komputerowego do wykªadu z Matematyki Obliczeniowej. Leszek Marcinkowski

Laboratorium z Matematyki Obliczeniowej z wykorzystaniem pakietu octave. Leszek Marcinkowski

Aproksymacja funkcji metod najmniejszych kwadratów

1 Bª dy i arytmetyka zmiennopozycyjna

Rozdziaª 7. Rozwi zywanie równa«nieliniowych. 7.1 Funkcja octave'a fzero()

Zagadnienia na wej±ciówki z matematyki Technologia Chemiczna

Materiaªy do Repetytorium z matematyki

Metody numeryczne i statystyka dla in»ynierów

1 Metody iteracyjne rozwi zywania równania f(x)=0

Wektory w przestrzeni

a) f : R R R: f(x, y) = x 2 y 2 ; f(x, y) = 3xy; f(x, y) = max(xy, xy); b) g : R 2 R 2 R: g((x 1, y 1 ), (x 2, y 2 )) = 2x 1 y 1 x 2 y 2 ;

1 Granice funkcji wielu zmiennych.

1 Przypomnienie wiadomo±ci ze szkoªy ±redniej. Rozwi zywanie prostych równa«i nierówno±ci

Szybkie mno»enie wielomianów i macierzy

Lab. 02: Algorytm Schrage

X WARMI SKO-MAZURSKIE ZAWODY MATEMATYCZNE 18 maja 2012 (szkoªy ponadgimnazjalne)

x y x y x y x + y x y

1. Przedstaw w postaci algebraicznej liczby zespolone: 2. Narysuj zbiory punktów na pªaszczy¹nie:

ANALIZA NUMERYCZNA. Grzegorz Szkibiel. Wiosna 2014/15

Wykªad 7. Ekstrema lokalne funkcji dwóch zmiennych.

Informacje pomocnicze

ZADANIA. Maciej Zakarczemny

Funkcje wielu zmiennych

Macierze i Wyznaczniki

Janusz Adamowski METODY OBLICZENIOWE FIZYKI Zastosowanie eliptycznych równa«ró»niczkowych

wiczenie nr 3 z przedmiotu Metody prognozowania kwiecie«2015 r. Metodyka bada«do±wiadczalnych dr hab. in». Sebastian Skoczypiec Cel wiczenia Zaªo»enia

Caªkowanie numeryczne - porównanie skuteczno±ci metody prostokatów, metody trapezów oraz metody Simpsona

Równania ró»niczkowe I rz du (RRIR) Twierdzenie Picarda. Anna D browska. WFTiMS. 23 marca 2010

Liniowe równania ró»niczkowe n tego rz du o staªych wspóªczynnikach

Ciaªa i wielomiany. 1 Denicja ciaªa. Ciaªa i wielomiany 1

Metody numeryczne i statystyka dla in»ynierów

ARYTMETYKA MODULARNA. Grzegorz Szkibiel. Wiosna 2014/15

Elementy geometrii w przestrzeni R 3

Kurs z matematyki - zadania

ARYTMETYKA MODULARNA. Grzegorz Szkibiel. Wiosna 2014/15

AM II /2019 (gr. 2 i 3) zadania przygotowawcze do I kolokwium

Vincent Van GOGH: M»czyzna pij cy li»ank kawy. Radosªaw Klimek. J zyk programowania Java

Macierze. Dziaªania na macierzach. 1. Niech b d dane macierze , D = , C = , B = 4 12 A = , F = , G = , H = E = a) Obliczy A + B, 2A 3B,

ARYTMETYKA MODULARNA. Grzegorz Szkibiel. Wiosna 2014/15

ANALIZA MATEMATYCZNA Z ALGEBR

Macierze. 1 Podstawowe denicje. 2 Rodzaje macierzy. Denicja

Obliczanie całek. Instytut Fizyki Akademia Pomorska w Słupsku

Metody dowodzenia twierdze«

Matematyka 1. Šukasz Dawidowski. Instytut Matematyki, Uniwersytet l ski

Wybrane poj cia i twierdzenia z wykªadu z teorii liczb

Funkcje wielu zmiennych

Analiza Matematyczna MAT1317

ARYTMETYKA MODULARNA. Grzegorz Szkibiel. Wiosna 2014/15

Zadania z z matematyki dla studentów gospodarki przestrzennej UŠ. Marek Majewski Aktualizacja: 31 pa¹dziernika 2006

Estymacja parametru gªadko±ci przy u»yciu falek splajnowych

Rozwi zanie równania ró»niczkowego metod operatorow (zastosowanie transformaty Laplace'a).

Rachunek ró»niczkowy funkcji jednej zmiennej

Liczby zespolone Pochodna Caªka nieoznaczona i oznaczona Podstawowe wielko±ci zyczne. Repetytorium z matematyki

Informacje pomocnicze:

Lekcja 8 - ANIMACJA. 1 Polecenia. 2 Typy animacji. 3 Pierwsza animacja - Mrugaj ca twarz

Macierze i Wyznaczniki

punkcie. Jej granica lewostronna i prawostronna w punkcie x = 2 wynosz odpowiednio:

Funkcje, wielomiany. Informacje pomocnicze

Kolokwium Zadanie 1. Dla jakich warto±ci parametrów a i b funkcja sklejona

1 0 Je»eli wybierzemy baz A = ((1, 1), (2, 1)) to M(f) A A =. 0 2 Daje to znacznie lepszy opis endomorzmu f.

Uczenie Wielowarstwowych Sieci Neuronów o

Legalna ±ci ga z RRI 2015/2016

r = x x2 2 + x2 3.

gdzie wektory α i tworz baz ortonormaln przestrzeni E n

Zadania z PM II A. Strojnowski str. 1. Zadania przygotowawcze z Podstaw Matematyki seria 2

Lekcja 12 - POMOCNICY

Zbiory i odwzorowania

2. L(a u) = al( u) dla dowolnych u U i a R. Uwaga 1. Warunki 1., 2. mo»na zast pi jednym warunkiem: L(a u + b v) = al( u) + bl( v)

Czy funkcja zadana wzorem f(x) = ex e x. 1 + e. = lim. e x + e x lim. lim. 2 dla x = 1 f(x) dla x (0, 1) e e 1 dla x = 1

Mathematica - podstawy

Wielomiany. El»bieta Sadowska-Owczorz. 19 listopada 2018

WYKŁAD 4 PLAN WYKŁADU. Sieci neuronowe: Algorytmy uczenia & Dalsze zastosowania. Metody uczenia sieci: Zastosowania

Interpolacja funkcji

Liczby zespolone. dr Krzysztof yjewski Mechatronika; S-I 0.in». 6 pa¹dziernika Oznaczenia. B dziemy u»ywali nast puj cych oznacze«:

Liczenie podziaªów liczby: algorytm Eulera

ARYTMETYKA MODULARNA. Grzegorz Szkibiel. Wiosna 2014/15

f(x) f(x 0 ) i f +(x 0 ) := lim = f(x 0 + x) f(x 0 ) wynika ci gªo± funkcji w punkcie x 0. W ka»dym przypadku zachodzi:

istnienie elementu neutralnego dodawania (zera): 0 K a K a + 0 = a, istnienie elementu neutralnego mno»enia (jedynki): 1 K a K a 1 = a,

ELEMENTY ANALIZY NUMERYCZNEJ ELEMENTY ANALIZY NUMERYCZNEJ. Egzamin pisemny zestaw 1 26 czerwca 2017 roku

Zadania. 4 grudnia k=1

Elementy geometrii analitycznej w przestrzeni

1 Poj cia pomocnicze. Przykªad 1. A A d

WBiA Architektura i Urbanistyka. 1. Wykonaj dziaªania na macierzach: Które z iloczynów: A 2 B, AB 2, BA 2, B 2 3, B = 1 2 0

Ukªady równa«liniowych

Funkcje jednej zmiennej. Granica, ci gªo±. (szkic wykªadu)

Bash i algorytmy. Elwira Wachowicz. 20 lutego

WST P DO TEORII INFORMACJI I KODOWANIA. Grzegorz Szkibiel. Wiosna 2013/14

det A := a 11, ( 1) 1+j a 1j det A 1j, a 11 a 12 a 21 a 22 Wn. 1 (Wyznacznik macierzy stopnia 2:). = a 11a 22 a 33 +a 12 a 23 a 31 +a 13 a 21 a 32

Twierdzenie Wainera. Marek Czarnecki. Warszawa, 3 lipca Wydziaª Filozoi i Socjologii Uniwersytet Warszawski

Wektor. Uporz dkowany ukªad liczb (najcz ±ciej: dwóch - na pªaszczy¹nie, trzech - w przestrzeni 3D).

Przykªady problemów optymalizacji kombinatorycznej

Elementy projektowania inzynierskiego Przypomnienie systemu Mathcad

Transkrypt:

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 zadanego w bazie pot gowej dla danej warto±ci x, czy caªej macierzy warto±ci polyt( ) - funkcja znajduj ca wspóªczynniki wielomianu zadanego stopnia najlepiej dopasowanego do zadanej tabelki punktów. polyinteg( ) - zwraca wspóªczynniki wielomianu b d cego caªk nieoznaczon z danego wielomianu polyderiv( ) - zwraca wspóªczynniki wielomianu b d cego pochodn z danego wielomianu roots( ) - zwraca zera wielomianu conv(a,b) - zwraca wspóªczynniki wielomianu b d cego iloczynem wielomianó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: (x n, x n 1,..., 1). 45

Wspóªczynniki indeksowane s od jedynki, tzn. wielomian stopnia nie wi kszego od n: n+1 w(x) = a k x n+1 k k=1 jest reprezentowany przez wektor wspóªczynników: (a 1,..., a n+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 x 3 2x + 1 na [ 3, 4] mo»na wykona nast puj c sekwencj komend : a =[1,0, 2,1]; #d e f i n i u j e m y wsp. x=linspace ( 3,4);#s i a t k a wx=polyval ( a, x ) ; #wartosc w na plot ( x, wx ) ; #wykres s i a t c e 5.2 Interpolacja wielomianowa Interpolacja wielomianowa polega na tym,»e szukamy funkcji p z pewnej przestrzeni wielomianów (zazwyczaj wielomianów stopnia nie wi kszego od n), 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ów x k i warto±ci y k = f(x k ) szukamy wielomianu p(x) stopnia co najwy»ej n takiego,»e speªnione s nast puj ce warunki interpolacyjne: f(x k ) = p(x k ) = y k k = 1,..., n + 1. Funkcja polyt(x,y,n) znajduje wspóªczynniki wielomianu p w bazie pot gowej dla wektorów x, y dªugo±ci n + 1. Wa»ne aby warto±ci w x byªy ró»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=polyfit ( x, y, 3 ) ; s=linspace ( 2,5); plot ( s, polyval ( a, s ), x, y, " r +;war i n t e r p ; " ) 46

Rysunek 5.1: Wykres wielomianu interpolacyjnego. Czerwone plusy - warunki interpolacyjne Wida na rysunku 5.1,»e wielomian speªnia warunki interpolacyjne. Mo»emy to sprawdzi te» obliczeniowo: max(abs ( y polyval ( a, x ) ) ) Otrzymali±my wynik: bª d w w zªach jest równy prawie zero. Przetestujmy polyt(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 w zale»no±ci od N: N=100; er=zeros (N+1,1); for k= 0 :N, x=linspace ( 0, 1, k+1); y=2 (rand ( size ( x )) 0.5); a=polyfit ( x, y, k ) ; er ( k+1)=max(abs ( y polyval ( a, x ) ) ) ; endfor 47

max( er ) Widzimy,»e mo»emy otrzyma niepoprawny wynik dla du»ych N. Wynika to ze zªych wªasno±ci algorytmu stosowanego przez octave'a ze wzgl du na zaburzenia powodowane przez niedokªadne obliczenia w arytmetyce zmiennopozycyjnej. 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ównoodlegªe, oraz norm supremum na odcinku [ 4, 6]. Norm supremum: g,[a,b] := g(t) t [a,b] przybli»ymy poprzez dyskretn norm na siatce N równomiernie rozªo»onych punktów na tym odcinku [a, b], czyli z h = (b a)/n: f h,,[a,b] = max f(a + k h) k x =[ 1,0,2,4]; y =[1,1,2, 1]; a=polyfit ( x, y, 3 ) ; s=linspace ( 2,5); plot ( s, polyval ( a, s ), x, y, " r +;war i n t e r p ; " ) 5.2.2 Interpolacja Hermite'a Rozpatrzmy teraz zadanie interpolacji Hermite'a. W interpolacji wielomianowej Hermite'a dla zadanych n + 1 ró»nych punktów x k i naturalnych krotno±ci w zªów p k szukamy wielomianu w(x) stopnia co najwy»ej N dla N = n k=0 p k 1 takiego,»e speªnione s nast puj ce warunki interpolacyjne: w (j) (x k ) = y k,j k = 1,..., n + 1, j = 0,..., p k 1. Tutaj y k,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 dwukrotnych w zªów. 48

Rysunek 5.2: Interpolacja Hermite'a sin(3x) - dwa dwukrotne w zªy 1, 1 Chcemy znale¹ wspóªczynniki wielomianu N k=1 a kx k dla N = 2(n + 1) takie,»e w(x k ) = f(x k ), w (x k ) = f (x k ). Czyli rozwi zanie speªnia nast puj cy ukªad równa«liniowych: N k=1 N a k x k j = f(x k ) k=0 j = 0,..., n ka k x k 1 j = f (x k ) j = 0,..., n. Utwórzmy macierz tego ukªadu z pomoc funkcji vander(x), która tworzy macierz Vandermonde'a dla w zªów podanych w wektorze x: function [ a,c, f ]= interpolyh ( x, y, dy ) #tworzy w s p o l c z y n n i k i wielomianu Hermite ' a d l a #wezlow dwukrotnych z x #y= w a r t o s c i w wezlach x ( wektor pionowy ) 49

#w a r t o s c i pochodnej w wezlach x ( wektor pionowy ) #output : w s p o l c z y n n i k i wielomainu w b a z i e potegowej # ( Zgodne z p o l y v a l ( ) ) #C opcja macierz n=length ( x ) ; N=2 n 1; A=vander ( x,n+1); D=diag (N: 1 : 0 ) ; B=zeros ( size (A) ) ; B ( :, 1 :N)=A( :, 2 :N+1); B=B D; C=[A;B ] ; f =[y ; dy ] ; a=c\ [ y ; dy ] ; endfunction ukladu 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 i funkcji sin(3 x). 50

x =[ 1;1]; f=@( x ) sin (3 x ) ; df=@( x ) 3 cos (3 x ) ; y=f ( x ) ; dy=df ( x ) ; a=interpolyh ( 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 jest styczny 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=interpolyh ( 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 przypadku okre±lonych w zªów zespolonych równomiernie rozmieszczonych na sferze jednostkowej. Chcemy znale¹ wspóªczynniki zespolone a k C, k = 0,..., N takie,»e N a k zj k = b k k=0 j = 0,..., N dla danych zespolonych b k i z j = exp ( ) 2π i j N+1 dla j = 0,..., N, czyli pierwiastków z jedynki stopnia N + 1. Równowa»nie mo»emy to zadanie sformuªowa jako zadanie znalezienia a k takich,»e N ( ) 2π i j k a k exp = b k j = 0,..., N. N + 1 k=0 51

Okazuje si,»e rozwi zanie mo»emy wyrazi poprzez operator dyskretnej transformaty Fouriera, czy równowa»nie jako mno»enie przez macierz F N+1 = 1 N+1 (ωk l N+1 )N k,l=0 : a = F N+1 b gdzie a = (a k ) N k=0, b = (b k ) N k=0, a ω N+1 = exp ( ) 2π i N+1. Mno»enie przez macierz F N+1 mo»na szybko wykona z wykorzystaniem algorytmu szybkiej transformacji Fouriera, czyli FFT (Fast Fourier Transform). Odpowiednia wersja algorytmu FFT sªu»y te» szybkiemu mno»eniu przez macierz odwrotn do F N+1 : F 1 N+1 = (N + 1)F N+1 = (ω k l N+1) N k,l=0. Obliczaj c warto± wielomianu k a kz k w punktach z j, czy równowa»nie warto±ci wielomianu trygonometrycznego N k=0 a k exp (i k x) w punktach x j = 2π j, to przyjmuj c b N+1 j = k a kzj k otrzymujemy: b = F 1 N+1 a. Warto doda,»e cz sto macierz DFT deniuje si bez czynnika 1 N+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 F N+1. Jej najprostsze wywoªanie to a=f f t (b) Sprawd¹my, czy funkcja t () oblicza warto± DFT zgodnie z nasz denicj. Policzmy F 4 (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 i 4 + 0 i 4 + 0 i 4 0 i To oznacza,»e funkcja t () oblicza warto± mno»enia przez (N + 1) F N+1. Z kolei funkcja it () powinna oblicza mno»enie przez macierz odwrotn do (N + 1) F N+1. Sprawd¹my, jak to dziaªa: 52

x =[1, 3, 4, 5 ] ; a=f f t ( x ) ; xx=i f f t ( a ) ; x xx norm( 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) F N+1 i porównajmy szybko± mno»enia przez t macierz wykonan za pomoc standardowego operatora octave'a, czyli operatora, z szybko±ci dziaªania funkcji t (). Stwórzmy najpierw funkcj tworz c macierz (N + 1) F N+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 log 2 (n)), a standardowe mno»enia przez macierz F n kosztuje O(n 2 ). A teraz testujemy szybko± : n=4 512 F=DFTmac(n 1); x=rand (n ) ; tic ; y=f x ; t1=toc tic ; yy=f f t ( x ) ; t2=toc t1 / t2 53

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 ) ) ; tic ; y=f x ; t1 ( k)=toc ; tic ; 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 jest wyra¹nie szybszym algorytmem. 5.4 Interpolacja splajnowa W przypadku interpolacji splajnowej rozpatrujemy dane w zªy: a = x 0,..., x N = b na odcinku [a, b], oraz funkcje splajnowe (splajny), czyli funkcje, które s odpowiedniej klasy gªadko±ci (czyli s w C k ([a, b]), oraz obci te do dowolnego pododcinka [x k, x k+1 ] dla k = 0,..., N 1, s wielomianami co najwy»ej ustalonego stopnia. W przypadku splajnów kubicznych rozwa»amy funkcje, które s klasy C 2 na [a, b], oraz s wielomianami kubicznymi na ka»dym pododcinku. Zadanie interpolacji splajnowej kubicznej polega na znalezieniu splajnu kubicznego s takiego,»e s(x k ) = y k k = 0,..., N dla zadanych y k, oraz speªniaj cego odpowiednie warunki brzegowe. Np. w przypadku splajnu hermitowskiego s musi speªni warunki brzegowe hermitowskie: s (a) = dy a s (b) = dy b dla zadanych dodatkowych dwóch warto±ci dy a, dy b. W przypadku splajnu naturalnego warunki brzegowe to s (a) = s (b) = 0. 54

Rysunek 5.4: Wykres prostego splajnu typu not-a-knot. oznaczaj punkty interpolacji Czerwone plusy Rozpatruje si równie» splajny typu not-a-knot. W tym przypadku, zamiast warunków brzegowych, dodaje si sztucznie dwa warunki ci gªo±ci trzeciej pochodnej w w zªach x 1 i x N 1. Z kolei splajny okresowe speªniaj nast puj ce warunki brzegowe okresowe: s (j) (a) = s (j) (b) j = 0, 1, 2. W ka»dym z tych czterech przypadków splajn interpolacyjny jest wyznaczony jednoznacznie, por. np. [11]. W octave'ie istnieje kilka funkcji zwi zanych z interpolacj splajnami kubicznymi, czy ogólnie - z funkcjami wielomianowymi na pododcinkach: spline() - funkcja sªu» ca znalezieniu splajnu interpolacyjnego hermitowskiego, czy typu not-a-knot ppval() - funkcja sªu» ca obliczeniu warto±ci splajnu zadanego w formacie octave'a 55

Rysunek 5.5: Wykresy prostych splajnów typu not-a-knot i hermitowskiego (z zerowymi pochodnymi w ko«cach) z tymi samymi warunkami interpolacyjnymi. Czerwone plusy oznaczaj punkty interpolacji mkpp() - tworzy funkcj wielomianow na pod-odcinkach (szczegóªy help mkpp()) unmkpp() - ze struktury splajnu w octave'ie zwraca wspóªczynniki wielomianów na pod-odcinkach (szczegóªy help unmkpp()) Podstawow funkcj sªu» c znalezieniu splajnu interpolacyjnego hermitowskiego, 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 wektor y ma t sam dªugo± co x i zawiera warto±ci jakie ma przyj splajn w tych w zªach. Druga mo»liwo± to - przy takim samym wektorze w zªów x, 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

warto±ci y tzn. y k dla k = 2,..., N +1 zawieraj warto±ci splajnu w w zªach z x, czyli s takie same jak w pierwszym przypadku. Funkcja zwraca struktur typu pp, czyli w odpowiednim formacie octave'a splajnu kubicznego typu not-a-knot w pierwszym przypadku, a w drugim - splajnu hermitowskiego. Nast pnie, korzystaj c z funkcji ppval() mo»na obliczy warto± tego splajnu w 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, 1 i 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,»e jego pochodne w ko«cach wynosz zero. Nast pnie narysujmy wykresy obu splajnó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. naturalny 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, v a 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

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 naturalnego 'complete' w przypadku splajnu interpolacyjnego kubicznego hermitowskiego, warto±ci pochodnych w ko«cach s podane w parametrze valc 'not-a-knot' w przypadku splajnu interpolacyjnego kubicznego typu not-a-knot 'periodic' w przypadku splajnu interpolacyjnego kubicznego okresowego 'second' w przypadku splajnu interpolacyjnego kubicznego z ustalonymi warto±ciami drugiej pochodnej w ko«cach, zgodnymi z tym, co podano w parametrze valc Funkcja zwraca struktur typu pp, czyli dane splajnu kubicznego w formacie octave'a. 58

Porównajmy wyniki tej funkcji z wynikiem funkcji spline() dla danych z naszego 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ów obu 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 warunkami 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 obu typó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 interpolujemy splajnami kubicznymi znan funkcj gªadk f(x) na czterech 59

Rysunek 5.7: Wykresy trzech ró»nych splajnów speªniaj cych te same warunki interpolacyjne. Splajn hermitowski posiada pochodne równe zero w ko«cach odcinka. w zªach równoodlegªych na odcinku [a, b]. Je±li pp to struktura typu pp opisuj ca splajn interpoluj cy f, to dyskretn norm maksimum ró»nicy mi dzy f, 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 przeciwnym razie 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

Rysunek 5.8: Wykresy prostych splajnów typu not-a-knot i hermitowskiego z w zªami nierównoodlegªymi z tymi samymi warunkami interpolacyjnymi. Czerwone plusy oznaczaj punkty interpolacji. Splajn hermitowski posiada pochodne 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 kubicznymi: 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

Rysunek 5.9: Wykresy ró»nicy pomi dzy funkcj sin(x), a jej dwoma splajnami interpolacyjnymi - naturalnym i typu not-a-knot. Czerwone plusy oznaczaj 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 ' ) errn=norm( fz pn, ' i n f ' ) Bª d dla splajnu naturalnego byª wi kszy: errn = 0.048190, ni» dla splajnu typu 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ªów i typów splajnów kubicznych interpolacyjnych. 62