Documente Academic
Documente Profesional
Documente Cultură
Curs 7 PDF
Curs 7 PDF
Interpolarea funciilor
Dup cum s-a vzut, funcia de regresie permite estimarea valorii variabilei dependente
n orice punct din domeniul de variaie al variabilei independente operaie ce se numete
generic interpolare aa cum ea poate fi folosit i la calculul de valori dinafara acestui
domeniu ceea ce se numete extrapolare.
Rmnnd n cadrul funciilor de o singur variabil real, interpolarea pornete de la
aceleai date (tabelate) de intrare, (xi, yi), i=1,2,...n, ca i metoda celor mai mici ptrate i are
acelai scop: determinarea unei funcii analitice care aproximeaz dependena exprimat prin
tabelul de intrare. Deosebirea fa de regresie este c, de aceast dat, funcia de interpolare
este constrns s treac prin punctele (xi, yi) i nu printre ele, aa cum rezulta n cazul
regresiei. Aceste puncte se numesc noduri (de interpolare).
n general se folosete interpolarea cu funcii polinomiale. Acest paragraf este dedicat
implementrii n Matlab a celor mai uzuale metode de interpolare unidimensional, prin
funcii utilizator sau folosind funciile disponibile n biblioteca mediului.
1.1
Dndu-se n noduri de interpolare, (xi, yi), i=1,2,...n, atunci valoarea variabilei y ntr-un
punct intermediar x este dat de polinomul de interpolare al lui Newton, de gradul n-1, notat
cu N(x):
(1)
y = y1 + ( x x1 ) y1 + ( x x1 )( x x2 ) 2 y1 + ... + ( x x1 ) ... ( x xn 1 ) n 1 y1 ,
unde:
y y
y y1
n 2 y2 n 2 y1
y1 = 2 1 , 2 y1 = 2
, n 1 y1 =
x2 x1
x3 x1
xn x1
sunt diferenele finite succesive calculate pentru variabila y, a cror formul recursiv
general este:
(2)
j 1 yi +1 j 1 yi
yi =
, j = 1, n 1, i = j , n 1 ,
xi + j xi
j
unde s-a notat 0 yi yi . Relaia (2) conduce la ideea de a calcula aceste diferene ca
elementele triunghiului inferior al unei matrice de n-1 linii i n-1 coloane, dup cum urmeaz:
y1
y2
y3
D = .
yn 1
2 y1
2 y2
.
3 y1
...
j yi ... j y1
...
2 yn 2 ...
...
...
j yn j
...
... n 1 y1
Dkl = j yi , l = 1, n 1, k = l , n 1
(4)
j yi = Dkl
j 1
y
=
D
i +1
k ,l 1 , l = 2, n 1, k = l , n 1
j 1
yi = Dk 1,l 1
Corespondenele din relaia (4) se nlocuiesc n relaia (2) i rezult astfel relaia de
calcul al elementelor triunghiului inferior al matricei D, innd cont c elementele primei
coloane (l=1) se calculeaz separat:
(5)
yk +1 yk
, k = 1, n 1
Dk1 = x
k +1 xk
,
D = Dk ,l 1 Dk 1,l 1 , l = 2, n 1, k = l , n 1
kl
xk +1 xk l +1
y1
2 y1
n 1 y1
+ ( x x1 )( x x2 )
+ ... + ( x x1 ) ... ( x xn 1 )
1!h
2!h 2
(n 1)!h n 1
Pentru n=1 se obine interpolarea liniar, pentru n=2 interpolarea ptratic, iar pentru
n=3 interpolarea cubic.
Mai jos se prezint programul script int_newt care calculeaz polinomul de interpolare
al lui Newton i exemplific trasarea graficului acestuia prin nodurile de interpolare.
2
1.2
n cazul general, un polinom de gradul n-1, constrns s ia pentru x=xi valorile yi,
i=1,2,...n, este dat de formula de interpolare a lui Lagrange:
(6)
L( x) = yi
i =1
( x x1 ) ( x x2 ) ... ( x xi 1 ) ( x xi +1 ) ... ( x xn )
( xi x1 ) ( xi x2 ) ... ( xi xi 1 ) ( xi xi +1 ) ... ( xi xn )
Observaie:
Formula (6) i formula (1), de interpolare a lui Newton, conduc la acelai polinom de
interpolare; acesta poate fi referit ca polinom Newton sau ca polinom Lagrange, dup
cum este obinut cu una sau cu cealalt din formule.
Dac se noteaz:
(7)
si ( x) = ( x x1 ) ( x x2 ) ... ( x xi 1 ) ( x xi +1 ) ... ( x xn ) , i = 1, n ,
n
n
s ( x)
yi
L( x) = yi i
=
si ( x)
si ( xi ) i =1 si ( xi )
i =1
pi ( x )
%
i ordonarea corespunztoare a valorilor lui y
[xsort,ind]=sort(x);
l=1;
for i=1:n,
ysort(l)=y(ind(i));
l=l+1;
end;
x=xsort;
y=ysort;
%calculul coeficienilor polinomului de interpolare
L=zeros(1,n);
for i=1:n,
cs=poly([x(1:i-1) x(i+1:n)]);
cp=cs*y(i)/polyval(cs,x(i));
L=L+cp;
end;
pas=(max(x)-min(x))/250;
xx=min(x):pas:max(x);
for i=1:length(xx),
yy(i)=polyval(L,xx(i));
end;
val=input('Introduceti valoarea in care doriti interpolarea:');
yval=polyval(L,val);
%grafic
plot(xx,yy,'r-',x,y,'g*',xv,yv,'m--');grid;
s1=sprintf('INTERPOLARE PRIN POLINOM LAGRANGE');
title(s1);
xlabel('x');
ylabel('y');
S-a utilizat acelai exemplu de iniializare ca i n programul int_newt, de calcul al
1.3
6
4
2
interpolare liniar
0
-2
interpolare cubic
-4
-6
-8
-2
Fig. 1
10
12