20.07.2013 Views

Software matematic

Software matematic

Software matematic

SHOW MORE
SHOW LESS

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

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!