插值方法
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
xi 1 x xi ,i=1,2,…,n
分段线性插值具有良好的收敛性,即
lim q ( x) f ( x)
n
f(x)为被插值函数
用分段线性插值计算时,只用到x左右两个节点,计算量与节 点个数无关。但是n越大,分段越多,插值误差越小。实际上 用函数表作插值计算时,分段线性插值就足够了。
实验四、插值方法
一、插值思想简介
二、一维插值 三、二维插值 四、利用matlab进行插值计算 五、建模实例
一、插值思想简介
插值:最初来源于天体计算的需要,比如,人们得到了
若干观测值,即某个星球在若干已知时刻的位置,需要计 算星球在另一些时刻的位置。所谓插值,就是在若干已知 的函数值之间插入计算一些未知的函数值。
三次样条函数 记为S(x), 它是定义在区间[a, b] 上的函数, 满足以下两个条件: 1). S(x) 在每一个小区间[xi-1,xi]上是一个三次多项式函数 ; 2). 在整个区间[a,b]上,其二阶导数存在且连续。 即在每个节点处 的二阶导数连续。
问题:给定函数f(x)在n+1个节点x0,x1,…,xn处的函数值为 y0,y1,…,yn 。求一个三次样条函数S (x),使其满足:S (xi)=yi,i=0,1,…,n. 如何确定三次样条函数在每一个小区间上的三次多项式函数的系数?
解决此问题的拉格朗日插值多项式公式如下 构造拉格朗日插值基函数:
( x x0 )( x x1 ) ( x xi 1 )( x xi 1 ) ( x xn ) Li ( x) ( xi x0 )( xi x1 ) ( xi xi 1 )( xi xi 1 ) ( xi xn ) 1,i j 易知n次多项式Li ( x)满足Li ( x j ) ,i,j 0, 1, ...n 0,i j
故令Pn ( x) Li ( x) yi即是我们寻求的插值函数
i 0
n
用matlab编写拉格朗日插值函数:[lagr1.m] function y=lagr1(x0,y0,x) n=length(x0); m=length(x); for k=1:m z=x(k); s=0; for i=1:n p=1.0 ; for j=1:n if j~=i p=p*(z-x0(j))/(x0(i)-x0(j)); end end s=p*y0(i)+s; end y(k)=s; end
再用
计算插值,即
二维插值方法包括最邻近插值法、分 片线性插值、双线性插值、样条插值等一 系列类似的方法,常用于图像处理、温度 场计算、气压等压线和地图等高线的绘制、 计算机模拟和数字信号处理等多种方面。 具体插值方法和应用参考数值逼近, 本课采用matlab自带函数进行计算。
最邻近插值
y
( x1 , y2 )
比如对引例1的计算: 解 由标准正态分布函数值表可以得到: F(2.34)=0.99036; F(2.35)=0.99061 。采 用分段线性插值计算F(2.3456789) 。 取区间[xi-1,xi]=[2.34,2.35] ,被插值函数f(x)=F(x) 。则 yi-1=F(xi-1)=F(2.34)=0.99036; yi=F(xi)=F(2.35)=0.99061. 利用如上分段线性插值公式得到: F(2.3456789)=q(2.3456789)=0.9905。
引例2、绘制地图
测绘部门 测量的一组 数据 节点两两 连接
描点
地 图 的 边 界
对每段曲线上的未知函数值,用直线段上相应的函数值来代替
引例3、机床加工
待加工零件的外形根据工艺要求由一组数据(x, y)给出(在平面情 况下),用程控铣床加工时每一刀只能沿x方向和y方向走非常小的 一步,这就需要从已知数据得到加工所要求的步长很小的(x, y) 坐标。表1给出的x, y数据位于机翼断面的下轮廓线上,假设需要得 到x坐标每改变0.1时的y坐标,试完成加工所需的数据,画出曲线。
表1. 机翼断面下轮廓线上的部分数据 x 0 3 5 7 9 11 12 y 0 1.2 1.7 2.0 2.1 2.0 1.8
13 1.2
14 1.0
15 1.6
对每段曲线上的未知函数值,用相应的函数值来代替,并考虑衔接的光滑性
求解插值问题的基本思路:
构造相对简单的插值函数 y f ( x), 通过全部节点, 即
f ( x j ) y j ( j 0,1, n)
* * y f ( x ). 再用 f ( x) 计算插值,即
y
*
y0
y1
x
*
x0 x1
xn
二、一维插值方法
一、拉格朗日多项式插值 从理论和计算角度看,多项式是最简单的函数。
已知函数f(x)在n+1个点x0,x1,…,xn处的函数值为 y0,y1,…,yn 。 求一n次多项式函数Pn(x),使其满足: Pn(xi)=yi,i=0,1,…,n.
对引例3利用拉格朗日插值法求解: x0=[0 3 5 7 9 11 12 13 14 15]; y0=[0 1.2 1.7 2.0 2.1 2.0 1.8 1.2 1.0 1.6]; x=0:0.05:15; y=lagr1(x0,y0,x); plot(x,y,x0,y0,'r*') axis([0,15,-17,3]) 得到结果:
n=3时 n=9时 n=15时
二、分段多项式插值 由于高次插值多项式的振荡缺陷,促使人们转而寻求简单的低 次多形式插值。分段插值的基本思想是将插值区间划分为若干 个小区间,然后在每个小区间上做满足一定条件的低阶插值。 1、分段线性插值 设函数f(x)在n+1个节点x0,x1,…,xn处的函数值已知, 为 y0,y1,…,yn 。 要求一个分段( 共 n段)线性函数q(x),使其满足: q(xi)=yi, i=0,1,…,n. 这n+1个点 x0,x1,…,xn 称为节点,q(x) 称为插值基函数 y
参数个数与方程个数 参数:每个小段上4个,n个小段共计4n个。 方程:1) 每个小段上由给定函数值得到2个,n个小段共计2n个 2) 光滑性要求每一个内部节点的一阶二阶导数连续,得 出其左右导数相等,因此,每个节点产生2个方程,共 计2(n-1) 个 。
现在得到了4n-2个方程,还差两个。 为此,常用的方法是对边界节点除函数值外附加要求,这就是 所谓的边界条件。这里需要两个边界条件,正好左右两个端点 各一个。
m边界 条件 给定两个边界点的一阶导数值m0,mn 即 S (x0)=m0, S (xn)=mn。 M边界条件 给定两个边界点的二阶导数值M0,Mn 即 S (x0)=M0, S (xn)=Mn。 最常用的是自然边界条件:M0=Mn=0
周期性边界条件 对周期函数,在自然满足S(x0)=S(xn)时,令两个边界的一阶 导数和二阶导数分别相等:即 S (x0)=S (xn), S (x0)= S (xn)
2、分段三次埃尔米特插值 除了要求在插值节点的函数值给定外,还要求在节点处的导数 值为给定值 :
设函数f(x)在节点x0,x1,…,xn处的函数值为 , y1 , , y n 。 y0,y1,…,yn,导数值为 y0 求一个分段( 共 n段)多项式函数q(x),使其满足: q(xi)=yi, ,i=0,1,…,n.
( x2 , y2 )
( x1 , y1 ) ( x2 , y 1 )
O
x
二维或高维情形的最邻近插值,与被插值点最邻近的 节点的函数值即为所求。 注意:最邻近插值一般不连续。具有连续性的最简单 的插值是分片线性插值。
分片线性插值
y
(xi, yj+1) (xi+1, yj+1) (xi, yj) (xi+1, yj)
第二片(上三角形区域):(x, y)满足 y j1 y j y (x x i ) y i x i 1 x i 插值函数为: f ( x, y) f1 (f 4 f1 )( y y j ) (f 3 f 4 )( x x i )
注意:(x, y)当然应该是在插值节点所形成的矩形区 域内。显然,分片线性插值函数是连续的;
例如,在工程实践和科学实验中,常常需要从一组实验观测数据 (xi,yi) ,i=0,1,…,揭示自变量x与因变量y之间的关系,一般可以用 一个近似的函数关系式:y=f(x)来表示。函数f(x)的产生办法因观 测数据与要求的不同而异。
曲线拟合
插值
信息技术中的图象重建、建筑工程的外观设计、化学工程 实验数据与模型分析、地理信息数据的处理、社会经济现象的 统计分析等都要用到插值的方法。
三次样条函数的解法在计算方法和数值逼近的内容中 有详细的讨论,在此不做赘述。若我们使用二次多项 式构造样条函数,存在精确程度不够的问题,有时候 误差达不到要求,而高次样条的计算比较复杂,对于 一般的函数,我们采用matlab中自带的三次函数求解 已经足够。 matlab中还设计了样条工具箱(spline toolboxes),提 供了多种样条函数的建立,操作,绘制等功能。
x
O
将四个插值点(矩形的四个顶点)处的函数值依次 简记为: f (xi, yj)=f1,f (xi+1, yj)=f2,f (xi+1, yj+1)=f3,f (xi, yj+1)=f4
分两片的函数表达式如下:
第一片(下三角形区域): (x, y)满足
插值函数为: f ( x, y) f1 (f 2 f1 )( x x i ) (f 3 f 2 )( y y j )
1 例、逼近函数y 1 x2
n=3; x0=linspace(-5,5,n); y0=1./(1+x0.^2); x=-7:0.4:7; y_L=lagr1(x0,y0,x); y_R=1./(1+x.^2); plot(x,y_R,'r*',x,y_L); axis([-6,6,-1.5 2]);
q ( xi ) y i
每一小段上应满足四个条件(方程),可以确定四个待定参数。三 次多项式正好有四个系数,所以可以考虑用用三次多项式函数 作为插值函数,这就是所谓的分段三次埃尔米特插值
, y1 , , y n y0
三、三次样条插值
在数学上,光滑程度的定量描述是:函数 ( 曲 线)的k阶导数存在且连续,则称该曲线具有k阶光 滑性。光滑性的阶次越高,则越光滑。三次埃尔 米特插值具有一阶的光滑性。 是否存在较低次的分段多项式达到较高阶光 滑性的方法? 三次样条插值就是一个很好的例子。 样条:spline 来源于可变形的样条工具,那是一种在过去造船和工 程制图时用来画出光滑形状的工具。此种工具画出的 曲线具有处处连续的曲率,即连续的二阶导数。
o x0 xj-1 xj
xj+1
xn
x
简单的说,将每两个相邻 节点用直线连接起来,如 此形成的一条折线就是分 段线性插值函数。插值函 数在[xi-1,xi]上的表达式为:
x xi x xi 1 q ( x) y i 1 yi xi 1 xi xi xi 1
引例1、函数查表问题
求标准正态分布函数值F(2.3456789) 由标准正态分布函数值表可以得到: F(2.34)=0.99036; F(2.35)=0.99061 2.3456789接近2.35,故F(2.3456789)约等于0.99061 在对精度要求较高时,这种处理方法受到质疑
问题:利用一个表格给出的函数值,计算未给出的函数值
三、二维插值方法
第一种(网格节点):
y
O
x
已知 mn个节点
其中 互不相同,不妨设
构造一个二元函数
通过全部已知节点源自文库即
再用
计算插值,即
第二种(散乱节点):
y
0
x
已知n个节点 其中 构造一个二元函数 互不相同, 通过全部已知节点, 即