插值:
例 1
编写程序如下:
clear
x0=[0,3,5,7,9,11,12,13,14,15];
y0=[0,1.2,1.7,2.0,2.1,2.0,1.8,1.2,1.0,1.6];
x=13:0.1:15;
y1=lagrange(x0,y0,x);
y2=interp1(x0,y0,x);
y3=interp1(x0,y0,x,'spline');
pp1=csape(x0,y0);y4=ppval(pp1,x);
pp2=csape(x0,y0,'not-a-knot');y5=ppval(pp2,x);
fprintf(' 比较不同插值结果下的边界值的差别 :')
fprintf('x,y1,y2,y3,y4,y5')
xianshi=[x',y1',y2',y3',y4',y5'];
fprintf('%f %f %f %f %f %f',xianshi')
subplot(2,2,1),plot(x0,y0,'*r',x,y1),title('lagrange')
subplot(2,2,2),plot(x0,y0,'*b',x,y2),title('linear')
subplot(2,2,3),plot(x0,y0,'*y',x,y3),title('spline')
subplot(2,2,4),plot(x0,y0,'*g',x,y4),title('spline csape1')
subplot(2,2,4),plot(x0,y0,'*c',x,y5),title('spline csape2')
dyx0=ppval(fnder(pp1),x0(1)) % 求 x=0 处的导数
ytemp=y3(13:15);
index=find(ytemp==min(ytemp));
xymin=[x(13+index),ytemp(index)]