Sunteți pe pagina 1din 6

CURS #10 V. Interpolarea cu funcţii spline.

V.1. Interpolare cu funcţii spline liniare.


Fie f : [a, b] → R şi (xi )i=1,n+1 o diviziune a intervalului [a, b], i.e.
a = x1 < . . . < xn+1 = b. Fie Ij = [xj , xj+1 ) cu I¯j = [xj , xj+1 ], j = 1, n − 1,
In = I¯n = [xn , xn+1 ].

CONŢINUTUL CURSULUI #10: Definiţia (V.1.)


V. Interpolarea cu funcţii spline. Funcţia S : [a, b] −→ R s.n. funcţie spline liniară pentru funcţia
V.1. Interpolare cu funcţii spline liniare. f : [a, b] −→ R dacă:
V.2. Interpolare cu funcţii spline pătratice.
V.3. Interpolare cu funcţii spline cubice. (a) S este liniară pe porţiuni:

S(x) = Sj (x) , ∀ x ∈ Ij , j = 1, n (1)

unde
Sj : I¯j −→ R , Sj (x) = aj + bj (x − xj ) , j = 1, n (2)

cu aj , bj ∈ R, j = 1, n, ce trebuie determinate.

Curs #10 December 5, 2019 1 / 22 Curs #10 December 5, 2019 2 / 22

Definiţia (V.1. (continuare))


(b) S interpolează f ı̂n xj , j = 1, n + 1:
Conform condiţiei (c) se obţin succesiv următoarele relaţii:
S(xj ) = f (xj ) , j = 1, n + 1 (3)
(aj + bj (x − xj )) |x=xj+1 = (aj+1 + bj+1 (x − xj+1 )) |x=xj+1
(c) S este continuă ı̂n nodurile interioare, i.e. xj+1 , j = 1, n − 1:
aj + bj (xj+1 − xj ) = aj+1 , j = 1, n − 1
Sj (xj+1 ) = Sj+1 (xj+1 ) , j = 1, n − 1 (4) f (xj+1 ) − f (xj )
bj = , j = 1, n − 1 (6)
xj+1 − xj
Relaţiile (3)–(4) ne furnizează sistemul de ecuaţii liniare, i.e. 2n ecuaţii
liniare pentru necunoscutele aj , bj ∈ R, j = 1, n. Rezultă următoarea schemă numerică de determinare a coeficienţilor
Conform condiţiei (b) şi ţinând cont de faptul că xj ∈ Ij , j = 1, n rezultă aj , bj , j = 1, n :

aj = f (xj ), j = 1, n
S(xj ) = Sj (xj ) = f (xj ), deci aj = f (xj ), j = 1, n
f (xj+1 ) − f (xj ) (7)
bj = , j = 1, n
Nodul xn+1 ∈ In , deci xj+1 − xj
S(xn+1 ) = Sn (xn+1 ) ⇒ an + bn (xn+1 − xn ) = f (xn+1 ) ⇒
f (xn+1 ) − f (xn )
bn = (5)
xn+1 − xn
Curs #10 December 5, 2019 3 / 22 Curs #10 December 5, 2019 4 / 22
Obs.: Vectorul X conţine nodurile de interpolare x1 , . . . , xn+1 , iar vectorul
ALGORITM (Interpolarea spline liniară)
Y conţine valorile funcţiei ı̂n nodurile de interpolare, f (x1 ), . . . , f (xn+1 ).
Date de intrare: X ; Y ; x;
Exemplul # 1: Să se afle funcţia spline liniară pentru funcţia f (x) = e 2x
Date de ieşire: y ;
relativ la diviziunea (x1 , x2 , x3 ) = (−1, 0, 1).
STEP 1: Determină n; Rezolvare:
STEP 2: for j = 1 : n do 
Yj+1 − Yj S1 (x), x ∈ [x1 , x2 )
aj = Yj ; bj = ; S(x) =
Xj+1 − Xj S2 (x), x ∈ [x2 , x3 ]
endfor unde S1 (x) = a1 + b1 (x − x1 ) şi S2 (x) = a2 + b2 (x − x2 ). Se obţine astfel
STEP 3: for j = 1 : n do 
a1 + b1 (x + 1), x ∈ [−1, 0)
if x ∈ [Xj , Xj+1 ] do S(x) =
a2 + b2 x, x ∈ [0, 1]
S = aj + bj (x − Xj );
STOP Deoarece S interpolează f ı̂n cele trei noduri rezultă
endif S(x1 ) = f (x1 ), S(x2 ) = f (x2 ), S(x3 ) = f (x3 )
endfor
y = S; echivalent:
S1 (−1) = e −2 , S2 (0) = 1, S2 (1) = e 2
Curs #10 December 5, 2019 5 / 22 Curs #10 December 5, 2019 6 / 22

