Documente Academic
Documente Profesional
Documente Cultură
interp1 – interpolează liniar, spline sau subic datele din tabele unidimensionale
griddata – interpolează prin metoda distanței inverse valorile unei funcții de două variabile.
Interpolarea unui set de date [𝑥𝑖, 𝑦𝑖 ] presupune determinarea unei funcții f(x) astfel ca
f(𝑥𝑖 ) = 𝑦𝑖 , în vederea completării setui de date în orice alt punct 𝑥0 ≠ 𝑥𝑖 . Spre exemplu, fie
date punctele punctele coordinate (𝑥1, 𝑦1 ) și (𝑥2, 𝑦2 ). Se cere estimarea valorii y(x) unde 𝑥1 <
𝑥 < 𝑥2 . Dacă punctele sunt unite printr-o dreaptă, interpolarea se numește liniară, iar dacă sunt
unite printr-un polinom de gradul trei, interpolarea este spline cubică.
O altă problemă constă în aproximarea unui set de date cu o funcție care constituie “cea
mai bună aproximare”. În acest caz nu este neaparat necesar ca funcția determinată să treacă prin
toate punctele date, însă trebuie să fie “cea mai bună aproximare” într-un anumit sens (după un
anumit criteriu de eroare impus). Metoda celor mai mici pătrate furnizează de exemplu cea mai
bună aproximare în sensul minimizării pătratului distanțelor dintre punctele date și funcția de
aproximare.
Prin căutarea datelor în tabele se înțelege operația prin care o anumită valoare este citită
dintr-un tabel predefinit. Aceste operații sunt utile în proiectare, când trebuie căutate elemente
normalizate de dimensiuni sau parametrii ai unor dispositive.
Exemplu: Alegerea unei secțiuni de conductor, alegerea unui dispozitiv electronic cu anumiți
parametrii, dimensiuni mecanice ale unui profil etc.
Căutarea datelor în tabele unidimensionale
z = table1(tab, x).
Tabelul ”tab” din care se citesc datele trebuie să fie organizat ca o matrice care are în
prima coloană valorile lui x (abscisa ordonată crescător), iar la coloanele 2:n+1 cele n variabile
căutate. Dacă valoarea x se găsește ăntre două valori din prima coloană a tabelului ”tab”, funcția
returnează o valoare interpolate liniar.
Exemplu: Să se citească valorile y care corespund lui x1=-1 și x2=3 din următorul table
unidimensional:
Se creează matricea coloană M, care are pe pe prima coloană elementele lui x ordonate
crescător, iar a doua coloană elementele lui y în ordinea de asociere la x.
M = [-2 -1 0 2 4; 6 2 3 -1 7]
M= M’
Y1 = table1(M,-1)
Y2 = table1(M, 3)
cu rezultatele y1 = 2 și y2 = 3.
z = table2(tab, x, y)
Tabelul bidimensional ”tab” din care se citesc datele trebuie să fie organizat ca o matrice
care are în prima coloană valorile x (ordonate crescător), iar în prima linie valorile y (ordonate
crescător). Restul elementelor din table sunt valorile z associate perechilor (x, y). Elementul
z(1,1)=0.
Dacă valoarea x sau y se găsește între două valori din prima coloană sau linie a tabelului
”tab”, funcția returnează o valoare interpolate liniar.
Exemplu: Să se citească valorile care corespund perechilor (x,y): (2, 3), (2.5, 3), (2.5, 3.5) din
următorul tabel bidimensional.
Așadar, N va devine:
N = [0, 1, 2, 3, 4; 1, 2, 3, 4, 5; 2, 3, 4, 5, 6; 3, 4, 5,
6, 7]
C1 = table2(N, 2, 3)
C2 = table2(N, 2.5, 3)
C3 = table2(N, 2.5, 3.5)
cu rezultatele C1 = 5, C2 = 5.500, C3 = 6.
𝑥 − 𝑥1
𝑓(𝑥) = 𝑦1 + . (𝑦2 − 𝑦1 )
𝑥2 − 𝑥1
Curba spile cubică este o curbă netedă, definită de un set de polinoame de gradul 3.
Curba dintre fiecare pereche de puncte este un polinom de gradul 3, calcula a. i. Să conducă la
traziții netede de la un polinom de gradul trei la altul.
Curba de interpolare spline cubică este calculată cu funcția spline, apelată cu sintaxa:
xi = 0:0.1:5;
yi = spline(x, y, xi);
xlabel(‘Timp [s]’);
cu va obține graficul
3. Fiind date 10 perechi de puncte în planul xOy, să se traseze graficul rezultat prin
interpolarea spline pe o rețea de 4 ori mai fină.
x = 0:10;
y = sin(x);
xi = 0:.25:10;
yi = spline(x, y, xi);
y = interpft(x, n), care returnează un vector y de lungime n obținut din vectorul x. Numărul n
trebuie să fie mai mare decât numărul de elemente al vectorului x, iar rezultatul are periodicitate
circular data de utilizarea transformatei Fourier.
Exemplu:
x = sin (2*pi*k/8);
yi = interpft(x, 16);
k1 = 0:15;
yr = sin(2*pu*k1/16);
d = max(yi-yr)
Exemplu:
x -2 -1 0 1 2
y 6 2 3 1 7
Să se estimeze folosind funcția interp1 valoarea y care corespunde lui x1 = -1 și x2 = 1.5,
folosind interpolarea liniară, cubică, spline cubică.
X = [-2, -1, 0, 1, 2]
Y = [6, 2, 3, 1, 7]
Se obțin rezultatele:
Yil = [2 4]
Yic = [2 3]
1.5 Interpolarea funcțiilor de două variabile
1.5.1 Interpolarea după o lege biarmonică
Dacă x și y sunt vectori, punctele trebuie să fie egal distanțate și monotone. În acest caz,
se utilizează sintaxa:
Funcția interp4 interpolează datele funcție de două variabile după o lege biliniară:
Dacă x și y sunt vectori, punctele trebuie să fie egal distanțate și monotone. În acest caz,
se utilizează sintaxa:
Exemplu:
A = [2,6,6,5;3,4,8,6;4,6,9,5]
Ai = interp4(A,2)
A1 = interp4(A,1);
V = A1(4,6)
Funcția interp5 interpolează datele funcție de două variabile după o lege bicubică:
Dacă x și y sunt vectori, punctele trebuie să fie egal distanțate și monotone. În acest caz,
se utilizează sintaxa:
Exemplu:
A = [2,6,6,5;3,4,8,6;4,6,9,5]
Ai = interp5(A,2)
A1 = interp5(A,1);
V = A1(4,6)
Interopolarea datelor funcție de două variabile prin metoda distanței inverse se realizează
cu funcția griddata și se apelează cu sintaxa:
Dacă x este un vector linie, aceta se aplică fiecărei coloane a matricei z (este o matrice cu
coloane constante). Similar, dacă y este un vector coloană, acesta se aplică fiecărei linii a
matricei z (este o matrice cu linii constante).
Apelată cu sintaxa:
Exemplu:
[x, y] = meshgrid(x, y)
z = x.*(x.^2+y.^2);
xi = -1:.1:1; yi = -1:.1:1;
Funcția interp2 interpolează datele funcțiilor de două variabile după lege biliniară sau bicubică,
se apelează cu sintaxa:
zi = interp2(x,y,z,xi,yi, ‘regula’)
Exemplu:
Fie următorul tabel bidimensional:
Să se estimeze valorile zi care corespund perechii (x,y) = (3.5, 2.5) cu funcția interp2,
folosind interpolarea biliniară și bicubică.
Regresia polinomială este o aproximare a unui set de date printr-un polinom de forma:
𝑝(𝑥) = ∑𝑁
𝑖=0 𝑎𝑖 𝑥
𝑁−𝑖
= 𝑎0 𝑥 𝑁 + 𝑎1 𝑥 𝑁−1 + … + 𝑎𝑁−𝑖 𝑥 + 𝑎𝑁
Dacă setul de date are N elemente, toate datele se află pe curba de “aproximare”. Pentru
un grad al polinomului mai mic decât numărul de date, aproximarea este cu atât mai bună cu cât
gradul polinomului este mai apropiat de numărul de date. Utilizarea unui polinom de aproximare
cu grad mai mare decât setul de date poate conduce la erori de aproximare considerabile.
Determinarea celei mai bune aproximări a unui set de date (x, y) cu un polinom de ordin n
folosește funcția polyfit și se apelează astfel:
p = polyfit(x,y,n)
Funcția polyfit returnează coeficienții 𝑎𝑖 ai polinomului p(x), care în punctele precizate de
vectorului x are, în sensul celor mai mici pătrate, valorile date de vectorul y.
Exemplu:
Fie polinomul 𝑝(𝑥) = 𝑥 3 − 6𝑥 2 + 11𝑥 − 6, peste care este suprapus un zgomot de distribuție
normală. Aproximați în sensul celor mai mici pătrate datele rezultate cu un polinom de gradul 3.
Reprezentați grafic datele cu zgonot și polinomul aproximat.
p = [1, -6, 11, -6];
x = 0:.25:4;
y =
polyval(p,x)+rand(size(
x));
c = polyfit(x, y, 3);
poli3 = polyval(c, x);
plot(x, poli3, x, y,
‘o’);
grid
Exercițiu rezolvat
x = [-2 -1 0 2 4];
y = [-15 -3 2 -3 10];
xn = -2:.1:4;
c3 = polyfit(x, y, 3);
y3 = polyval(c3, xn);
c5 = polyfit(x, y, 5);
y5 = polyval(c5, xn);
Se obțin coeficienții:
C3 = [0.7719 -2.5526 0.0439 1.2105]
C5 = [-0.0958 0.4042 1.1333 -4.3667 0 2.0000]
Care reprezintă polinoamele:
Pentru extrapolarea funcțiilor de o variabilă se folosește funcția definită prin una din
sintaxele: