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  Fx   a00 x   a11 x   ...  ann 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  xn1 
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  xn1 
(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
Xa  y
(3.3)
gdzie:
 x0  x1    x0  xn 

0
X



0

0

x1  x0   x1  xn  


0
0
0


0



xn  x0   xn  xn1 
(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  xn1 
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  xi1 x  xi1 x  xn 
xi  x0 xi  x1 xi  xi1 xi  xi1 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  xi1 x  xi1   x  xn 
xi  x0 xi  x1   xi  xi1 xi  xi1   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  1x  2x  4  1  x  2x  2x  4
 2  1 2  2 2  4
1  21  21  4
x  2x  1x  4  8  x  2x  1x  2
 3
2  22  12  4
4  24  14  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 i1  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 i1  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 i1  xi  dla i  1, 2,, n  1
(4.8)
czyli
2ci  6d i xi  2ci1  6d i1 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 xn1
(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 2x2   f 2x1 

x1  x0
x2  x1
(4.14)
f nxn   f nxn1  f n1  xn1   f n1 xn2 

xn  xn1
xn1  xn2
(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

Podobne dokumenty