V.2. Interpolare cu funcţii spline pătratice.

Definiţia (V.2.)
de unde a1 = e −2 , a2 = 1, a2 + b2 = e 2 , deci b2 = e 2 − 1.
Funcţia S : [a, b] −→ R s.n. funcţie spline pătratică pentru funcţia
Pe de altă parte, S este continuă ı̂n nodul x2 ∈ (−1, 1), i.e.
f : [a, b] −→ R dacă:
S1 (x2 ) = S2 (x2 ) sau S1 (0) = S2 (0), deci a1 + b1 = a2 , de unde rezultă
b1 = 1 − e −2 . Obţinem astfel, următoarea reprezentare: (a) S este pătratică pe porţiuni:
 −2
e + (1 − e −2 )(x + 1), x ∈ [−1, 0) S(x) = Sj (x) , ∀ x ∈ Ij , j = 1, n (8)
S(x) =
1 + (e 2 − 1)x, x ∈ [0, 1]
unde
1 + (1 − e −2 )x, x ∈ [−1, 0)

= 2
Sj : I¯j −→ R ,
1 + (e − 1)x, x ∈ [0, 1]
Sj (x) = aj + bj (x − xj ) + cj (x − xj )2 , j = 1, n (9)
cu aj , bj , cj ∈ R, j = 1, n, ce trebuie determinate.
(b) S interpolează f ı̂n xj , j = 1, n + 1:

S(xj ) = f (xj ) , j = 1, n + 1 (10)

Curs #10 December 5, 2019 7 / 22 Curs #10 December 5, 2019 8 / 22


Definiţia (V.2. (continuare)) aj + bj (xj+1 − xj ) + cj (xj+1 − xj )2 = aj+1 , j = 1, n − 1 (15)
(c) S este continuă ı̂n nodurile interioare xj+1 , j = 1, n − 1:
sau
Sj (xj+1 ) = Sj+1 (xj+1 ) , j = 1, n − 1 (11) aj + bj (xj+1 − xj ) + cj (xj+1 − xj )2 = f (xj+1 ), j = 1, n − 1 (16)
(d) S 0 este continuă ı̂n nodurile interioare xj+1 , j = 1, n − 1: Relaţiile (14) şi (16) pot fi cuplate şi rescrise ca o singură relaţie pentru
j = 1, n.
Sj0 (xj+1 ) = Sj+1
0
(xj+1 ) , j = 1, n − 1 (12) Cum Sj0 (x) = bj + 2cj (x − xj ), atunci conform condiţiei (d) rezultă
(e) Una din următoarele condiţii este satisfăcută bj + 2cj (xj+1 − xj ) = bj+1 , j = 1, n − 1 (17)
(e)1 : S 0 (x1 ) = f 0 (x1 )
(e)2 : S 0 (xn+1 ) = f 0 (xn+1 ) Conform condiţiei (e) rezultă

Conform condiţiei (b) rezultă S10 (x1 ) = f 0 (x1 ) ⇒ b1 = f 0 (x1 ) (18)

aj = f (xj ), j = 1, n (13) sau


