Interpolacja funkcji
Transkrypt
Interpolacja funkcji
interpolacja.DOC Interpolacja funkcji 1. Sformułowanie problemu: Rys. 1. Interpolacja funkcji (a) liniowa, (b) kwadratowa, (c) kubiczna. Dane są argumenty x0, x1, ..., xn (1.1) oraz odpowiadające im wartości funkcji y0 = f(x0), y1 = f(x1), ..., yn = f(xn) (1.2) Postać funkcji y = f(x) jest nie znana lub znana. Poszukiwana jest funkcja F(x) o następujących właściwościach: F(x) f(x) F(xi) = f(xi) w przedziale xmin < x < xmax dla x0, x1, ..., xn (1.3a) (1.3b) gdzie: xmin = min xi (1.4a) xmax = max xi (1.4b) Funkcję F(x) nazywa się funkcją interpolującą, a dane punkty (xi, yi) węzłami interpolacji. Funkcję F(x) można na przykład przedstawić w postaci liniowej kombinacji założonych z góry funkcji (bazowych): 0 ( x), 1 ( x), ..., n ( x) y Fx a00 x a11 x ... ann x (1.5) 2. Interpolacja wielomianem potęgowym i x x i , n=1 i 0, 1, ..., n (2 punkty) (2.1) - interpolacja liniowa 2015-01-13 13:13:00 1/8 interpolacja.DOC y a0 a1 x (2.2) y0 a0 a1 x0 (2.3) y1 a0 a1 x1 n = 2 (3 punkty) - interpolacja kwadratowa y a0 a1 x a2 x 2 (2.4) y0 a0 a1 x0 a2 x02 y1 a0 a1 x1 a2 x12 (2.5) y2 a0 a1 x2 a x 2 2 2 Interpolacja liniowa - zastosowanie do tablic x0 < x1 < ... < xn (2.6) xi = xi+1 xi = const (2.7) xi x xi+1 (2.8) y yi yi 1 yi x xi xi 1 xi (2.9) 3. Interpolacja wielomianem Lagrange'a 0 x x x1 x x2 x x3 ... x xn 1 x x x0 x x2 x x3 ... x xn ............................. i x x x0 x x1 x x2 ... x xn (3.1) ............................. n x x x0 x x1 x x2 ... x xn1 Funkcje bazowe i xi są wielomianami stopnia n, przy czym w funkcji i xi (i = 0, 1, 2, ..., n) nie występuje czynnik (x xi). Wielomian interpolacyjny wyraża się tu wzorem W( x) a0 x x1 x x2 ... x xn a1 x x0 x x2 ... x xn ... an x x0 x x1 ... x xn1 (3.2) Wyznaczenie współczynników ai sprowadza się do rozwiązania układu równań algebraicznych liniowych 2015-01-13 13:13:00 2/8 interpolacja.DOC Xa y (3.3) gdzie: x0 x1 x0 xn 0 X 0 0 x1 x0 x1 xn 0 0 0 0 xn x0 xn xn1 (3.4) a0 a a 1 an y0 y y 1 yn (3.5a) a X 1 y (3.5b) (3.6) Dzięki właściwości macierzy (3.4) dostajemy wprost wyrażenia na współczynniki ak a0 y0 x0 x1 x0 x2 x0 xn a1 y1 x1 x0 x1 x2 x1 xn (3.7) an yn xn x0 xn x1 xn xn1 Po podstawieniu (3.7) do (3.2) dostajemy następującą postać wielomianu interpolacyjnego Lagrange'a n W( x) yi i 0 x x0 x x1 x xi1 x xi1 x xn xi x0 xi x1 xi xi1 xi xi1 xi xn (3.8) lub krócej n W( x) yi i 0 x x j j i xi x j , j = 0, 1, ..., n (3.9) j i 2015-01-13 13:13:00 3/8 interpolacja.DOC Po podstawieniu do (3.8) lub (3.9) x xi otrzymujemy W(xi) yi. Przykład 1 Znaleźć wielomian interpolacyjny, który w punktach -2, 1, 2, 4 przyjmuje wartości 3, 1, -3, 8. Dane: x0 2, y0 3 x1 1, y1 1 x2 2, y 2 3 x3 4, y3 8 Rozwiązanie: Stosujemy wzór interpolacyjny Lagrange’a n W ( x ) yi i 0 x x0 x x1 x xi1 x xi1 x xn xi x0 xi x1 xi xi1 xi xi1 xi xn (P1) który dla n 3 przyjmuje postać W ( x) y0 ( x x1 )( x x2 )( x x3 ) ( x x0 )( x x2 )( x x3 ) y1 ( x0 x1 )( x0 x2 )( x0 x3 ) ( x1 x0 )( x1 x2 )( x1 x3 ) ( x x0 )( x x1 )( x x3 ) ( x x0 )( x x1 )( x x2 ) y2 y3 ( x2 x0 )( x2 x1 )( x2 x3 ) ( x3 x0 )( x3 x1 )( x3 x2 ) (P2) Po podstawieniu do (P2) danych liczbowych dostajemy x 1x 2x 4 1 x 2x 2x 4 2 1 2 2 2 4 1 21 21 4 x 2x 1x 4 8 x 2x 1x 2 3 2 22 12 4 4 24 14 2 W ( x) 3 (P3) W ( x) 241 ( x 3 7 x 2 14 x 8) 19 ( x 3 4 x 2 4 x 16) 83 ( x 3 3 x 2 6 x 8) 92 ( x 3 x 2 4 x 4) (P4) 23 x 3 32 x 2 256 x 6 2015-01-13 13:13:00 4/8 interpolacja.DOC 4. Interpolacja splajnami trzeciego stopnia (kubicznymi) Rys.2. Splajny kubiczne. Dane jest n + 1 punktów (węzłów interpolacji) o współrzędnych (x0, y0), (x1, y1), ..., (xn, yn). Poszukujemy n wielomianów trzeciego stopnia o równaniach f i x ai bi x ci x 2 d i x 3 ; i 1, 2,, n , (4.1) łączących punkty (xi-1, yi-1), (xi, yi), gdzie i = 1, 2, ..., n, takich aby uzyskana linia była gładka (żeby płynnie przechodziła przez wszystkie dane punkty). Należy więc znaleźć wartości 4n współczynników ai , bi , ci oraz d i ( i 1, 2,, n ). 2015-01-13 13:13:00 5/8 interpolacja.DOC W celu wykonania zadania sformułujemy następujące warunki. 1. Z ciągłości linii wynika, że f i xi yi dla i 1, 2,, n 1 (4.2) f i1 xi yi dla i 1, 2,, n 1 (4.3) 2. Pierwszy wielomian musi przechodzić przez punkt (x0, y0), natomiast ostatni wielomian musi przechodzić przez punkt (xn, yn), czyli f1 x0 y 0 (4.4) f n xn y n (4.5) 3. Zakładamy, że w węzłach interpolacji jest f i xi f i1 xi dla i 1, 2,, n 1 (4.6) czyli bi 2ci xi 3d i xi2 bi 1 2ci 1 xi 3d i 1 xi2 (4.7) 4. Przyjmujemy także, że w węzłach interpolacji zachodzi f i xi f i1 xi dla i 1, 2,, n 1 (4.8) czyli 2ci 6d i xi 2ci1 6d i1 xi (4.9) Warunek (4.1) daje nam 2n – 2 równań, warunek (4.2) dwa równania, warunki (4.3) oraz (4.4) po n – 1 równań. W sumie dysponujemy 4n – 2 równaniami. Do wyznaczenia wszystkich poszukiwanych współczynników brakuje nam dwóch równań. Równania te można sformułować następująco. a) Zakładamy, że f1 x0 0 czyli 2c1 6d1 x0 0 (4.10) f n xn 0 czyli 2cn 6d n xn 0 (4.11) Otrzymujemy w ten sposób splajny z liniowymi końcami. b) Przyjmujemy, że f1 x0 f1 x1 czyli 2c1 6d1 x0 2c1 6d1 x1 (4.12) 2015-01-13 13:13:00 6/8 interpolacja.DOC f n xn f n xn 1 czyli 2cn 6d n xn 2cn 6d n xn1 (4.13) Otrzymujemy w ten sposób splajny z parabolicznymi końcami. c) Dokonujemy liniowej ekstrapolacji drugiej pochodnej dla końców przedziału f1 x1 f1 x0 f 2x2 f 2x1 x1 x0 x2 x1 (4.14) f nxn f nxn1 f n1 xn1 f n1 xn2 xn xn1 xn1 xn2 (4.15) Dostajemy w ten sposób splajny z końcami trzeciego stopnia. Rys. 3. Splajny kwadratowe. 5. Interpolacja funkcji w Mathcadzie bspline( vx, vy, u, n) - oblicza wektor współczynników vs, wykorzystywany do wyznaczania splajnów stopnia n = 1 - 3 przez funkcję interp( vs, vx, vy, x) . Węzły splajnów określa wektor u; u0 vx 0 oraz uostatni vx ostatni ; liczba elementów wektora u jest równa liczbie elementów wektora vx pomniejszonej o (n - 1). vx i vy powinny być rzeczywistymi wektorami o takiej samej liczbie współrzędnych; współrzędne vx należy podać w kolejności rosnącej. 2015-01-13 13:13:00 7/8 interpolacja.DOC cspline( vx, vy) - oblicza wektor współczynników vs, wykorzystywany do wyznaczania splajnów stopnia trzeciego, z końcami trzeciego stopnia, przez funkcję interp( vs, vx, vy, x) . vx i vy powinny być rzeczywistymi wektorami o takiej samej liczbie współrzędnych; współrzędne vx należy podać w kolejności rosnącej. interp( vs, vx, vy, x) - wyznacza interpolowaną wartość dla argumentu równego x. Wektor vs jest wektorem uzyskanym z funkcji bspline, cspline, lspline lub pspline dla wektorów danych vx oraz vy. Współrzędne vx należy podać w kolejności rosnącej. linterp( vx, vy, x) - wyznacza za pomocą interpolacji liniowej wartość funkcji dla argumentu równego x. vx i vy powinny być rzeczywistymi wektorami o takiej samej liczbie współrzędnych; współrzędne vx należy podać w kolejności rosnącej. lspline( vx, vy) - oblicza wektor współczynników vs, wykorzystywany do wyznaczania splajnów stopnia trzeciego, z końcami liniowymi, przez funkcję interp( vs, vx, vy, x) . vx i vy powinny być rzeczywistymi wektorami o takiej samej liczbie współrzędnych; współrzędne vx należy podać w kolejności rosnącej. pspline( vx, vy) - oblicza wektor współczynników vs, wykorzystywany do wyznaczania splajnów stopnia trzeciego, z końcami parabolicznymi, przez funkcję interp( vs, vx, vy, x) . vx i vy powinny być rzeczywistymi wektorami o takiej samej liczbie współrzędnych; współrzędne vx należy podać w kolejności rosnącej. 2015-01-13 13:13:00 8/8