当前位置:文档之家› 样条插值函数与应用

样条插值函数与应用

样条插值函数及应用摘要样条函数具有广泛的应用,是现代函数论的一个十分活跃的分支,是计算方法的主要基础和工具之一,由于生产和科学技术向前发展的推动以及电子计算机广泛应用的需要,人们便更多地应用这个工具,也更深刻的认识了它的本质。

在实际问题中所遇到许多函数往往很复杂,有些甚至是很难找到解析表达式的。

根据函数已有的数据来计算函数在一些新的点处的函数值,就是插值法所需要解决的问题。

插值法是数值逼近的重要方法之一,它是根据给定的自变量值和函数值,求取未知函数的近似值。

早在一千多年前,我国科学家就在研究历法时就用到了线性插值和二次插值。

而在实际问题中,有许多插值函数的曲线要求具有较高的光滑性,在整个曲线中,曲线不但不能有拐点,而且曲率也不能有突变。

因此,对于插值函数必须二次连续可微且不变号 ,这就需要用到三次样条插值。

关键词三次样条函数;插值法目录引言 0第一章三次样条插值 (1)1.1 样条插值函数简介 (1)1.2 三次样条函数应用 (2)第二章AMCM91A 估计水塔水流量 (4)2.1 理论分析及计算 (5)2.2运用MATLAB软件计算 (8)参考文献 (13)引言样条函数具有广泛的应用,是现代函数论的一个十分活跃的分支,是计算方法的主要基础和工具之一,由于生产和科学技术向前发展的推动以及电子计算机广泛应用的需要,人们便更多地应用这个工具,也更深刻的认识了它的本质。

上世纪四十年代,在研究数据处理的问题中引出了样条函数,例如,在1946年Schoenberg将样条引入数学,即所谓的样条函数,直到五十年代,还多应用于统计数据的处理方面,从六十年代起,在航空、造船、汽车等行业中,开始大量采用样条函数。

在我国,从六十年代末开始,从船体数学放样到飞机外形设计,逐渐出现了一个使用样,逐渐出现了一个使用样条函数的热潮,并推广到数据处理的许多问题中。

在实际生活中有许多计算问题对插值函数的光滑性有较高的要求,例如飞机机翼外形、发动机进、排气口都要求有连续的二阶导数,用三次样条绘制的曲线不仅有很好的光滑度,而且当节点逐渐加密时其函数值整体上能很好地逼近被插函数,相应的导数值也收敛于被插函数的导数值,不会发生“龙格现象”。

现在国内外学者对这方面的研究也越来越重视,根据我们的需要来解决不同的问题,而且函数的形式也在不断地改进,长期以来很多学者致力于样条插值的研究,对三次样条的研究已相当成熟。