an + bn (xn+1 − xn ) + cn (xn+1 − xn )2 = f (xn+1 ) (14) Sn0 (xn+1 ) = f 0 (xn+1 ) ⇒ bn + 2cn (xn+1 − xn ) = f 0 (xn+1 ) (19)
Dacă ı̂n (19) considerăm bn+1 = f 0 (xn+1 ) atunci relaţiile (19) şi (17) pot fi
Conform condiţiei (c) rezultă cuplate şi rescrise ca o singură relaţie pentru j = 1, n.
Curs #10 December 5, 2019 9 / 22 Curs #10 December 5, 2019 10 / 22

Fie hj = xj+1 − xj , j = 1, n lungimea fiecărei subinterval [xj , xj+1 ].


Obţinem astfel, sistemele complete de ecuaţii necesare pentru
determinarea coeficienţilor bj , cj : Rezultă schemele numerice de calcul a coeficienţilor bj , cj , j = 1, n

2
aj + bj hj + cj hj = f (xj+1 ), j = 1, n

b1 = f 0 (x1 )


b1 = f 0 (x1 ) (20)


 2
bj+1 = (f (xj+1 ) − f (xj )) − bj , j = 1, n − 1
 
bj + 2cj hj = bj+1 , j = 1, n − 1 (24)

hj
sau

 1
cj = 2 (f (xj+1 ) − f (xj ) − hj bj ) , j = 1, n
 

2 hj
aj + bj hj + cj hj = f (xj+1 ), j = 1, n

bn+1 = f 0 (xn+1 ) (21) sau
 
bj + 2cj hj = bj+1 , j = 1, n bn+1 = f 0 (xn+1 )




 2
Din (20)1 rezultă 
bj = (f (xj+1 ) − f (xj )) − bj+1 , j = n, 1
hj (25)
1  1
cj = (f (xj+1 ) − f (xj ) − hj bj ) , j = 1, n (22) 
cj =
 (f (xj+1 ) − f (xj ) − hj bj ) , j = 1, n
hj2

hj2
Introducând (22) ı̂n (20)3 obţinem
2
bj+1 + bj = (f (xj+1 ) − f (xj )) , j = 1, n − 1 (23)
hj
Curs #10 December 5, 2019 11 / 22 Curs #10 December 5, 2019 12 / 22
Exemplul #2: Să se afle funcţia spline pătratică pentru funcţia echivalent
f (x) = e 2x relativ la diviziunea (x1 , x2 , x3 ) = (−1, 0, 1). S1 (−1) = e −2 , S2 (0) = 1, S2 (1) = e 2
Rezolvare: de unde a1 = e −2 , a2 = 1, a2 + b2 + c2 = e 2 , deci
b2 + c2 = e 2 − 1.

S1 (x), x ∈ [x1 , x2 ) (26)
S(x) =
S2 (x), x ∈ [x2 , x3 ]
Pe de altă parte, S este continuă ı̂n nodul x2 ∈ (−1, 1), i.e.
unde S1 (x2 ) = S2 (x2 ) sau S1 (0) = S2 (0), deci a1 + b1 + c1 = a2 , de unde rezultă
S1 (x) = a1 + b1 (x − x1 ) + c1 (x − x1 )2
b1 + c1 = 1 − e −2 . (27)
şi
Derivatele funcţiilor S1 şi S2 sunt:
S2 (x) = a2 + b2 (x − x2 ) + c2 (x − x2 )2
S10 (x) = b1 + 2c1 (x − x1 ), S20 (x) = b2 + 2c2 (x − x2 ). Funcţia S 0 se exprimă
Se obţine astfel prin formula

a1 + b1 (x + 1) + c1 (x + 1)2 , x ∈ [−1, 0) b1 + 2c1 (x + 1), x ∈ [−1, 0)

