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 插值和拟合 - 图1

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年代的人口增长的统计数据(单位:百万)

4.2 插值和拟合 - 图2

请预测2000年的人口数目.