资源描述:
《数学实验拟合与插值》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、拟合与插值北京科技大学数学实验北京科技大学数学实验曲线拟合插值已知平面上若干个点(xi,yi)i=1,…n,求一个较简单的函数(曲线)y=f(x),使f(x)尽可能的靠近数据点,在某种意义下达到最优。f(x)称为拟合函数。+++++++++xyy=f(x)(xi,yi)i------最小二乘法曲线拟合p=polyfit(x,y,n)多项式数据拟合功能:将给定向量x,y对应的(x[i],y[i])作为数据点,拟合成n次多项式;向量x,y具有相同的维数;p为多项式的系数向量。多项式的拟合y=a1xn+a2xn-1+……...+anx
2、+an+1p=[a1,a2,...,an,an+1]poly2str(p,‘x’)将多项式表示成习惯的形式p是多项式系数,字符‘x’为自变量polyval(p,X)按数组规则计算X处多项式的值功能:计算多项式p的变量在点阵x处的值;X可以为向量或矩阵,计算结果是与X同维的向量或矩阵。x=1:0.1:2;y=[2.1,3.2,2.1,2.5,3.2,3.5,3.4,4.1,4.7,5.0,4.8];p2=polyfit(x,y,2)%多项式拟合,次数是2,p2为拟合多项式的系数p3=polyfit(x,y,3);p7=polyfit
3、(x,y,7);disp(‘二次拟合函数'),f2=poly2str(p2,'x')disp(‘三次拟合函数'),f3=poly2str(p3,'x');disp(‘七次拟合函数'),f7=poly2str(p7,'x');p2=1.3869-1.26082.141二次拟合函数f2=1.3869x^2-1.2608x+2.1417x1=1:.01:2;y2=polyval(p2,x1);%多项式p2在x1处的值y3=polyval(p3,x1);y7=polyval(p7,x1);plot(x,y,'rp',x1,y2,'--',
4、x1,y3,'k-.',x1,y7);8练习:用多项式拟合余弦函数y=cosx。插值对函数f(x),其函数形式可能很复杂,假如可以获得f(x)在区间[a,b]上的一组n+1个不同的点上的函数值求一个简单函数p(x),使得:并且用p(x)近似代替f(x),这就是插值问题。函数p(x)为函数f(x)的插值函数。(1)式称为插值条件。xi为插值结点,点x称为插值点。点x在插值区间内叫内插,否则叫外插。………..(1)p(x)f(x)x0x1x2x0y1y0y2对于被插函数f(x)和插值函数p(x)在节点xi处得函数值必然相等但在节点外p
5、(x)的值可能就会偏离f(x)因此p(x)近似代替f(x)必然存在着误差整体误差的大小反映了插值函数的好坏为了使插值函数方便在计算机上运算,一般插值函数都使用多项式和有理函数。一维多项式插值yi=interp1(x,y,xi,method)功能:x,y是已知数据点;yi是插值点xi处的值;当输入的x是等间距时,可在插值方法method前加*,以提高处理速度。method表示不同的插值方法的字符串,有下面四种插值方法可选:‘nearest’:最近点插值,插值点处的值取与该插值点距离最近的数据点函数值;‘linear’:分段线性插值,
6、用直线连接数据点,插值点的值取对应直线上的值;‘spline’:三次样条函数插值,该方法用三次样条曲线通过数据点,插值点处的值取对应曲线上的值;‘cubic’:分段三次Hermite插值,确定三次Hermite函数,根据该函数确定插值点的函数值。缺省时表示分段线性插值。x=0:6;y=cos(x);xi=0:.25:6;yi1=interp1(x,y,xi,'*nearest');yi2=interp1(x,y,xi,'*linear');yi3=interp1(x,y,xi,'*spline');yi4=interp1(x,y,
7、xi,'*cubic');plot(x,y,'ro',xi,yi1,'--',xi,yi2,'-',xi,yi3,'k.-',xi,yi4,'m:')legend(‘原始数据’,‘最近点插值’,‘线性插值’,’样条插值‘,’立方插值’)例6-19:用以上4种方法对y=cosx在[0,6]上的一维插值效果进行比较。二维多项式插值zi=interp2(x,y,z,xi,yi,method)功能:已知数据点(x,y,z),运用method指定的方法,计算插值点(xi,yi)处得函数值zi。method指定的方法同一维多项式插值。t=-2
8、:0.5:2[x,y]=meshgrid(t);z=x.*exp(-x.^2-y.^2);[x1,y1]=meshgrid(-2:0.1:2);z1=x1.*exp(-x1.^2-y1.^2);figure(1)subplot(1,2,1),mes