You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
4.2. Interpolarea funct¸iilor de mai multe variabile în MATLAB 113<br />
6<br />
4<br />
2<br />
0<br />
−2<br />
−4<br />
−6<br />
3<br />
2<br />
1<br />
0<br />
−1<br />
−2<br />
−3<br />
−3<br />
Figura 4.5: Graficul lui peaks pe o grilă grosieră<br />
Graficul apare în figura 4.5. Calculăm apoi interpolant¸ii pe o grilă mai fină s¸i îi reprezentăm:<br />
−2<br />
[XI,YI]=meshgrid(-3:0.25:3); ZI1=interp2(X,Y,Z,XI,YI,’nearest’);<br />
ZI2=interp2(X,Y,Z,XI,YI,’linear’);<br />
ZI3=interp2(X,Y,Z,XI,YI,’cubic’);<br />
ZI4=interp2(X,Y,Z,XI,YI,’spline’); subplot(2,2,1), surf(XI,YI,ZI1)<br />
title(’nearest’) subplot(2,2,2), surf(XI,YI,ZI2) title(’linear’)<br />
subplot(2,2,3), surf(XI,YI,ZI3) title(’cubic’) subplot(2,2,4),<br />
surf(XI,YI,ZI4) title(’spline’)<br />
Graficele lor apar în figura 4.6. Dacă înlocuim peste tot surf cu contour obt¸inem<br />
graficele din figura 4.7.<br />
Funct¸ia griddata are aceeas¸i sintaxă ca s¸i interp2. Datele de intrare sunt<br />
nodurile x s¸i y, care nu mai trebuie să fie monotone s¸i valorile z în noduri. Prin interpolare<br />
se calculează valorile ZI corespunzătoare nodurilor XI s¸i YI, care de obicei<br />
sunt obt¸inute cu meshgrid. Argumentul metoda poate avea valorile ’linear’,<br />
’cubic’, nearest s¸i ’v4’, ultima semnificând o metodă de interpolare specifică<br />
MATLAB 4. Toate metodele exceptând v4 se bazează pe triangulat¸ie Delaunay (o<br />
triangulat¸ie a unei mult¸imi de puncte care maximizează unghiul minim). Metoda este<br />
utilă pentru a interpola valori pe o suprafat¸ă. Exemplul următor interpolează puncte<br />
generate aleator, situate pe suprafat¸a z = sin(x2 +y 2 )<br />
x 2 +y 2 . Pentru a nu avea probleme în<br />
origine s-a adăugat un eps la numitor.<br />
x=rand(100,1)*16-8; y=rand(100,1)*16-8; R=sqrt(x.ˆ2+y.ˆ2)+eps;<br />
z=sin(R)./R; xp=-8:0.5:8; [XI,YI]=meshgrid(xp,xp);<br />
ZI=griddata(x,y,z,XI,YI); mesh(XI,YI,ZI); hold on<br />
plot3(x,y,z,’ko’); hold off<br />
Rezultatul apare în figura 4.8, în care punctele generate aleator sunt marcate prin<br />
cercuri, iar interpolantul a fost reprezentat cu mesh.<br />
−1<br />
0<br />
1<br />
2<br />
3