4.2 插值和拟合
插值和拟合都是构造函数对已有的离散点对进行逼近,或者用简单函数(一般是多项式)近似代替复杂函数.
4.2.1 插值
对于已有的离散点对(xi ,yi )i =0,1,…,n ,需构造一个相对简单的函数y =g (x ),使g 通过全部的结点,即yi =g (xi )i =0,1,…,n ,用g (x )作为函数f (x )的近似.找到的简单函数称为插值函数,如果g (x )是多项式则称为插值多项式.
当n =1时,通过已知2点的多项式函数(简单函数)为直线,设直线方程为g (x )=ax +b ,将已知2点的坐标代入即可求出a 与b ;
当n =2时,通过已知3点的多项式函数(简单函数)为二次曲线,设方程为g (x )=ax 2 +bx +c ,将已知3点的坐标代入即可求出a、b 和c ;
很明显,有n +1个点对时,可以唯一确定一个n 次多项式(用待定系数法可求),这个多项式称为插值多项式.由插值多项式又可以近似求出其他点的函数值.
Matlab提供了函数求已知点列求其他点函数值.
A.一维插值interp1()
格式1:interp1(x,y,xi)求出点列(x,y)的插值函数在xi的值
格式2:interp1(x,y,xi,method)求出点列(x,y)的插值函数在xi的值,这里x,y是已知数据点,xi表示要求的数据点,method的取值为′nearest′表最近插值,′linear′表线性插值,′spline′三次样条插值,′cubic′表三次插值.
B.三次样条插值spline()
格式1:spline(x,y)获得分段三次样条函数
格式2:spline(x,y,xi)直接求出三次样条插值函数在xi点的值.
注:interp1(x,y,xi,′spline′)与spline(x,y,xi)是等价的.
C.二维插值interp2()
格式1:interp2(x,y,z,xi,yi)求出点列(x,y,z)的插值函数在点xi,yi的值.
格式2:interp2(x,y,z,xi,yi,method)求出点列(x,y,z)的插值函数在点xi,yi处的值.method的取值同上.
D.其他插值函数
4.2.2 拟合
对于已有的离散点对(xi ,yi )i =0,1,…,n ,需寻找一个相对简单的函数y =g (x ),使g 与全部结点达到最近.这种方法称为拟合,找到的函数称为拟合函数.
注意到拟合函数与插值函数的区别,插值函数要求通过每一点,而拟合只要求函数与所有点都达到最近.这里说的“最近”是总体上的最近,可有多种定义,一般定义为误差的平方和最小.
为简单起见,一般找多项式函数作为拟合函数.确定拟合多项式的步骤如下:
A.确定次数——通过观察已给点的图形来确定
B.确定系数——通过最小二乘法来确定
MATLAB的提供了polyfit函数从一阶到高阶多项式的拟合,其格式为:
格式1:p=polyfit(x,y,n)
格式2:[p,s]=polyfit(x,y,n)
其中x,y为已知的数据组,n为要拟合的多项式的阶次,向量p为返回的要拟合的多项式的系数.
注意:
1.多项式拟合必须先确定次数,确定的办法是根据图形来观察,须有一定的预备知识.
2.根据实际问题的数学模型的需要,可将其他函数如指数函数、对数函数线性化后再进行拟合.
练习1:设某国今年的国民生产总值为45600亿元,若今后每年以8%的增长率增长,计算:
(1)多少年后能实现国民生产总值翻一番?
(2)若每年再提高一个百分点(即9%)则至少可提前多少年?(精确到年)
练习2:人口问题:已知60年代的人口增长的统计数据(单位:百万)
请预测2000年的人口数目.