Interpolcj funkcjmi sklejnymi Kzimierz Jkubczyk 19 lutego 2008 Przykłd Rungego Jedyną możliwością uzyskni lepszego przybliżeni w interpolcji wielominowej jest zwiększenie stopni wielominu interpolcyjnego, czyli liczby węzłów. Nie jest to jednk możliwe, gdy funkcj interpolown jest nieznn. Nwet gdy funkcj interpolown jest znn i brdzo regulrn, ciąg wielominów interpolcyjnych może nie być do niej zbieżny. Przykłdem tkiej funkcji jest f(x) = 1 1 + x 2 i ciąg wielominów interpolcyjnych {P n } oprtych n węzłch równoodległych z przedziłu [ 5, 5]: x i = 5 + i 10 n (i = 0, 1,..., n) (Runge) [2]. Pomimo że f jest nieskończenie różniczkowln, to ciąg {P n (x)} jest zbieżny do f(x) tylko dl x < 3, 63... i rozbieżny dl x > 3, 63... Funkcje sklejne Klsyczne funkcje sklejne wywodzą się z prktyki inżynierskiej. Przez wiele lt do kreśleni elementów konstrukcyjnych w przemyśle okrętowym i smochodowym używno elstycznej listewki drewninej nzywnej giętką (ng. spline). Linił tki, prowdzony przez zdne punkty z pomocą stosownych ciężrków, ugin się wzdłuż grzywej njgłdszej. Inn odmin tej techniki rysowni krzywych głdkich poleg n użyciu tzw. krzywików. Linił używny przez kreślrz możn trktowć jk cienką belkę ulegjącą odksztłceniu pod wpływem dziłni sił zewnętrznych w dnych punktch. Siły sprężyste belki równowżą siły zginjące, w wyniku czego belk przyjmuje ksztłt krzywej njgłdszej chrkteryzującej się włsnością minimlnej krzywizny [1]. Pojęcie głdkości krzywej uściślimy dl krzywych o równniu y = f(x), gdzie f C 2 [, b]. Krzywizn tkiej krzywej w punkcie x wynosi κ(x) = f (x) 1 + f (x) 23 1
Niech będzie dny ukłd punktów x 0, x 1,..., x n dzielących przedził [, b] n n części, tzn.: = x 0 < x 1 <... < x n = b Niech również będą dne wrtości y 0, y 1,..., y n w punktch tego podziłu. Funkcj (krzyw) f C 2 [, b] interpolując punkty (x i, y i ) (i = 0, 1,..., n) jest njgłdsz w tym sensie, że spośród wszystkich funkcji (krzywych) klsy C 2 [, b] interpolujących te punkty dje njmniejszą wrtość tzw. krzywizny cłkowitej [1]: κ(x) 2 dx W prktyce trudno jest szukć rozwiązni zgdnieni interpolcji w postci funkcji njgłdszej z powodu skomplikownego wyrżeni opisującego krzywiznę. Nietrudno zuwżyć, że dl młych wrtości f (x) krzywizn w punkcie x jest w przybliżeniu równ f (x). Uproszczenie to dostrcz interesującego rozwiązni w postci funkcji sklejnych trzeciego stopni, które wystrcz w wielu zstosownich, nwet gdy wrtości f (x) nie są młe. Kryterium minimlnej krzywizny sprowdz się wówczs do minimlizcji cłki [1, 2, 4]: f (x) 2 dx Definicj 1. Funkcję rzeczywistą s C m 1 [, b] nzywmy funkcją sklejną lub spljnem (ng. spline) stopni m z węzłmi = x 0 < x 1 <... < x n = b jeżeli w kżdym z przedziłów [x i, x i+1 ] jest wielominem stopni co njwyżej m. Funkcj sklejn stopni 0 jest funkcją schodkową (przedziłmi stłą), funkcj sklejn stopni 1 jest łmną. W prktyce njczęściej są używne funkcje sklejne stopni 3, nzywne też sześciennymi lub kubicznymi. W pewnych zdnich stosuje się funkcje sklejne wyższych stopni, tkże inne ich odminy, np. hiperboliczne funkcje sklejne i funkcje B-sklejne. Dl stopni nieprzystych m = 2k + 1 rozptruje się często nturlne funkcje sklejne, które poz przedziłem [, b] są wielominmi stopni co njwyżej k. Oblicznie funkcji sklejnych Szukmy tkiej funkcji sklejnej s trzeciego stopni, któr w dnych węzłch x i m dne wrtości y i i któr w kżdym z przedziłów [x i, x i+1 ] jest wielominem stopni nie wyższego niż 3. Niech M i = s (x i ) (i = 0, 1,..., n) Poniewż s jest w przedzile [x i, x i+1 ] wielominem stopni co njwyżej trzeciego, funkcj s jest tm liniow [1]: s (x) = M i+1 M i (x x i ) + M i x i+1 x i 2
Cłkując dwukrotnie obie strony tej równości, otrzymujemy njpierw potem s (x) = M i+1 M i 2(x i+1 x i ) (x x i) 2 + M i (x x i ) + α i s(x) = M i+1 M i 6(x i+1 x i ) (x x i) 3 + M i 2 (x x i) 2 + α i (x x i ) + y i Stł cłkowni y i wynik z wrunku interpolcji s(x i ) = y i. Z kolei, korzystjąc z powyższego równni i wrunku s(x i+1 ) = y i+1, otrzymujemy stąd y i+1 = M i+1 M i 6(x i+1 x i ) (x i+1 x i ) 3 + M i 2 (x i+1 x i ) 2 + α i (x i+1 x i ) + y i α i = y i+1 y i M i+1 + 2M i (x i+1 x i ) x i+1 x i 6 Funkcje s i s dją się więc opisć w przedzile [x i, x i+1 ] wzormi: s (x) = M i+1 M i 2(x i+1 x i ) (x x i) 2 + M i (x x i ) + y i+1 y i x i+1 x i + M i+1 + 2M i (x i+1 x i ) 6 s(x) = M i+1 M i 6(x i+1 x i ) (x x i) 3 + M i 2 (x x i) 2 + [ yi+1 y i + M ] i+1 + 2M i (x i+1 x i ) (x x i ) + y i x i+1 x i 6 w których nleży wyznczyć wielkości M i (i = 0, 1,..., n). Funkcj s jest ciągł. Porównując ztem dw wyrżeni reprezentujące wrtość s (x i ) = s (x i +) odpowidjące przejściu od przedziłu [x i 1, x i ] do [x i, x i+1 ], dostjemy gdzie µ i M i 1 + 2M i + λ i M i+1 = d i (i = 1, 2,..., n 1) λ i = x i+1 x i, µ i = 1 λ i x i+1 x i 1 ( 6 yi+1 y i d i = y ) i y i 1 x i+1 x i 1 x i+1 x i x i x i 1 Otrzymliśmy ukłd n 1 równń liniowych z niewidomymi M 0, M 1,..., M n. Poniewż niewidomych jest n + 1, rozwiąznie tego ukłdu wymg określeni dodtkowych wrunków, które zpiszemy w postci dwóch dodtkowych równń liniowych jednego n początku, drugiego n końcu ukłdu: 2M 0 + M 1 λ 0 = d 0 µ n M n 1 + 2M n = d n 3
Wtedy pełny ukłd wygląd nstępująco: 2 λ 0 0 M 0 µ 1 2 λ 1 M 1 µ 2 2 λ 2 M 2.......... µ n 1 2 λ n 1 M n 1 0 µ n 2 M n = d 0 d 1 d 2. d n 1 d n Powróćmy do określeni współczynników dwóch dodtkowych równń. Njprościej przyjąć M 0 = M n = 0, tj. λ 0 = 0, d 0 = 0 µ n = 0, d n = 0 Dje to normlną funkcję sklejną trzeciego stopni, któr n lewo i n prwo od przedziłu [, b] jest wielominem pierwszego stopni. Odpowid to liniłowi elstycznemu, którego końce są swobodne. Inny sensowny wybór współczynników dodtkowych równń odpowid liniłowi o usztywnionych końcch, np. belce o końcch wmurownych w rurch, w których mogą się one przesuwć. Inczej mówiąc, wrunki djące nturlną funkcję sklejną zstępujemy wrunkmi brzegowymi postci s (x 0+ ) = y 0, s (x n ) = y n gdzie y 0 i y n są dnymi nchylenimi końców liniłu. Korzystjąc z równni przedstwijącego postć funkcji s, łtwo uzyskć współczynniki obu równń: ( ) 6 y1 y 0 λ 0 = 1, d 0 = y 0 x 1 x 0 x 1 x 0 ( 6 µ n = 1, d n = y x n x n y ) n y n 1 n 1 x n x n 1 Oczywiście, możn określć wrunki mieszne, przyjmując jeden koniec swobodny, drugi usztywniony. Rozptruje się również okresowe funkcje sklejne, które w końcch przedziłu [, b] przyjmują tkie sme wrtości wrz z pierwszymi pochodnymi. Mcierz ukłdu równń wiążącego wielkości M 0, M 1,..., M n jest trójdigonln, poniewż µ i + λ i = 1 (i = 1, 2,..., n 1) orz λ 0 i µ n są równe 0 lub 1, główn przekątn tej mcierzy jest dominując. Dowodzi się, że mcierz o tej włsności jest nieosobliw, ukłd m więc dokłdnie jedno rozwiąznie. Możn go wyznczyć, stosując uproszczony wrint metody Guss. Minowicie, eliminując jedynie elementy leżące tuż pod główną przekątną, otrzymujemy M i = q i M i+1 + u i (i = 0, 1,..., n 1) M n = u n 4
gdzie q 0 = λ 0 2, u 0 = d 0 2 q i λ i = µ i q i 1 + 2, u i = d i µ i u i 1 µ i q i 1 + 2 u n = d n µ n u n 1 µ n q n 1 + 2 (i = 1, 2,..., n 1) Osttnie równnie dje bezpośrednio wrtość współczynnik M n. Wrtości pozostłych obliczmy w kolejności M n 1, M n 2,..., M 0. Algorytm wyznczni wrtości M 0, M 1,..., M n możn zprogrmowć nstępująco: if lewy_koniec_swobodny then q[0] := 0; u[0] := 0; end else q[0] := -0.5; u[0] := 3*((y[1]-y[0])/(x[1]-x[0])-yp0)/(x[1]-x[0]); end; for i := 1 to n-1 do lmbd := (x[i+1]-x[i])/(x[i+1]-x[i-1]); mi := 1-lmbd; d := 6*((y[i+1]-y[i])/(x[i+1]-x[i])- (y[i]-y[i-1])/(x[i]-x[i-1]))/(x[i+1]-x[i-1])); q[i] := -lmbd/(mi*q[i-1]+2); u[i] := (d-mi*u[i-1])/(mi*q[i-1]+2); end; if prwy_koniec_swobodny then M[n] := 0 else d := 6*(ypn-(y[n]-y[n-1])/(x[n]-x[n-1]))/(x[n]-x[n-1]); M[n] := (d-u[n-1])/(q[n-1]+2); end; for i := n-1 downto 0 do M[i] := q[i]*m[i+1]+u[i]; W lgorytmie przyjęto, że dwie zmienne logiczne lewy koniec swobodny i prwy koniec swobodny zwierją informcję o wrunkch brzegowych: wrtość true ozncz, że stosowny koniec liniłu elstycznego jest swobodny, flse, że jest usztywniony. Pondto zmienne yp0 i ypn mją odpowiednio wrtości y 0 i y n, gdy końce liniłu są usztywnione. Aby znleźć wrtość w = s(t) funkcji sklejnej s w punkcie t [, b], trzeb njpierw ustlić, do którego z przedziłów [x i, x i+1 ] punkt t nleży. W poniższym lgorytmie przeglądnie to odbyw się od strony prwej do lewej. Po znlezieniu odpowiedniego przedziłu obliczn jest według schemtu Horner wrtość włściwego wielominu trzeciego stopni: 5
i := n; repet i := i-1; dt := t-x[i]; until (i = 0) or (dt >= 0); dx := x[i+1]-x[i]; w := (((M[i+1]-M[i])/(6*dx)*dt+ M[i]/2)*dt+ ((y[i+1]-y[i])/dx-(m[i+1]+2*m[i])/6*dx))*dt+ y[i]; Algorytm możn łtwo rozbudowć tk, by uwzględnione zostły również przedziły (, x 0 ) i (x n, ). Nleży wówczs przyjąć, że s jest w tych przedziłch wielominem stopni co njwyżej pierwszego, czyli że jest nturlną funkcją sklejną. Jkość interpolcji Istnienie i jednoznczność funkcji sklejnej trzeciego stopni interpolującej dne punkty wynik z fktu, że mcierz rozptrywnego wyżej ukłdu równń liniowych jest nieosobliw. Interpolując funkcj sklejn jest w pewnym sensie njgłdszą funkcją interpolującą [3]. Twierdzenie 1. Jeżeli f C 2 [, b], = x 0 < x 1 <... < x n = b i s jest funkcją sklejną trzeciego stopni interpolującą f w węzłch x i (i = 0, 1,..., n), to Dowód. Niech q f s. Mmy: [f (x)] 2 dx = [s (x)] 2 dx [s (x)] 2 dx + [f (x)] 2 dx [g (x)] 2 dx + 2 s (x) g (x) dx Wystrczy pokzć, że osttni cłk po prwej stronie znik. Cłkując przez części, otrzymujemy xi s (x)g (x) dx = s (x)g (x) dx = i=1 x i 1 [ ] xi = s (x i )g (x i ) s (x i 1 )g (x i 1 ) s (x)g (x) dx = i=1 x i 1 xi = s (b)g (b) s ()g () c i g (x) dx = i=1 x i 1 = s (b)g (b) s ()g () c i [g(x i ) g(x i 1 )] gdzie c i są stłymi tkimi, że c i = s (x) dl x [x i 1, x i ] (funkcj s jest przedziłmi stł). Z definicji funkcji g wynik, że g(x i ) = 0. Ztem i=1 s (x)g (x) dx = s (b)g (b) s ()g () 6
Wyrżenie po prwej stronie równości jest równe zero, gdy wrunki brzegowe określją nturlną funkcję sklejną (swobodne końce): s () = s (b) = 0 Jeżeli wrunki określjące nturlną funkcję sklejną zstąpimy wrunkmi lterntywnymi (usztywnione końce): s () = f () = y 0, s (b) = f (b) = y n to wyrżenie to będzie również miło wrtość zero: s (b)g (b) s ()g () = s (b) [f (b) s (b)] s () [f () s ()] = 0 Wbrew zchowniu się wielominów interpolcyjnych (por. przykłd Rungego [2]) funkcje sklejne są zbieżne do funkcji, którą interpolują, jeżeli tylko wybiermy corz drobniejsze podziły rozptrywnego przedziłu [, b]. Wynik to z nstępującego twierdzeni dotyczącego oszcowni błędu interpolcji funkcjmi sklejnymi trzeciego stopni [2] (bez dowodu). Twierdzenie 2. Jeżeli f C 2 [, b], = x 0 < x 1 <... < x n = b i s jest funkcją sklejną trzeciego stopni interpolującą f w węzłch x i (i = 0, 1,..., n), to dl kżdego x [, b] zchodzi nierówność f(x) s(x) 5M mx 1 i n (x i x i 1 ) 2 gdzie M = mx ξ b f (ξ) Litertur [1] Ahlberg J.H., Nilson E.N., Wlsh J.L.: The Theory of Splines nd Their Applictions, Acdemic Press, New York nd London 1967. [2] Jnkowscy J. i M.: Przegląd metod i lgorytmów numerycznych, część 1, WNT, Wrszw 1981. [3] Kincid D., Cheney W.: Anliz numeryczn, WNT, Wrszw 2006. [4] Stoer J.: Wstęp do metod numerycznych, tom 1, PWN, Wrszw 1979. 7