S(x) = S 0 (x) =
a2 + b2 x + c2 x 2 , x ∈ [0, 1] b2 + 2c2 x, x ∈ [0, 1]
Derivata S 0 a funcţiei spline pătratice este continuă ı̂n nodul interior x2 ,
Deoarece S interpolează f ı̂n cele trei noduri rezultă
i.e. S10 (x2 ) = S20 (x2 ) sau S10 (0) = S20 (0) de unde rezultă
S(x1 ) = S1 (x1 ) = f (x1 ), S(x2 ) = S2 (x2 ) = f (x2 ), S(x2 ) = S2 (x3 ) = f (x3 ) b1 + 2c1 = b2 (28)
Curs #10 December 5, 2019 13 / 22 Curs #10 December 5, 2019 14 / 22

V.3. Interpolare cu funcţii spline cubice.

Definiţia (V.3.)
Considerăm ı̂n plus satisfăcută condiţia S 0 (x1 ) = f 0 (x1 ) sau Funcţia S : [a, b] −→ R s.n. funcţie spline cubică pentru funcţia
S10 (−1) = f 0 (−1), de unde b1 = 2e −2 . Din relaţia (27) rezultă f : [a, b] −→ R dacă:
c1 = 1 − 3e −2 , iar din (28) rezultă b2 = 2 − 4e −2 . În final, din relaţia (26) (a) S este cubică pe porţiuni:
rezultă c2 = e 2 + 4e −2 − 3. Obţinem astfel, următoarea reprezentare a
funcţiei spline pătratice S : S(x) = Sj (x) , ∀ x ∈ Ij , j = 1, n (29)
 −2
e + 2e −2 (x + 1) + (1 − 3e −2 )(x + 1)2 , x ∈ [−1, 0) unde
S(x) =
1 + (2 − 4e −2 )x + (e 2 + 4e −2 − 3)x 2 , x ∈ [0, 1] Sj : I¯j −→ R ,
Sj (x) = aj + bj (x − xj ) + cj (x − xj )2 + dj (x − xj )3 , j = 1, n (30)
cu aj , bj , cj , dj ∈ R, j = 1, n, ce trebuie determinate.
(b) S interpolează f ı̂n xj , j = 1, n + 1:

S(xj ) = f (xj ) , j = 1, n + 1 (31)

Curs #10 December 5, 2019 15 / 22 Curs #10 December 5, 2019 16 / 22


