第九章 插值与拟合综述.docx

上传人:b****1 文档编号:1326858 上传时间:2022-10-20 格式:DOCX 页数:36 大小:485.89KB
下载 相关 举报
第九章 插值与拟合综述.docx_第1页
第1页 / 共36页
第九章 插值与拟合综述.docx_第2页
第2页 / 共36页
第九章 插值与拟合综述.docx_第3页
第3页 / 共36页
第九章 插值与拟合综述.docx_第4页
第4页 / 共36页
第九章 插值与拟合综述.docx_第5页
第5页 / 共36页
点击查看更多>>
下载资源
资源描述

第九章 插值与拟合综述.docx

《第九章 插值与拟合综述.docx》由会员分享,可在线阅读,更多相关《第九章 插值与拟合综述.docx(36页珍藏版)》请在冰豆网上搜索。

第九章 插值与拟合综述.docx

第九章插值与拟合综述

第九章插值与拟合

插值:

求过已知有限个数据点的近似函数。

拟合:

已知有限个数据点,求近似函数,不要求过已知数据点,只要求在某种意义下它在这些点上的总偏差最小。

插值和拟合都是要根据一组数据构造一个函数作为近似,由于近似的要求不同,二者的数学方法上是完全不同的。

而面对一个实际问题,究竟应该用插值还是拟合,有时容易确定,有时则并不明显。

§1插值方法

下面介绍几种基本的、常用的插值:

拉格朗日多项式插值、牛顿插值、分段线性插值、Hermite插值和三次样条插值。

1.1拉格朗日多项式插值

1.1.1插值多项式

用多项式作为研究插值的工具,称为代数插值。

其基本问题是:

已知函数

在区间

个不同点

处的函数值

,求一个至多

次多项式

(1)

使其在给定点处与

同值,即满足插值条件

(2)

称为插值多项式,

称为插值节点,简称节点,

称为插值区间。

从几何上看,

次多项式插值就是过

个点

,作一条多项式曲线

近似曲线

次多项式

(1)有

个待定系数,由插值条件

(2)恰好给出

个方程

(3)

记此方程组的系数矩阵为

,则

是范德蒙特(Vandermonde)行列式。

互不相同时,此行列式值不为零。

因此方程组(3)有唯一解。

这表明,只要

个节点互不相同,满足插值要求

(2)的插值多项式

(1)是唯一的。

插值多项式与被插函数之间的差

称为截断误差,又称为插值余项。

充分光滑时,

其中

1.1.2拉格朗日插值多项式

实际上比较方便的作法不是解方程(3)求待定系数,而是先构造一组基函数

次多项式,满足

(4)

上式称为

次Lagrange插值多项式,由方程(3)解的唯一性,

个节点的

次Lagrange插值多项式存在唯一。

1.1.3用Matlab作Lagrange插值

Matlab中没有现成的Lagrange插值函数,必须编写一个M文件实现Lagrange插值。

个节点数据以数组

输入(注意Matlat的数组下标从1开始),

个插值点以数组

输入,输出数组

个插值。

编写一个名为lagrange.m的M文件:

functiony=lagrange(x0,y0,x);

n=length(x0);m=length(x);

fori=1:

m

z=x(i);

s=0.0;

fork=1:

n

p=1.0;

forj=1:

n

ifj~=k

p=p*(z-x0(j))/(x0(k)-x0(j));

end

end

s=p*y0(k)+s;

end

y(i)=s;

end

1.2牛顿(Newton)插值

在导出Newton公式前,先介绍公式表示中所需要用到的差商、差分的概念及性质。

1.2.1差商

定义设有函数

为一系列互不相等的点,称

关于点

一阶差商(也称均差)记为

,即

称一阶差商的差商

关于点

的二阶差商,记为

一般地,称

关于点

阶差商,记为

容易证明,差商具有下述性质:

1.2.2Newton插值公式

线性插值公式可表成

称为一次Newton插值多项式。

一般地,由各阶差商的定义,依次可得

将以上各式分别乘以

,然后相加并消去两边相等的部分,即得

显然,

是至多

次的多项式,且满足插值条件,因而它是

次插值多项式。

这种形式的插值多项式称为Newton插值多项式。

称为Newton插值余项。

Newton插值的优点是:

每增加一个节点,插值多项式只增加一项,即

因而便于递推运算。

而且Newton插值的计算量小于Lagrange插值。

由插值多项式的唯一性可知,Newton插值余项与Lagrange余项也是相等的,即

由此可得差商与导数的关系

其中

1.2.3差分

当节点等距时,即相邻两个节点之差(称为步长)为常数,Newton插值公式的形式会更简单。

此时关于节点间函数的平均变化率(差商)可用函数值之差(差分)来表示。

定义设有等距节点

,步长

为常数,

称相邻两个节点

处的函数值的增量

为函数

在点

处以

为步长的一阶差分,记为

,即

类似地,定义差分的差分为高阶差分。

如二阶差分为

一般地,

阶差分为

上面定义的各阶差分又称为向前差分。

常用的差分还有两种:

称为

处以

为步长的向后差分;

称为

处以

为步长的中心差分。

一般地,

阶向后差分与

阶中心差分公式为

差分具有以下性质:

)各阶差分均可表成函数值的线性组合,例如

)各种差分之间可以互化。

向后差分与中心差分化成向前差分的公式如下:

1.2.4等距节点插值公式

如果插值节点是等距的,则插值公式可用差分表示。

设已知节点

,则有

若令

,则上式又可变形为

上式称为Newton向前插值公式。

1.3分段线性插值

1.3.1插值多项式的振荡

用Lagrange插值多项式

近似

