Sunteți pe pagina 1din 8

36 Tehnici de interpolare şi aproximare a datelor - 4

4. Tehnici de interpolare şi aproximare a datelor

4.1. Scopul şi obiectivele lucrării

Analiza teoretica a tehnicilor de interpolare şi aproximare a datelor. Studiul şi


implementarea funcţiilor MATLAB dedicate interpolării şi aproximării datelor. Tehnici de
aproximare a datelor utilizând regresia liniară şi polinomială. Studiul interfeţelor grafice
interactive dedicate interpolării şi aproximării datelor.

4.2. Partea teoretică

4.2.1. Generalităţi

MATLAB-ul deţine o bibliotecă de funcţii şi unelte (tools) dedicate analizei datelor,


incluzând şi reprezentările grafice interactive (GUI), metode de statistică descriptivă, coeficienţi
şi metode de corelare, interpolare sau filtrare a datelor şi analiza Fourier.
Unele funcţii acceptă ca mărimi de intrare doar vectori, iar altele acceptă doar matrice
sau tablouri matriceale.
Dacă fişierul de date conţine mai multe coloane, analiza acestor date şi calculul statistic
sunt realizate separat (independent) pentru fiecare coloană. Asta înseamnă că, dacă dorim să
calculăm, de exemplu, maximul unei matrice, rezultatul va fi un vector linie care conţine maximul
valorilor datelor de pe fiecare coloană.

4.2.2. Interpolarea şi aproximarea datelor cu ajutorul MATLABului

Interpolarea unui set discret de date [xi, yi] presupune determinarea unei funcţii f(x)
astfel încât f(xi)=yi.
Să presupunem că dorim să estimăm valoarea y(x) pentru 2 puncte de coordonate (x 1,
y1) şi (x2, y2), unde x1 < x < x2. Dacă punctele sunt unite printr-o dreaptă, interpolarea se numeşte
liniară, iar dacă sunt unite printr-un polinom de gradul 3, interpolarea se numeşte spline cubică.
O altă problemă, frecvent întâlnită în inginerie electrică, constă în aproximarea unui set
de date cu o funcţie care reprezintă „cea mai bună aproximare”. În acest caz, funcţia determinată
nu va trece prin toate punctele şi va încerca să elimine posibilele erori de măsurare. De exemplu,
metoda celor mai mici pătrate furnizează cea mai bună aproximare, în sensul minimizării
pătratului distanţelor dintre punctele date şi funcţia de aproximare.
În tabelul următor se prezintă câteva din funcţiile MATLAB pentru interpolarea şi
aproximarea datelor.
Tabelul 4.1. Funcţii pentru interpolarea şi aproximarea datelor.

Funcţia Descrierea funcţiei


table1 Interpolează liniar şi citeşte date din tabele unidimensionale
table2 Interpolează liniar şi citeşte date din tabele bidimensionale
interpft Interpolează datele din tabele unidimensionale prin metoda transformatei
4.2 – Partea teoretică 37

Fourier
spline Interpolează datele din tabele unidimensionale prin metoda Spline
polyfit Aproximează un set de date cu un polinom de gradul n
interp1 Interpolează liniar, spline sau cubic date din tabele unidimensionale
interp2 Interpolează biliniar sau bicubic date din tabele bidimensionale

Căutarea datelor în tabele este operaţia prin care o anumită valoare este citită dintr-un
tabel predefinit. Aceste operaţii sunt utile în special în proiectare, când trebuie căutate elemente
normalizate de diferite dimensiuni sau parametrii; ca de exemplu, alegerea secţiunii unui
conductor sau alegerea unui tranzistor.
Căutarea datelor în tabele unidimensionale se apelează cu sintaxa:
table1(tabel, t)
în care tabel este numele tabelului din care se citesc datele şi care este o matrice ce are pe prima
coloană valorile lui t (abscisa ordonată crescător), iar pe coloanele 2:n+1 sunt cele n variabile
căutate.
Căutarea datelor în tabele bidimensionale se face cu funcţia table2, şi se apelează cu
sintaxa:
y = table2(tab, x, y)
Tabelul bidimensional „tab” din care se citesc datele trebuie să fie organizat ca o matrice
care are pe prima coloană valorile lui x, ordonate crescător, iar în prima linie valorile lui y, de
asemenea, ordonate crescător. Celelalte elemente din tabel sunt valorile z asociate perechilor (x,
y). Elementul z(1, 1) = 0.

4.2.2.1. Interpolarea funcţiilor de o singură variabilă