Vom trata doar cazul (f )1 , cazul (f )2 se abordează după acelaşi
Definiţia (V.3. (continuare)) raţionament. Conform condiţiei (b) rezultă
(c) S este continuă ı̂n xj+1 , j = 1, n − 1:
(
aj = f (xj ), j = 1, n
Sj (xj+1 ) = Sj+1 (xj+1 ) , j = 1, n − 1 (32) an + bn (xn+1 − xn ) + cn (xn+1 − xn )2 + dn (xn+1 − xn )3 = f (xn+1 )
(37)
(d) S 0 este continuă ı̂n xj+1 , j = 1, n − 1: Din (c) rezultă

Sj0 (xj+1 ) = Sj+1


0
(xj+1 ) , j = 1, n − 1 (33) aj +bj (xj+1 −xj )+cj (xj+1 −xj )2 +dj (xj+1 −xj )3 = aj+1 , j = 1, n − 1 (38)
Relaţiile (37) şi (38) se rescriu
(e) S 00 este continuă ı̂n xj+1 , j = 1, n − 1: (
aj = f (xj ), j = 1, n
00
Sj00 (xj+1 ) = Sj+1 (xj+1 ) , j = 1, n − 1 (34) (39)
bj hj + cj hj2 + dj hj3 = f (xj+1 ) − f (xj ), j = 1, n
(f) Unul dintre următoarele seturi de condiţii este ı̂ndeplinit Deoarece Sj0 (x) = bj + 2cj (x − xj ) + 3dj (x − xj )2 din (d) rezultă

(f )1 : S 0 (x1 ) = f 0 (x1 ), S 0 (xn+1 ) = f 0 (xn+1 ) (spline cubică cu constrângeri) (35) bj + 2cj (xj+1 − xj ) + 3dj (xj+1 − xj )2 = bj+1 , j = 1, n − 1 (40)

(f )2 : S 00 (x1 ) = 0, S 00 (xn+1 ) = 0 (spline cubică naturală) (36) sau


bj + 2cj hj + 3dj hj2 = bj+1 , j = 1, n − 1 (41)
Curs #10 December 5, 2019 17 / 22 Curs #10 December 5, 2019 18 / 22

Deoarece Sj00 (x) = 2cj + 6dj (x − xj ), atunci conform (e) rezultă


Dacă cuplăm relaţiile (45)2 şi (45)3 obţinem sistemul
cj + 3dj hj = cj+1 , j = 1, n − 1 (42)
Din condiţiiile (f)1 şi ţinând cont că S 0 (x1 ) = S10 (x1 ), S 0 (xn+1 ) = Sn (xn+1 ) c h + d h2 = f (xj+1 ) − f (xj ) − b , j = 1, n

j j j j j
rezultă hj (46)
b1 = f 0 (x1 ) (43) 2cj hj + 3dj hj2 = bj+1 − bj , j = 1, n

0
bn + 2cn + 3dn hn2 = f (xn+1 ) (44)
Combinaţiile de forma: (46)1 ×2− (46)2 şi (46)1 ×3− (46)2 furnizează
Relaţia (44) poate fi ı̂nglobată ı̂n relaţiile (41) dacă adoptăm notaţia expesii pentru coeficienţii dj , cj , j = 1, n exprimaţi ı̂n raport cu coeficienţii
bn+1 = f 0 (xn+1 ). Se obţine sistemul complet de determinare a bj , j = 1, n + 1. Astfel
coeficienţilor funcţiei spline cubice S
2 1
 
aj = f (xj ), j = 1, n
 dj = − 3 (f (xj+1 ) − f (xj )) + 2 (bj+1 + bj ), j = 1, n

  hj hj
bj hj + cj hj2 + dj hj3 = f (xj+1 ) − f (xj ), j = 1, n


3 b + 2bj (47)
j+1
 c = (f (x ) − f (x )) −
bj + 2cj hj + 3dj hj2 = bj+1 , j = 1, n (45)  j j+1 j , j = 1, n
hj2 hj


0 0
b1 = f (x1 ), bn+1 = f (xn+1 )



Introducând coeficienţii cj , dj ı̂n relaţia (45)5 se obţine un sistem de n + 1

cj−1 + 3dj−1 hj−1 = cj , j = 2, n

ecuaţii, având drept necunoscute coeficienţii, bj , j = 1, n + 1
Obs.: Relaţiile (45) formează un sistem de 4n + 1 ecuaţii şi 4n + 1
necunoscute aj , cj , dj , j = 1, n; bj , j = 1, n + 1.
Curs #10 December 5, 2019 19 / 22 Curs #10 December 5, 2019 20 / 22


b1 = f 0 (x1 ) 


 1 2 2

1 cu matricea asociată, B, diagonal dominantă
 hj−1 bj−1 + hj + hj−1 bj + hj bj+1


  
! 1 0 0 0 ... 0
3 3 3 3  1 4 1 0 ... 0
= − 2 f (xj−1 ) + − 2 f (xj ) + 2 f (xj+1 ), j = 2, n

 
2
  


 hj−1 hj−1 hj hj  0 1
 4 1 ... 0 
B= 0 0 (50)
 
0 1 4 ... 0

b = f (x )

n+1 n+1  
 .. .. .. .. .. ..
(48)

 . . . . . . 
În cazul unei diviziuni (xj )j=1,n+1
echidistante cu pasul h sistemul de mai 0 0 0 0 ... 1
sus se rescrie sub forma
 şi se poate rezolva, de exemplu, prin metoda Jacobi pentru matrice
b = f 0 (x1 ) diagonal dominante pe linii.
 1


3
bj−1 + 4bj + bj+1 = (f (xj+1 ) − f (xj−1 )), j = 2, n (49)
 h
bn+1 = f 0 (xn+1 )

Curs #10 December 5, 2019 21 / 22 Curs #10 December 5, 2019 22 / 22

S-ar putea să vă placă și