第一章 三次样条插值1.1 样条插值函数简介在实际问题中所遇到许多函数)(x f 往往很复杂,有些甚至是很难找到解析表达式的。

有时通过实验或者数值计算所得到的也只是一些离散的点()n i x i ...2,10,=上的函数值,即n i x f i i ...2,1,0),(y ==。

根据函数)(x f 已有的数据来计算函数)(x f 在一些新的点x 处的函数值,就是插值法所需要解决的问题。

插值法的基本思想就是,首先根据已有的函数值来构造一个简单的函数)(y x 作为)(x f 的近似表达式,然后用)(y x 来计算新的点上的函数值作为)(x f 的近似值。

通常可以选多项式函数作为近似函数)(y x ,因为多项式具有各阶导数,求值也比见方便。

常用的有Lagrange 插值、Newton 插值、Hermite 插值和样条插值。

线性插值在分段点上仅连续而不可导,三次埃尔米特插值有连续的一阶导数,这样的光滑程度常不能满足物理问题的需要,样条函数可以同时解决这两个问题,使插值函数既是低阶分段函数,又是光滑的函数,并且只需在区间端点提供某些导数信息。

三次样条函数定义:设在区间[]b ,a 上取1n +个节点b x x x x a n =<<<=...210,函数)(y x f =在各个节点处的函数值为,,...,1,0),(y i n i x f i ==若)(S x 满足:(1) ;,...1,0,y )(S n i x i i ==(2) 在区间[]b ,a 上,)(S x 具有连续的二阶导数;(3) 在区间[])(1,...,1,0x ,x 1-=-n i i i 上,)(S x 是x 三次的多项式;则称)(S x 是函数)(y x f =在区间[]b ,a 上的三次样条插值函数。

由以上定义可以看出,虽然每个子区间上的多项式可以各不相同,但在相邻子区间的连接处却是光滑的。

因此,样条插值也称为分段光滑插值。

从定义知要求出)(S x ,在每一个小区间[])(1,...,1,0x ,x 1-=-n i i i 上确定4个待定系数,共有n 个小区间,故应有4n 个参数。

根据)(S x 在[]b ,a 上二阶导数连续,在节点()1-...2,1n i x i =出满足连续性条件)0()0(S +=-i i x S x )0()0(S ''+=-i i x S x )0()0(S ''''+=-i i x S x共有3n-3个条件,再加上)(S x 满足插值条件;,...1,0,y )(S n i x i i ==共有4n-2个条件,因此还需要2个条件才能确定)(S x 。

通常可在区间端点上各加一个条件(称为边界条件),可根据实际问题的要求给定,通常有以下三种:(1)已知端点的一阶导数值,即'''00')(S ,)(S n n f x f x ==(2)俩端点的二阶导数已知,即''''''00'')(S ,)(S n n f x f x ==其特殊情况,0)(S )(S ''0''==n x x 称为自然边界条件。

(3)当)(x f 是以0x x n -为周期的函数时,则要求)(S x 也是周期函数。

这时边界条件应满足)0()0(S +=-i i x S x )0()0(S ''+=-i i x S x )0()0(S ''''+=-i i x S x而此时n y y =0。

这样确定的样条函数)(S x ,称为周期函数。

1.2 三次样条函数应用作函数)2sin()73(42x e x x y x ⨯+-=-在[]1,0取间隔为0.1的点图,用插值进行实验。

使用MATLAB 软件 程序代码如下: %产生原始数据 x=0:0.1:1;y=(x.^2-3*x+7).*exp(-4*x).*sin(2*x);%作图subplot(1,2,1);plot(x,y,x,y,'ro')%待求插值点xx=0:0.02:1;yy=interp1(x,y,xx,'spline');%作图subplot(1,2,2)plot(x,y,'ro',xx,yy,'b')运行截图图1.1 运行结果第二章AMCM91A 估计水塔水流量美国某洲的各用水管理机构要求各社区提供以每小时多少加仑计的用水率以及每天总的用水量,但许多社区并没有测量水流入或流出当地水塔的水量的设备,他们只能代之以每小时测量水塔中的水位,精度在0.5%以内,更为重要的是,无论什么时候,只要水塔中的水位下降到某一最低水位L时,水泵就启动向水塔重新充水至某一最高水位H,但也无法得到水泵的供水量的测量数据。

因此,在水泵工作时,人们容易建立水塔中的水位与水泵工作时的用水量之间的关系。

水泵每天向水塔充水一次或两次,每次约两小时。

表1 白某小镇某天的水塔水位试估计在任何时刻,甚至包括水泵正在工作期间内,水从水塔流出的流量)f,(t并估计一天的总用水量,表1中给出了某个真实小镇某一天的真实数据。

表1中给出了从第一次测量开始的以秒为单位的时刻,以及该时刻的高度单位为百分之一英尺的水塔中水位的测量值,例如,3316秒后,水塔中的水位达到31.10英尺。

水塔是一个垂直圆形柱体,高为40英尺,直径57英尺,通常当水塔的水位降至27.00英尺时水泵开始向水塔充水,而当水塔的水位升至35.50英尺时水泵停止工作。

2.1 理论分析及计算1. 水塔充水时间的确定 (1) 第一次充水时间的确定当时间t=32284秒时,水位26.97英尺,约低于最低水位27英尺,因此可作为第一次开始充水时刻。

当t=39435秒时,水塔水位35.5英尺,恰为最高水位,因此可作为第一次充水的结束时刻。

充水时间为dt =(39435-32284)/3600=1.9864小时,也接近充水时间2小时。

(2) 第二次充水时间的确定当时间t=75021秒时,水位26.97英尺,约低于最低水位27英尺,因此可作为第二次开始充水时刻。

当t=82649秒时,水泵在工作,但充水时间达到dt =(8264-7502)/3600=2.1189小时;但下一时刻t=85968时,水塔水位34.75英尺,低于最高水位35.50 英尺。

因此可将t=82649秒作为第二次充水的结束时刻,且该时刻水位为最大充水高度35.50 英尺。

2.计算各时刻塔内水的体积单位转换为1英尺=0.3048米, 1升=1/3.785411加仑 体积计算公式为4/.2h d v π=表2 不同时刻水体积表其中(1)表示第一段开始,(2) 表示第二段开始,(3) 表示第三段开始; 单位:时间(小时),水流量:加仑/小时;3.计算各时刻点的水流量(加仑/小时) 水流量公式为:dtt dv t f )()(=以上25个时刻处的水流量采用差分的方法得到,共分三段分别处理。

差分公式为:(1) 对每段前两点采用向前差分公式)(243)(121i i i i i i t t V V V t f --+-=+++(2) 对每段最后两点采用向后差分公式12134()2()i i i i i i V V V f t t t ----+=-(3) 对每段中间点采用中心差分公式)(1288)(12112i i i i i i i t t V V V V t f -+-+-=+--++得到各点水流量表表3 不同时刻水流量表其中(1)表示第一段开始,(2) 表示第二段开始,(3) 表示第三段开始: 单位:时间(小时),水流量:加仑/小时; 4.用三次样条拟合流量数据对表3中25个时刻点的流量数据采用三次样条插值得到一条光滑曲线,作为任意时刻的流量曲线,见图2.1。

图2.1 水塔流量图其中*表示数据点,实线为样条曲线5.一天总用水量计算一天流水总量计算:方法1:直接积分法:⎰==2401)332986()(加仑dt t f S 方法2:分段计算法第一次充水前用水912535148726061251=-=V (加仑)第一次充水后第二次充水前用水1628435148726777152=-=V (加仑)[22.9581,23.88]期间用水143186633976777153=-=V (加仑)第一次充水期间用水: ⎰==9542.109678.84)30326()(加仑dt t f V 第二次充水期间用水: ⎰==9581.228392.205)(31605)(加仑dt t f V[23.88,24]期间用水: ⎰==2488.236)(1524)(加仑dt t f V总共用水)(331869612加仑==∑=i i V S 两种方法结果相差%34.0121=-=S S S err 6.水泵水流量计算 第一次充水期间水塔体积增加)(1628435148726777151加仑=-=∆V充水时间:)(9864.19678.89542.101小时=-=∆t第一次充水期间水泵平均流量)/(97246)(19542.109678.811小时加仑=∆+∆=⎰t dtt f V p第二次充水期间水塔体积增加)(1628435148726777152加仑=-=∆V充水时间:)(1189.28392.209581.222小时=-=∆t第二次充水期间水泵平均流量)/(91769)(29581.228392.2022小时加仑=∆+∆=⎰t dtt f V p则整个充水期间水泵平均流量)/(945072/)(21小时加仑=+=p p p 2.2运用MATLAB 软件计算1.依据理论分析,编写程序代码。

相关主题