一、 【实验目的】
运用matlab进行一维、二维多项式的拟合及插值。
二、 【实验任务】
P130 7,8,12
三、 【实验程序】
P130 7程序如下
clf;
x=0:pi/10:pi;
y=cos(x);
p2=polyfit(x,y,2);
p3=polyfit(x,y,3);
matlab拟合数据p4=polyfit(x,y,4);
p6=polyfit(x,y,6);
x1=0:pi/50:pi;
y2=polyval(p2,x1);
y3=polyval(p3,x1);
y4=polyval(p4,x1);
y6=polyval(p6,x1);
plot(x,y,'rp',x1,y2,'m*',x1,y3,'b--',x1,y4,'k-',x1,y6,'gd');
legend('拟合点','二次拟合','三次拟合','四次拟合','六次拟合')
P130 8程序如下
clf;
x=[0.10,0.30,0.40,0.55,0.70,0.80,0.95];
y=[15,18,19,21,22.6,23.8,26];
p1=polyfit(x,y,1);
p3=polyfit(x,y,3);
p5=polyfit(x,y,5);
x1=0:0.01:1;
y1=polyval(p1,x1);
y3=polyval(p3,x1);
y5=polyval(p5,x1);
plot(x,y,'rp',x1,y1,'m*',x1,y3,'b--',x1,y5,'gd');
legend('拟合点','一次拟合','三次拟合','五次拟合')
P130 12程序如下
[x,y]=meshgrid(-3:0.5:3);
z=(x.^2/16)-(y.^2/9);
[x1,y1]=meshgrid(-3:0.1:3);
z1=(x1.^2/16)-(y1.^2/9);
figure(1)
subplot(1,2,1),mesh(x,y,z),title('数据点')
subplot(1,2,2),mesh(x1,y1,z1),title('函数图象')
[xi,yi]=meshgrid(-3:0.125:3);
zi1=interp2(x,y,z,xi,yi,'*nearest');
zi2=interp2(x,y,z,xi,yi,'*linear');
zi3=interp2(x,y,z,xi,yi,'*spline');
zi4=interp2(x,y,z,xi,yi,'*cubic');
figure(2)
subplot(2,2,1),mesh(xi,yi,zi1),title('最近值点')
subplot(2,2,2),mesh(xi,yi,zi2),title('线性插值')
subplot(2,2,3),mesh(xi,yi,zi3),title('样条插值')
subplot(2,2,4),mesh(xi,yi,zi4),title('立方插值')
四、 【实验结果】
P130 7截图如下
P130 8截图如下
P130 12截图如下
五、 【实验总结】
本次试验的目的是让我们在遇到实际生活中的试验里要对一些实验数据(离散的点)进行多
项式拟合时,用matlab到一个简单的函数去逼近一个复杂的、位置的函数,即用一条曲线(多项式)尽可能地靠近离散的点,使其在某种意义下达到最优。插值也是要构造一条“光滑”的曲线,将数据点连接起来。但是拟合与插值的不同之处在于拟合点曲线不一定要过数据点,而插值的曲线必须经过数据点。