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 111<br />
zicem cu 20 s¸i 150 de puncte intermediare pe curbă). Sursa este cont¸inută în script-ul<br />
splinevect.m s¸i o dăm în continuare:<br />
axis([0,1,0,1]);<br />
hold on<br />
[x,y]=ginput;<br />
data=[x’;y’];<br />
t=linspace(0,1,length(x));<br />
tt1=linspace(0,1,20);<br />
tt2=linspace(0,1,150);<br />
pp=spline(t,data);<br />
yy1=ppval(pp,tt1);<br />
yy2=ppval(pp,tt2);<br />
plot(x,y,’o’,yy1(1,:),yy1(2,:),yy2(1,:),yy2(2,:));<br />
hold off<br />
Citirea punctelor se face interactiv cu ginput. Coeficient¸ii spline-ului se calculează<br />
o singură dată, iar pentru evaluarea spline-ului se foloses¸te ppval. Propunem<br />
cititorului să încerce acest exemplu.<br />
Funct¸ia pchip se poate apela în una din formele:<br />
yi = pchip(x,y,xx)<br />
pp = pchip(x,y)<br />
Prima formă returnează valori ale interpolantului în xx, iar a doua o structură<br />
pp. Semnificat¸ia parametrilor este acceas¸i ca în cazul funct¸iei spline. Exemplul<br />
următor calculează interpolantul spline deBoor s¸i Hermite cubic pe port¸iuni pentru<br />
un acelas¸i set de date (script-ul expchip.m):<br />
x = -3:3;<br />
y = [-1 -1 -1 0 1 1 1];<br />
t = -3:.01:3;<br />
p = pchip(x,y,t);<br />
s = spline(x,y,t);<br />
plot(x,y,’o’,t,p,’-’,t,s,’-.’)<br />
legend({’data’,’pchip’,’spline’},4)<br />
Graficul apare în figura 4.4. Se observă din nou că interpolantul spline este mai neted,<br />
dar interpolantul Hermite cubic pe port¸iuni păstrează alura.<br />
4.2. Interpolarea funct¸iilor de mai multe variabile în MA-<br />
TLAB<br />
Există două funct¸ii pentru interpolarea bidimensională în MATLAB: interp2<br />
s¸i griddata. Sintaxa cea mai generală a lui interp2 este