Obiectivul interpolării îl constituie estimarea valorilor unei funcţii f(x) pentru orice
punct x=[x1, x2] al unui set de date. Curba de interpolare trece prin toate punctele care o definesc.
Legea de interpolare poate fi liniară, cubică sau polinomială [1, 2].
Interpolarea spline cubică reprezintă o curbă netedă dintre fiecare pereche de puncte,
definită de un set de polinoame de gradul trei. De exemplu, şase puncte sunt conectate între ele
prin cinci curbe diferite de gradul trei. Se apelează cu sintaxa:
yi = spline(x, y, xi)
Unde x şi y sunt vectorii care conţin abscisele şi ordonatele setului de date (cu pas de
eşantionare mare), xi este un vector care conţine noile abscise, de regulă cu un pas mai fin, iar yi
este vectorul returnat asociat vectorului xi. Toate legile de interpolare necesită ca elementele lui
x să fie ordonate crescător. În plus, metoda de interpolare cubică cere ca punctele de pe axa x să
fie situate la distanţe egale.
Pentru a sublinia diferenţa dintre cele două tipuri de interpolări (liniară şi spline), se
prezintă câteva exemple în secţiunea următoare, finalizate prin reprezentări grafice.
Interpolarea funcţiilor de două variabile (suprafeţe) include interpolarea după o lege bi-
armonică, interpolarea după o lege bi-liniară, bi-cubică sau interpolarea multiplă.
De exemplu, funcţia interp2 interpolează datele funcţiilor de două variabile după o lege
bi-liniară sau bi-cubică.

4.2.2.2. Aproximarea datelor prin metoda celor mai mici pătrate

Pentru ca aproximarea să fie considerată „cea mai bună” suma pătratelor distanţelor de
38 Tehnici de interpolare şi aproximare a datelor - 4
la fiecare punct la curba (dreapta) aproximată (linie sau polinom) trebuie să fie minimă. Este
posibil ca nici un punct să nu se găsească pe curba aproximată. Acest lucru separă foarte clar
aproximarea de interpolare.
Aproximarea datelor printr-o linie dreaptă se numeşte regresie liniară, iar aproximarea
unor date printr-un polinom se numeşte regresie polinomială.
A. Regresia liniară
Regresia liniară minimizează suma pătratelor dintre dreapta de aproximare şi punctele
date. Măsura calităţii unei aproximări liniare este dată de suma pătratelor, după cum reiese şi din
ecuaţia (4.1):
sum _ p  sum( y  y1 ). ^ 2 …………………………………...(4.1)
Determinarea parametrilor m şi n ai dreptei (polinomului) de aproximare y=mx+n se
face utilizând funcţia polyfit.
B. Regresia polinomială
Regresia polinomială este o aproximare a unui set de date printr-un polinom de forma:

p( x)   ai  x N i  a0  x N  a1 x N 1  ...  a N 1  x  a N ...(4.2)

Dacă setul de date are N elemente, toate datele se află pe curba de aproximare.
Determinarea celei mai bune aproximări a unui set de date (x, y) cu un polinom de
ordinul n, se poate face cu funcţia polyfit, şi poate fi apelată cu sintaxa:
p = polyfit(x, y, n)
Funcţia polyfit returnează coeficienţii ai ai polinomului p(x), care în punctele precizate
de vectorul x, are în sensul celor mai mici pătrate, valorile date de vectorul y.

4.2.2.3. Biblioteca grafică de interpolare şi aproximare a datelor Curve Fitting

Biblioteca grafică de interpolare şi aproximare a datelor, denumită Curve Fitting


Toolbox, furnizează o interfaţă grafică interactivă şi o familie de funcţii MATLAB pentru o
varietate de aplicaţii.
Această bibliotecă conţine tooluri integrate pentru achiziţia şi procesarea datelor, pentru
dezvoltarea, construirea şi compararea modelelor standard, cât şi metode robuste de analiză şi
aproximare.
Principalele caracteristici ale bibliotecii grafice Curve Fitting sunt:
 importă diferite formate standard de date;
 furnizează numeroase modele de analiză şi aproximare a datelor, atât cu parametrii
liniari cât şi neliniari, cu optimizarea şi calcularea parametrilor pentru modelele
neliniare;
 furnizează diferite metode de interpolare şi aproximare a datelor (Spline Toolbox);
 interpolează, extrapolează, derivează şi integrează;
 creează o diversitate de modele şi compară grafic rezultatele utilizând metode de
probabilitate şi statistică (Statistics Toolbox);
 poate fi extinsă cu funcţii proprii.
Pentru a detalia cele spuse mai sus se prezintă exemplul următor:
Utilizarea bibliotecii grafice necesită în primul rând încărcarea unui fişier de date.
MATLABul conţine un fişier de date numit census, care reprezintă populaţia Americii între anii
1790-1990.
Pentru a încărca acest fişier în workspace se tastează următoarea comandă:
4.2 – Partea teoretică 39

load census
Acest set de date va genera fişierele cdate şi pop.
Următorul pas constă în accesarea bibliotecii grafice Basic Fitting din meniul Tools al
figurii generate de funcţia plot(cdate, pop), după cum rezultă din figura 4.3.

