Sunteți pe pagina 1din 7

LUCRAREA Nr.

INTERPOLAREA I EXTRAPOLAREA
FUNCIILOR DE O VARIABIL

1. Obiective
Prezentarea i dezvoltarea funciilor Matlab pentru interpolarea i
extrapolarea funciilor de o variabil, cu scopul nsuirii de ctre utilizatori.

2. Noiuni teoretice
2.1. Interpolarea funciilor de o variabil
Problema aproximrii unei funcii de o variabil trebuie rezolvat n
diverse situaii, urmtoarele dou fiind mai frecvente:
funcia este cunoscut, dar are o form complicat, dificil de aplicat
n calcule;
funcia nu este complet cunoscut, fiind date numai valorile ei pe o
mulime discret i finit de puncte.
n primul caz, aproximarea se poate face destul de exact, restriciile
fiind legate de condiia ca, funcia care aproximeaz s fie ct mai simpl.
n al doilea caz informaiile sunt reduse i se completeaz cu
presupuneri suplimentare, privind gradul de regularitate al funciei. Este
cazul prezentat n continuare.
Fiind dat o funcie f, cunoscut prin msurtori efectuate asupra ei, n
punctele x1,...,xn, numite noduri de interpolare, yi=f(xi), se cere s se
determine valoare aproximativ a acestei funcii n punctul axi, (
) i=1 n.
Altfel spus, exist un set de date care reprezint coordonatele (xi, yi) i se
pune problema s se estimeze valorile funciei f(x), pentru orice punct

x [ x1 , xn ] . Curba de interpolare trece prin toate punctele care o definesc,

legea de interpolare ntre puncte putnd fi liniar, cubic sau polinomial.


n Matlab sunt definite funcii care rezolv problema aproximrii
funciilor prin interpolare liniar sau interpolare polinomial sau cubic.

APLICAII MATLAB

2.1.1. Interpolare liniar


Dac se presupune c funcia dintre dou noduri de interpolare (x1, x2)
poate fi exprimat printr-o linie dreapt, atunci valoarea funciei n orice
punct x (dintre cele dou valori) se deduce cu expresia (Fig.1):
x x1
f ( x) = y1 +
( y2 y1 )
x2 x1
f(x)
y2
f(x)

y1
x
x1

x2

Fig. 1 Interpolare liniar


Pentru a realiza interpolarea liniar, n Matlab, se apeleaz funcia
interp1, care determin valoarea de interpolare, yi, n punctul xi pentru
vectorii de date X i Y:
yi = interp1(X , Y , xi ) sau yi = interp1(Y , xi )
unde:
X vector linie care conine abscisele punctelor iniiale (x1,...,xn), n
ordine strict cresctoare;
Y vector linie care conine ordonatele punctelor iniiale (y1,...,yn);
xi - vectorul care conine noile abscise ale punctelor n care se
calculeaz funcia de interpolare ( xi [ x1 , xn ] );
yi - vectorul calculat de funcia de interpolare, asociat lui xi.
Sintaxa yi = interp1(Y , xi ) presupune c x = 1 : n , unde n=length(Y)
este lungimea vectorului Y (dac Y este vector), sau n=size(Y,1), dac Y este
matrice.

INTERPOLAREA I EXTRAPOLAREA FUNCIILOR DE O VARIABIL

2.1.2. Interpolare polinomial sau cubic


Pentru apelarea funciei de interpolare, alta dect cea liniar, se
folosete sintaxa:

yi = interp1(X , Y , xi, metoda)


unde metoda poate fi una din variantele:
'nearest'
'linear'
'spline'
'pchip'
'cubic'
'v5cubic'

Interpolarea celui mai apropiat vecin


Interpolare liniar (implicit)
Interpolare cubic spline
Interpolare cubic Hermite pe poriuni
La fel ca 'pchip'
Interpolare cubic folosit in MATLAB 5

Observaii:
Pentru metodele 'nearest', 'linear' i 'v5cubic', funcia
yi = interp1(X , Y , xi, metoda) returneaz NaN (nu este numr) pentru orice
element xi care se afl n afara intervalului definit de valorile vectorului X.
Pentru toate celelalte metode, funcia interp1 efectueaz extrapolarea
pentru valori xi n afara intervalului de valori ale lui X.
Metodele 'nearest' i 'linear' au implementri simple.
Pentru metoda 'spline', funcia de interpolare interp1 utilizeaz o
funcie spline pentru a efectua interpolare spline cubic.
Pentru metodele 'pchip' i 'cubic', funcia interp1 solicit o funcie
care efectueaz pe poriuni interpolarea cubic n cadrul vectorilor X i Y.
Aceast metod pstreaz monotonia i forma datelor.