,虽然随着节点个数的增加,

的次数

变大,多数情况下误差

会变小。

但是

增大时,

的光滑性变坏,有时会出现很大的振荡。

理论上,当

,在

内并不能保证

处处收敛于

Runge给出了一个有名的例子:

对于较大的

,随着

的增大,

振荡越来越大,事实上可以证明,仅当

时,才有

,而在此区间外,

是发散的。

高次插值多项式的这些缺陷,促使人们转而寻求简单的低次多项式插值。

1.3.2分段线性插值

简单地说,将每两个相邻的节点用直线连起来,如此形成的一条折线就是分段线性插值函数,记作

,它满足

,且

在每个小区间

上是线性函数

可以表示为

有良好的收敛性,即对于

有,

计算

点的插值时,只用到

左右的两个节点,计算量与节点个数

无关。

越大,分段越多,插值误差越小。

实际上用函数表作插值计算时,分段线性插值就足够了,如数学、物理中用的特殊函数表,数理统计中用的概率分布表等。

1.3.3用Matlab实现分段线性插值

用Matlab实现分段线性插值不需要编制函数程序,Matlab中有现成的一维插值函数interp1。

y=interp1(x0,y0,x,'method')

method指定插值的方法,默认为线性插值。

其值可为:

'nearest'最近项插值

'linear'线性插值

'spline'立方样条插值

'cubic'立方插值。

所有的插值方法要求x0是单调的。

当x0为等距时可以用快速插值法,使用快速插值法的格式为'*nearest'、'*linear'、'*spline'、'*cubic'。

1.4埃尔米特(Hermite)插值

1.4.1Hermite插值多项式

如果对插值函数,不仅要求它在节点处与函数同值,而且要求它与函数有相同的一阶、二阶甚至更高阶的导数值,这就是Hermite插值问题。

本节主要讨论在节点处插值函数与函数的值及一阶导数值均相等的Hermite插值。

设已知函数

个互异节点

上的函数值

和导数值

,要求一个至多

次的多项式

,使得

满足上述条件的多项式

称为Hermite插值多项式。

Hermite插值多项式为

其中

1.4.2用Matlab实现Hermite插值

Matlab中没有现成的Hermite插值函数,必须编写一个M文件实现插值。

个节点的数据以数组

(已知点的横坐标),

(函数值),

(导数值)输入(注意Matlat的数组下标从1开始),

个插值点以数组

输入,输出数组

个插值。

编写一个名为hermite.m的M文件:

functiony=hermite(x0,y0,y1,x);

n=length(x0);m=length(x);

fork=1:

m

yy=0.0;

fori=1:

n

h=1.0;

a=0.0;

forj=1:

n

ifj~=i

h=h*((x(k)-x0(j))/(x0(i)-x0(j)))^2;

a=1/(x0(i)-x0(j))+a;

end

end

yy=yy+h*((x0(i)-x(k))*(2*a*y0(i)-y1(i))+y0(i));

end

y(k)=yy;

end

1.5样条插值

许多工程技术中提出的计算问题对插值函数的光滑性有较高要求,如飞机的机翼外形,内燃机的进、排气门的凸轮曲线,都要求曲线具有较高的光滑程度,不仅要连续,而且要有连续的曲率,这就导致了样条插值的产生。

1.5.1样条函数的概念

所谓样条(Spline)本来是工程设计中使用的一种绘图工具,它是富有弹性的细木条或细金属条。

绘图员利用它把一些已知点连接成一条光滑曲线(称为样条曲线),并使连接点处有连续的曲率。

三次样条插值就是由此抽象出来的。

数学上将具有一定光滑性的分段多项式称为样条函数。

具体地说,给定区间

的一个分划

如果函数

满足:

)在每个小区间

次多项式;

上具有

阶连续导数。

则称

为关于分划

次样条函数,其图形为

次样条曲线。

显然,折线是一次样条曲线。

1.5.2三次样条插值

利用样条函数进行插值,即取插值函数为样条函数,称为样条插值。

例如分段线性插值是一次样条插值。

我们只介绍三次样条插值,即已知函数

在区间

上的

个节点

上的值

,求插值函数

,使得

;(5)

)在每个小区间

是三次多项式,记为

上二阶连续可微。

函数

称为

的三次样条插值函数。

由条件(

),不妨将

记为

其中

为待定系数,共

个。

由条件(

(6)

容易看出,(5)、(6)式共含有

个方程,为确定

个待定参数,尚需再给出2个条件。

常用的三次样条函数的边界条件有3种类型:

由这种边界条件建立的样条插值函数称为

的完备三次样条插值函数。

特别地,

时,样条曲线在端点处呈水平状态。

如果

不知道,我们可以要求

在端点处近似相等。

这时以

为节点作一个三次Newton插值多项式

,以

作一个三次Newton插值多项式

,要求

由这种边界条件建立的三次样条称为

的Lagrange三次样条插值函数。

特别地

时,称为自然边界条件。

,此条件称为周期条件。

1.5.3三次样条插值在Matlab中的实现

在Matlab中数据点称之为断点。

如果三次样条插值没有边界条件,最常用的方法,就是采用非扭结(not-a-knot)条件。

这个条件强迫第1个和第2个三次多项式的三阶导数相等。

对最后一个和倒数第2个三次多项式也做同样地处理。

Matlab中三次样条插值也有现成的函数:

y=interp1(x0,y0,x,'spline');

y=spline(x0,y0,x);

pp=csape(x0,y0,conds),

pp=csape(x0,y0,conds,valconds),y=ppval(pp,x)。

其中x0,y0是已知数据点,x是插值点,y是插值点的函数值。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 艺术

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1