Professional Documents
Culture Documents
INTERPOLAREA
1. SCOPUL LUCRRII
Prezentarea unor algoritmi de interpolare, implementarea acestora n limbaje de nivel nalt (n particular, C) i folosirea lor n rezolvarea unor probleme din electronic.
2. PREZENTARE TEORETIC
Interpolarea este una dintre metodele de aproximare a funciilor. Considerm dat o funcie sub form de tabel. Cunoscnd valorile funciei n anumite puncte pentru care funcia este definit, se pune problema aflrii valorilor funciei n alte puncte ale domeniului de definiie.
2.1.
INTERPOLAREA POLINOMIAL
Tabelul 7.1. x y
x0 y0
x1 y1
. .
xk yk
. .
xn yn
Cunoatem valoarea funciei n n+1 puncte. Prin n+1 puncte se poate construi un polinom de gradul n, unic determinat. Pentru simplificarea calculului scriem polinomul sub forma urmtoare: (7.1) Pn ( x ) = x n + a n -1 x n -1 +...+ a1 x + a 0 Considerm urmtoarele polinoame:
P 0 ( x ) = ( x - x1 )( x - x 2 )...( x - x n ) P1 ( x ) = ( x - x 0 )( x - x 2 )...( x - x n ) ------------------P n ( x ) = ( x - x 0 )( x - x1 )...( x - x n -1 )
(7.2)
(7.3)
Lucrarea 7
b0 = Pn ( x 0 ) P (x ) P (x ) P (x ) , b1 = n 1 ,..., bk = n k ,..., bn = n n P 0 ( x0 ) P1 ( x1 ) P k ( xk ) Pn (xn )
105 (7.4)
Ca urmare,
j =0, j i n
(x - x )
n j i j
j =0, j i
(x - x )
n
= yi
i =0
j =0, j i
x -x
i
x - xj
j
(7.5)
Polinomul de gradul n care trece prin n+1 puncte date, numit i polinomul de interpolare al lui Lagrange, are forma:
Pn ( x ) = y i
i =0
j =0 , j i
x- xj
xi - x j
(7.6)
Expresia polinomului lui Lagrange este funcie de coordonatele punctelor cunoscute i de variabila x . Cu ajutorul formulei determinate a polinomului, care aproximeaz o funcie, se poate calcula valoarea funciei n orice punct necunoscut cuprins ntre x0 i x n , presupunnd c punctele xi sunt aranjate n ordine cresctoare. Fiind un algoritm ce face parte din clasa metodelor cu pas variabil ntre abscise, precizia de calcul este la fel de bun pe ntreg intervalul acoperit prin perechi (xi, yi), indiferent unde se alege abscisa intermediar n care se calculeaz ordonata necunoscut. Cu alte cuvinte, aceast metod nu prezint zone de precizie prefereniale, aa cum se ntmpl n cazul metodelor cu pas constant ntre abscise.
prod = prod *
x - x[ j ] ; x[i ] - x[ j ]
106
2.2.
Face parte din clasa metodelor cu pas constant ntre abscise. Aceasta se traduce prin a avea o anumit zon preferat, n care precizia este cea mai bun pentru un interval acoperit prin punctele x0, .. ,xn. Acest polinom de interpolare se exprim funcie de diferenele finite. Fie f :[ a, b] R i reeaua x 0 , x1 , x 2 ,..., x n cu pasul constant h. Definiia 7.1. Se numete diferen finit de ordinul nti expresia:
Df ( x ) = f ( x + h) - f ( x )
(7.7)
unde h este pasul constant. Diferena finit de ordinul n se poate defini recursiv, folosindu-se de diferena finit de ordin n-1, i are expresia de definiie: Dn f ( x ) = D Dn -1 f ( x ) (7.8)
D (c1 f 1 + c 2 f 2 ) = c1 Df 1 + c 2 Df 2
k k ( - 1) Cn f ( x + ( n - k ) h) n
(7.9) (7.10)
Diferenele finite mai pot fi obinute i cu ajutorul tabelului 7.2. Tabelul 7.2
xi x0 x1 x2 x3 x4 x5 x6 yi y0 y1 y2 y3 y4 y5 y6 Dyi Dy0 Dy1 Dy 2 Dy3 Dy 4 Dy5
D2 y 0 D2 y1 D2 y 2 D2 y3 D2 y 4 D3 y 0 D3 y1 D3 y 2 D3 y3 D4 y 0 D4 y1 D4 y 2 D5 y 0 D5 y1 D6 y 0 D2 yi D3 yi D4 yi D5 yi D6 y i
(7.11)
107
(7.12)
(7.13)
Fie funcia tabelat dat n Tabelul 6.1, unde reeaua x0 , x1, x2 , x3 ,..., xn este cu pasul constant h. Prin cele n+1 puncte trece un polinom de gradul n pe care l cutm de forma: (7.14) Pn ( x ) = C0 + C1( x - x0 )[1] + C2 ( x - x0 )[2 ] +...+ Cn ( x - x0 )[n ] unde ( x - x0 )[i ] = ( x - x0 )( x - x1 )...( x - x i -1 ) , i =1, 2, ...n iar coeficienii C0 , C1,..., Cn sunt necunoscute pe care le vom calcula. Se observ c: Pn ( x0 ) = y0 = C0 (7.15) Calculm diferena finit de ordinul nti: (7.16) DPn ( x ) = C1h + 2C2 h( x - x 0 )[1] +...+ nCn h( x - x0 )[ n -1] Fcnd substituia x = x0 rezult DPn ( x0 ) = C11!h Se poate calcula:
k D( ) Pn ( x 0 )
C1 =
DPn ( x 0 ) 1! h
..(7.17)
D k Pn ( x 0 ) = Dk y 0 , k=0, 1, 2, ... n.
(7.18)
innd cont de formulele de calcul ale coeficienilor, polinomul lui Newton de interpolare de spea nti poate fi scris astfel:
Pn ( x 0 ) = y 0 + Dy 0 D2 y Dn y ( x - x 0 ) [1] + 20 ( x - x 0 ) [ 2] + + n0 ( x - x 0 ) [ n ] 1! h 2!h n !h
(7.19)
n calculul coeficienilor s-au utilizat diferenele finite la dreapta perechii (x0, y0) (tabelul 7.2). Tot cu ajutorul acestui polinom (7.19) se poate face i o extrapolare, adic tot o interpolare, dar vzut n afara intervalului acoperit prin abscisele cunoscute, x0,,xn. Trebuie fcut o observaie legat de precizia de calcul: pentru polinomul Newton de spea nti, precizia cea mai bun se obine pentru abscise intermediare alese n apropierea perechii (x0, y0). Din acest motiv, extrapolarea amintit trebuie fcut plecnd de la principiul c cu ct distana punctului necunoscut dorit - fa de abscisa x0 - este mai mare, cu att precizia de calcul scade. Se respect, deci, un alt principiu general n problemele de interpolare, i anume numrul perechilor (xi, yi): cu ct acesta este mai mare, cu att puterea polinomului de interpolare crete.
108
( )= y
(7.21)
Acest polinom este numit polinomul lui Newton de interpolare de spea a doua deoarece s-au utilizat diferenele finite la stnga perechii (xn, yn). Dac punctul de aproximare a funciei se gsete n apropierea lui xn , se recomand utilizarea metodei se spea a doua deoarece d erori mai mici.
Lucrarea 7
109
Trebuie fcut i aici o observaie legat de precizia de calcul: pentru polinomul Newton de spea a doua, precizia cea mai bun se obine pentru abscise intermediare alese n apropierea ultimei perechi, (xn, yn). Din acest motiv, o eventual extrapolare trebuie fcut, cu aceeai atenie, ca i n cazul polinomului Newton de spea nti, anume trebuie mai nainte s mrim suficiente de mult numrul de perechi, pentru a reui o extrapolare cu erori minime. 2.3.1. Algoritmul 7.3. Newton 2
real Newton_2 ( ntreg n, // gradul polinomului de interpolare real xn , // abscisa maxim a punctelor cunoscute real h, // pasul constant ntre abscisele cunoscute real y[ ], // vectorul ordonatelor punctelor cunoscute real xp // abscisa punctului de interpolare ) { // declararea i definirea variabilelor locale real sum ; // variabila ce reine sumele pariale real prod ; // variabila ce reine produsele ntreg i, j ; // contoare // corpul de instruciuni al funciei sum = yn ; // valoarea interpolat pornete de la yn //(vedei relaia (6.21)) prod = 1; pentru i= 1.. n { // calculul diferenelor finite pentru j= n.. i y[j] = y[j] - y[j-1] ; 1 1 prod = prod * x p - ( x n - ( i - 1) * h) * * ; h i sum = sum + yn*prod ; } returneaz sum; // valoarea polinomului de interpolare //n punctul cerut. }
DE
INTERPOLARE
CU
Fie funcia f ( x ) dat sub forma celei prezentate n tabelul (7.1) unde reeaua x0 , x1, x2 ,..., xn din domeniul de definiie al funciei nu are pas constant. Fiind o metod cu pas variabil ntre abscise, precizia sa nu este preferenial. Definiia 7.3. Se numete diferen divizat de ordinul k+i a funciei f expresia :
110
(7.22)
cunoscnd n+1 puncte ( xi , yi ) , i=0, ...,n , care verific polinomul. Se observ c Pn ( x0 ) = y0 = C0 . Se calculeaz diferena divizat de ordinul nti pentru polinomul Pn ( x ) i se face x = x1 . Rezult: Pn ( x0 , x1 ) = C1 . Calculnd n continuare, se determin diferena divizat de ordinul k i lund pe x = xk se obine valoarea coeficientului Ck : Ck = Pn ( x0 , x1, x2 ,..., xk ) , k=0, 1, ...,n. (7.24) Polinomul se scrie acum sub forma:
Pn ( x ) = y0 + Pn ( x0 , x1 )( x - x0 ) + Pn ( x0 , x1, x2 )( x - x0 )( x - x1 )+... + Pn ( x0 ,..., x n )( x - x0 )( x - x1 )...( x - x n -1 )
(7.25)
unde fiecare diferen divizat se calculeaz cu ajutorul formulei (7.22). Polinomul obinut (7.25) poart numele de polinomul lui Newton de interpolare cu diferene divizate. 2.4.1. Algoritmul 7.4. Newton 3
real Newton_3 ( ntreg n, real x[ ], real y[ ], // numrul de puncte date ale funciei // vectorul absciselor punctelor date // vectorul ordonatelor punctelor date
real x , // punctul n care se interpoleaz funcia ) { // declararea i definirea variabilelor locale ntreg i, j ; // contoare real sum ; // variabil ce reine sumele pariale real prod ; // variabil ce reine produsele pariale // corpul de instruciuni al funciei sum = y[0] ; prod = 1 ; pentru i= 1.. n { // calculul diferenelor divizate y j +1 - y j pentru j= 0.. n-i yj = ; x j+i - x j prod = prod*( x - xi-1) ; sum = sum + y[0]*prod ; returneaz sum ;
} }
Lucrarea 7
111
--y0124
------y0123...n
---xn
---
---y0 n y 01n
--y012 n
yn
112
y0 j =
j=1, 2, 3, ..., n
Pentru pasul al doilea, urmnd exact acelai model, adic ecuaia unei drepte, avem:
y01 j = xj - x x j - x1 I01 + x - x1 I0 j x j - x1
j=2, 3, ..., n
(7.26)
(7.27)
Valoarea interpolat a funciei tabelate n punctul x este y012...n . 2.5.1. Algoritmul 7.5. Metoda lui Aitken
real Aitken ( ntreg n, real x[ ], real y[ ], real xp ) { // declararea ntreg i, j ;
// // // //
gradul polinomului de interpolare vectorul absciselor punctelor date ordonatele punctelor date punctul n care se interpoleaz funcia
// corpul de instruciuni al funciei pentru i= 1.. n pentru j= i.. n execut xp - x[i - 1] xp - x[ j ] + y[ j ] * ; y[ j ] = y[i - 1] * x[ j ] - x[i - 1] x[i - 1] - x[ j ] returneaz y[n] ; }
Lucrarea 7
113
Considerm x1 = a i xn = b , [a, b] fiind intervalul de definiie a funciei f , iar abscisele x1,x2,...,xn o diviziune D a intervalului de definiie. Valorile funciei sunt yi = f ( xi ) , i = 1,2,..., n (7.28) Definiia 7.4. Se numete funcie spline de ordinul n relativ la diviziunea D a intervalului [a, b] o funcie S: [a, b] R de clas Cm-1 [a, b] ale crei restricii Si(x) pe fiecare interval [xi , xi+1 ] al diviziunii sunt polinoame de ordinul m, adic:
i S i ( x ) = Pm ( x )
dac
x [xi , x i +1 ] , i =1,2,...,(n-1)
(7.29)
Funcia S(x) este neted pe poriuni deoarece are primele (m-1) derivate continue pe [a, b] , iar derivata de ordinul m este discontinu n xi , i =1,2,...,n. Gradul de netezire al funciei este m. Restriciile funciei sunt polinoamele: Si(x)=Aixm + Bixm-1 + Cixm-2 + Eixm-3 + ... +Ri (7.30) dac, x [xi , x i +1 ] , i =1,2,...,(n-1) Aceste funcii sunt derivabile pn la (m-1) i sunt continue mpreun cu derivatele. Derivata de ordinul (m-1) a lui Si(x) pe intervalul [xi , xi+1 ] este o funcie liniar i trece prin punctele ( xi , Di ) i ( xi +1, Di +1 ) unde, Rezult ecuaia liniar:
S i( m-1) ( x ) =
Di +1 ( x - x i ) + Di ( x i +1 - x ) hi
(7.31)
(7.32) (7.33)
Di+1(x - xi )m-1 + (-1)m-2 (xi+1 - x)m-1 Di C1i x m-3 C2i x m-4 + + +...+Cm-1,i (7.34) (n -1)!hi (m - 3)! (m - 4)!
Di+1 ( x - xi )m + (-1)m-1 ( x i+1 - x ) m-1 Di C1i x m-2 C2 i x m-3 + +..+ Cm-2,i x + Cm-1,i (7.35) + ( m - 2)! ( m - 3)! n!hi
Pentru ntreg intervalul [a, b] rezult un sistem liniar punnd condiia ca Si(xi)=yi , i=1,2,..,n i continuitatea celor (m-1) ecuaii n toate punctele xi . n extremele x1 i x2 se scrie polinomul lui Lagrange, l derivm pn la m-1 i aflm corespunztor valorile derivatelor n x1 i xn . Rezult necunoscutele: Di , Di+1 , C1i ,..., Cm-1,i
114
pentru fiecare interval. n acest caz sunt n+(m-1)+ (n-1) necunoscute i n+(m-1)+(n1) ecuaii. Sistemul fiind liniar se rezolv cu una din metodele din Lucrarea 3 - Metode pentru rezolvarea sistemelor de ecuaii. n lucrare se consider restriciile Si polinoame de gradul 3. Din acest motiv interpolarea este denumit spline cubic. n acest caz: Si(x)=Aix3 + Bix2 + Cix + Ei (7.36)
S i( x ) =
S ( x ) = Si (x) =
Di +1 ( x - x i ) + Di ( x i +1 - x ) hi
(7.37)
Bi =
Di x i +1 - Di +1 x i 2 hi
(7.38)
Di +1 x i2 - Di x i2+1 y i +1 - y i Di +1 - Di + hi 2 hi 6 hi x i3+1 Di - x i3 D i +1 y i x i +1 - y i +1 x i Di x i +1 - Di +1 x i + hi 6 hi 6 hi
(7.39)
Din continuitatea primei derivate n punctul xi , S i' -1 ( x i ) = Si' ( xi ) rezult: Considernd derivata de ordinul nti n punctul x1 i x n egal cu:
y - y i y i - y i-1 hi -1 Di -1 + 2( hi + hi -1 ) Di + hi Di +1 = 6 i +1 hi hi -1
y1 = y 2 - y1 y 3 - y 2 y 3 - y1 + x 2 - x1 x 3 - x 2 x 3 - x1 y n -1 - y n - 2 y n - y n -1 y n - y n -2 + + x n -1 - x n -2 x n - x n -1 x n - x n -2
yn = -
Lucrarea 7
y 2 - y1 - y1 2h1D1 + h1 D2 = 6 h1 y4 - y3 y3 - y 2 h1 D1 + 2 (h1 + h2 )D2 + h2 D3 = 6 h3 h3 ........................................................................................ yi+1 - y i yi - yi+1 hi-1Di-1 + 2 (hi-1 + hi )Di + hi Di+1 = 6 hi hi ......................................................................................... y n - yn-1 y n-1 - yn-2 hn-2 Dn-2 + 2 (hn-2 + hn-1 )Dn-1 + hn-1 Dn = 6 hn-1 hn-1 y n - y n-1 hn-1 Dn-1 + 2hn-1 Dn = 6 y n hi
115
(7.43)
unde y1 i yn sunt date de expresiile (7.41), respectiv (7.42) . Din sistemul (7.43) rezult valorile lui Di , i =1,2,...,n. Din (7.38) rezult coeficienii restriciilor pe fiecare interval, restricii care aproximeaz funcia dat. Dac se d x n care trebuie calculat funcia, se stabilete intervalul n care se gsete x i se calculeaz valoarea restriciei funciei pe acest interval n punctul x . 2.6.1. Algoritmul 7.6. Funcii spline
real Spline ( ntreg n, // gradul polinomului de interpolare real x[ ], // abscisele punctelor date real y[ ], // ordonatele punctelor date real xp, // punctul n care se interpoleaz funcia ) { // declararea i definirea variabilelor locale // vectorii elementelor diagonale ale sistemului tridiagonal real A[N-1], B[N], C[N-1] ; // vectorul termenilor liberi al sistemului tridiagonal; real TL[N]; // vectorul pailor punctelor pe abscis; real h[N]; // vectorul soluiilor sistemului tridiagonal; real D[N]; real derx1; // derivata n punctul x1, real; real derxn; // derivata n punctul xn, real; ntreg num; // variabila ce d numrul intervalului n //care se gaseste xp real valint; // variabil real ce reine valoarea //polinomului de gradul trei n punctul xp . ntreg i, j; // contoare i indeci de vectori. // corpul de instruciuni al funciei pentru i= 1.. n-1 h[i] = x[i + 1] - x[i] ;
116
derx1 =
Tridiagonal(A,B,C,TL,D) ; // aceast este funcia din L3. // calculeaz coeficienii polinomului de interpolare pentru i= 1.. n { D + Di Ai = i +1 ; 6 hi
Bi = Di x i +1 - Di +1 x i 2 hi
Ci = Ei =
x i3+1 Di - x i3 D i +1 y i x i +1 - y i +1 x i Di x i +1 - Di +1 x i + hi ; 6 hi 6 hi } // Se caut intervalul care conine punctul de interpolare i =1 ; execut { i = i + 1 ;!!!aici e ceva in neregula!!! } ct timp ( xp>=x[i]) ; val int = Ai . xp 3 + Bi . xp 2 + Ci . xp + E i ; returneaz valint ; }
117
Se consider funcia periodic f :[a, b] R cu proprietatea c f ( a ) = f ( b) unde T = b - a este perioada funciei. Experimental s-au obinut n valori ale funciei pe perioada [a, b] prezentate n tabelul 7.5 i se cere o valoare a funciei f ntr-un punct x p [a, b] , dar x p xi ,
i = 1,2,..., n .
Tabelul 7.5
x y
x1 = a y1 x2 y2 x3 y3
-------
x 2n = b y3n
returneaz }
118
f ( xi , y j ) x
i=0 j=0 k =0 k i
x - xk i - xk
y
k =0 k j
y - yk j - yk
(7.47)
2.8.1.
real Lagrange_2 ( ntreg n, // numrul de puncte pe Ox ntreg m, // numrul de puncte pe Oy real x[ ], // vectorul coordonatelor punctelor pe Ox real y[ ], // coordonatele punctelor pe Oy real z[ ][N], // matricea valorilor funciei real pcx, // coordonata pe Ox a punctului //interpolare, real real pcy // coordonata pe Oy a punctului //interpolare, real ) { // declararea i definirea variabilelor locale ntreg i, j, k ; // contoare real prodx, prody ; // produse pariale real sum ; // suma parial // corpul de instruciuni sum = 0 ; pentru i= 0 .. n pentru j= 0 .. m { prodx = 1 ; prody = 1 ; pentru k= 0 to n dac ( k i) prodx = pentru k= 0 to m dac ( k j) prody = sum = z[i][j]*prodx*prody } returneaz sum; } al funciei
de de
Lucrarea 7
119
3. DESFURAREA LUCRRII
3.1. NTREBRI
1. Avnd 7 valori (xi, yi), i=0..6, ce aparin unei funcii de tip exponenial, precizai care din metodele: a) Lagrange si Newton1 b) Newton1 si Newton2 c) Newton1 si Newton3 vor determina valoarea funciei in punctul ics din intervalul [x0, x6] cu o precizie mai bun? Explicai. 2. S se gseasc polinoamele de interpolare Newton 1 i Newton 3 pentru urmtoarele valori:
X y 0.1 0.11 0.15 0.1725 0.2 0.24 0.25 0.3125 0.3 0.39
3.2.
PROBLEME LABORATOR
1. S se implementeze algoritmii 7.1-7.8 n limbajul ANSI C. 2. Se consider datele experimentale obinute pentru caracteristica rezistenei termice jonciune termic R jt [ o C / W ] funcie de lungimea terminalului l [ inch ], pentru o diod Zener prezentate n tabelul urmtor:
Tabelul 6.6 l [inch] Rjt [oC/w]
0 70
0.1 140
0.2 175
0.3 200
0.4 225
0.5 250
0.6 265
0.7 280
0.8 290
0.9 300
Se cere s se determine puncte ntre valorile date pentru o reprezentare grafic ct mai precis. 3. Se consider datele experimentale:
x y 0 0 3.14 0 4.71 -1 6.28 0
120
ndrumar de laborator pentru Metode Numerice S se calculeze y(1.57) cu ajutorul metodei de interpolare a funciilor periodice. 3.2. TEME DE CAS 1. ntr-unul din terminalele unei diode de mic putere se injecteaz succesiv o serie de cureni i, rezultnd respectiv valorile tensiunii v, conform tabelului:
v (V) i (A)
.2 10-9
.28 10-8
.36 10-7
.44 10-6
.52 10-5
.6 10-4
Se aplic dou dintre metodele de interpolare prezentate la laborator: cu pas constant ntre abscise; cu pas variabil ntre abscise.
Metode cu pas constant: Newton, variantele 1 i 2; Metode cu pas variabil: Lagrange, Newton-varianta 3 i Aitken. Indicaie: n situaia n care rezultatele metodelor de interpolare nu sunt concludente (poate chiar eronate, datorit ordinului de mrime), ncercai s logaritmai valorile curentului. 2. n figura de mai jos se prezint impedana termic tranzitorie jonciunecapsul ZthJ-C pentru o diod cu avalan controlat. Realizai minim 7 msurri ct mai precise de pe aceast caracteristic. Exemplu: ZthJ-C se msoar pentru:
t=10, 20, 50, 200, 500, 1000, 2000 ms
i apoi se verific valoarea obinut prin interpolare (s zicem pentru 1500ms) cu valoarea msurat corespunztor pe caracteristic.
Lucrarea 7
121
BIBLIOGRAFIE
1. 2. 3. 4. I. Rusu, Metode numerice n electronic. Aplicaii n limbaj C, Editura Tehnic, Bucureti, 1997 E.A. Volkov, Numerical Methods, Mir Publisher Moscow, 1986. George-Daniel Mateescu, Ileana-Carmen Mateescu, Analiz Numeric, manual pentru cls. XII, profil Informatic, Editura Petrion, Bucureti, 1995. B. Demidovici, I.A. Maron, Computational Mathematics, Mir Publisher Moscow, 1981.