2.2. Extrapolarea funciilor de o variabil


Pentru extrapolarea funciilor de o variabil se folosete funcia
definit prin una din sintaxele:

yi = interp1(X , Y , xi, metoda, ' extrap ')


unde:
X vector linie care conine abscisele punctelor iniiale (x1,...,xn), n
ordine strict cresctoare;
Y vector linie care conine ordonatele punctelor iniiale (y1,...,yn);

APLICAII MATLAB

xi - vectorul care conine noile abscise ale punctelor n care se


calculeaz funcia de extrapolare n afara domeniului de valori ale
vectorului X ( xi [ x1 , xn ] );
yi - vectorul calculat de funcia de extrapolare, asociat lui xi.
Sintaxa yi = interp1(X , Y , xi, metoda, ' extrapval ') determin valorile
extrapolate aflate n afara intervalului vectorului X. Rspunsurile NaN (nu
este numr) i 0 (zero) sunt deseori utilizate pentru aceast sintax.

3. Probleme de rezolvat
3.1. Interpolare liniar i interpolare cubic
1. S se aproximeze prin interpolare liniar i apoi prin interpolare
cubic i s se reprezinte grafic vectorii de date m i n, cu valorile de mai
jos:
m = 010; n= [ 2 5 -7 3 1 4 -9 10 11 14 1] ;
2. S se aproximeze prin interpolare liniar i apoi prin interpolare
cubic i s se reprezinte grafic vectorii de date m i n, cu valorile de mai
jos:
m1 := 1; m2 := 1.7; m3 := 2.1; m4 := 2.5; m5 := 3;
.
n1 := 1.5; n2 := 1.3; n3 := 1.7; n4 := 1.4; n5 := 1.9.
3. S se aproximeze prin interpolare liniar i apoi prin interpolare
cubic i s se reprezinte grafic vectorii de date m i n, ale cror valorile
sunt coninute n coloana 1, respectiv coloana 2 din matricea A:

2
3

4
A :=
5

6
7

10

20
23

4
.
35

24
2

INTERPOLAREA I EXTRAPOLAREA FUNCIILOR DE O VARIABIL

4. S se aproximeze prin interpolare liniar i apoi prin interpolare


cubic i s se reprezinte grafic vectorii de date m i n, ale cror valori sunt
coninute n prima coloan, respectiv a doua coloan din fiierul exterior de
date cu numele datati.dat.
Pentru citirea datelor dintr-un fiier de date exterior (cu numele
datati.dat) se va utiliza instruciunea Matlab, load, cu sintaxa:
load datati.dat
B=datati
m=B(:,1)
n=B(:,2)

3.2. Extrapolarea funciilor de o variabil


S se aproximeze prin extrapolare i s se reprezinte grafic urmtoarele
30 de valori ale vectorului v care are expresia:
k

k
vk := e 100 sin , k := 1..50.
10

4. Probleme rezolvate
4.1. Se vor realiza cerinele impuse inndu-se cont de noiunile
teoretice prezentate n 2.1.

APLICAII MATLAB

O variant de program pentru cerinele de la punctul 3.1:


clear
x = 0:10;
y = [2 5 -7 3 1 4 -9 10 11 14 1];
xi = 0:.25:10;
yi = interp1(x,y,xi);
yi1 = interp1(x,y,xi,'spline');
plot(x,y,'o',xi,yi,'-r', xi,yi1,'--b');
hold on
yi1_s=spline(x,y,xi);
plot(x,y,'o',xi,yi1_s,'-k','LineWidth',1);
hold on
plot(x,y,'o',xi,yi1);hold on
yi2 = interp1(x,y,xi,'cubic');
plot(x,y,'o',xi,yi2,'--g',xi,yi3,'-.b');
hold on
plot(x,y,'o',xi,yi2,':g')
1.9
1.8
1.7

O variant posibil de rspuns poate


fi cea prezentat n figur.

1.6
1.5
1.4
1.3
1.2
1.1
1
0.9

1.2

1.4

1.6

1.8

2.2

2.4

2.6

2.8

4.2. Se vor realiza cerinele impuse inndu-se cont de noiunile


teoretice prezentate n 2.2.
1.5

O variant posibil de rspuns poate


fi cea prezentat n figur.

0.5

-0.5

-1

10

20

30

40

50

60

70

80

INTERPOLAREA I EXTRAPOLAREA FUNCIILOR DE O VARIABIL

5. Probleme propuse