a)

b)
Fig. 4.3. a) Reprezentarea grafică a fişierului de date census şi
b) interfaţa grafică Basic Fitting.

Interfaţa grafică interactivă Basic Fitting – 1 (Fig. 4.3 b) a fost obţinută setând opţiunea
Show equations şi alegând afişarea rezultatului numeric de tip quadratic.
Dacă se doreşte interpolarea datelor utilizând metoda Spline cubică şi aproximarea lor
cu un polinom de ordinul trei, se setează opţiunea cubic, iar dacă se doreşte să se evalueze fişierul
de date cdata şi apoi să se reprezinte grafic şi reziduul, după ce se alege opţiunea plot residuals,
se apăsa butonul cu săgeata spre dreapta (înainte), şi se tastează în căsuţa din partea dreaptă
numele fişierului. Se obţin graficele din figura 4.4.
40 Tehnici de interpolare şi aproximare a datelor - 4

a)

b)
Fig. 4.4. Interfaţa grafică Basic Fitting, (a), pentru interpolarea datelor cu metoda Spline cubică şi,
(b), formele de undă cu fişierul de date şi cu eroarea reziduală dintre cele două grafice.

După cum am menţionat în introducere, interfaţa grafică interactivă poate furniza şi


informaţii de statistică pentru datele analizate. Acest lucru se poate realiza alegând opţiunea Data
Statistics din meniul Tools (Fig. 4.5).
4.3 – Desfăşurarea lucrării – Partea practică de implementare 41

Fig. 4.5. Interfaţa grafică Data Statistics.

Figura 4.5 arată faptul că, interfaţa grafică Data Statistics oferă posibilitatea obţinerii
unor informaţii statistice despre valoarea minimă, maximă, medie sau despre abaterea standard a
fişierului de date analizat.

4.3. Desfăşurarea lucrării – Partea practică de implementare

Pentru studiul aproximării şi interpolării datelor în MATLAB, şi implicit a rezolvării


exemplelor de mai jos, se vor utiliza funcţiile şi tehnicile descrise în partea teoretică a acestei
lucrări.

Exemplul 4.1: Să se scrie un fişier script care să reprezinte grafic o interpolare liniară şi
una spline cubică prin 6 puncte.

Soluţie: Fişierul script poate să conţină secvenţa:


x=[0, 1, 2, 3, 4, 5]; y=[0, 20, 55, 60, 90, 100];
xi=0:0.1:5; yi=spline(x ,y, xi);
plot(x, y, xi, yi, x, y,’o’)
title(’Comparaţie între interpolare liniarǎ şi spline’);
xlabel(’Timpul (s)’), ylabel(’Temperatura (grade)’);grid

Se obţine graficul din figura 4.6:


42 Tehnici de interpolare şi aproximare a datelor - 4

Fig. 4.6. Interpolarea lineară a datelor versus interpolarea spline.

Exemplu 4.2: Să se aproximeze acelaşi set de date utilizat în exemplul anterior, folosind
metoda celor mai mici pătrate.

Soluţie:Se scrie un fişier MATLAB cu secvenţa următoare, obţinându-se graficul din


figura 4.7:
x = [0, 1, 2, 3, 4, 5]; y = [0, 20, 55, 60, 90, 100];
coef = polyfit(x, y, 1); %determinarea parametrilor
m = coef(1); n = coef(2); %parametrii dreptei de aproximare
y1 = m * x + n;
sum_p = sum((y-y1).^2;%minimizarea sumei pătratelor distantelor
plot(x, y1, x, y, ’*’)

Fig. 4.7. Aproximarea datelor prin regresie liniară.


4.3 – Desfăşurarea lucrării – Partea practică de implementare 43

Exemplul 4.3 [2]: Fie polinomul p(x) = x3-6x2+11x-6, peste care este suprapus un
zgomot cu distribuţie normală. Aproximaţi datele rezultate cu un polinom de gradul 3, utilizând
metoda celor mai mici pătrate. Reprezentaţi grafic datele cu zgomot şi polinomul aproximat.

Soluţie: Cu secvenţa următoare se obţine graficul din figura 4.8


p = [1, -6, 11, -6]; x = 0 : .25 : 4;
y = polyval(p, x)+randn(size(x)); %generarea polinomului p(x) peste care s-a suprapus un zgomot cu
%distribuţie normală
c = polyfit(x, y, 3); % generarea unui polinom de ordinul 3
poli3 = polyval(c, x); % evaluarea polin. c pt. valorile precizate de x
plot(x, poli3, x, y,’*’); grid

Fig. 4.8. Aproximarea datelor cu un polinom de gradul trei utilizând metoda celor mai mici pătrate.

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