1插值法的实际应用——信科132姓名熊玉玮摘要:插值法是计算数学中的一种重要的方法,而且计算问题可以说是现代社会各个领域普遍存在的共同问题,无论哪一行哪一业都有许多数据需要处理,插值法正在科学技术中发挥越来越大的作用.关键字:插值分段线性插值三次样条插值温度预测插值法是函数逼近的一种重要方法,是数值计算的基本课题.插值法是一个古老的话题,早在公元六世纪,刘焯就创立“等间距二次内插法公式”来计算日、月、五星的运行速度,之后,插值法就随着后来科学家的深入研究使之更加完善.插值法不仅是在算法上能够更加简便,而且在实际应用中,插值法会使很多问题由复杂变为简单从而方便解决.插值法的提出主要源于实际问题,在许多实际问题及科学研究中,因素之间往往存在着函数关系,然而,这种关系经常很难有明显的解析表达,通常只是由观察与测试得到一些离散数值,因此需要用插值方法处理,求出近似函数.在插值问题的研究工作中,对用于逼近的简单函数的类型有不同的选取.多项式或分段多项式最便于计算和使用,因而使用的也比较多。特别计算机出现后,人们更把注意力集中在利用多项式的插值方面,因为计算公式相对的易于描述和进行程序设计,其误差分析也比较简单.无论国外还是国内,科学家们对于插值法已有了很多研究。一、分段线性插值分段线性插值就是通过插值点,用折线段连接起来逼近f(x).设已知节点a=x0x1…xn=b上的函数值f0,f1,…,fn,记hk=xk+1-xk,h=maxhk,求一折线函数Ih(x)满足(1)baCxIh,)((2)Ih(xk)=fk(k=0,1,…,n)(3)Ih(x)在每个小区间[xk,xk+1]上是线性函数.则称Ih(x)为分段线性插值函数.由定义可知Ih(x)在每个小区间[xk,xk+1]上可表示为1,,1,0)(11111nkxxxfxxxxfxxxxxIkkkkkkkkkkh,,在整个区间[a,b]上定义分段线性插值函数为niiihxlfxI0)()(其中211111111,,,,0.,,1,0),(,,,,,1,0),0(,,,)(iiiiiiiiiiiiixxxbaxninixxxxxxxniixxxxxxxxl略去略去分段线性插值函数的误差估计可利用插值余项(2.23)得到))((max2)()(max1211kkxxxhxxxxxxxMxIxfkkkk或228)()(maxhMxIxfhbxa其中)(max2xfMbxa,由此可得到)()(lim0xfxIhh,在[a,b]上一致成立.故Ih(x)在[a,b]上一致收敛到f(x).二、三次样条插值定义:设在区间[a,b]上给定一组节点a=x0x1…xn=b上的函数值y0,y1,…,yn,其函数S(x)满足:(1)S(x)在每个子区间[xk-1,xk](k=1,2,…,n)上都是次数不超过3的多项式;(2)S(xk)=yk,k=0,1,…,n;(3)S(x)在[a,b]上的二阶导数连续。则称S(x)为三次样条插值函数。从定义知要求出S(x),在每个区间[xk-1,xk]上要确定4个待定系数,共有n个小区间,故应确定4n个常数,根据S(x)在[a,b]上二阶导数连续,在节点xk(k=1,2,…,n-1)处应满足连续性条件000000kkkkkkxSxSxSxSxSxS共有3n-3个条件,再加上S(x)满足插值条件S(xk)=yk,共有4n-2个条件,因此还需要2个条件才能确定S(x),通常可在区间[a,b]的端点a=x0,b=xn上各加一个条件(称为边界条件),可根据实际问题的要求给定。常见的有以下3种:(1)已知两端的一阶导数值,即nnfxSfxS,00(2)已知两端的二阶导数值,即nnfxSfxS,00其特殊情况为00nxSxS称为自然边界条件。3(3)当f(x)是以x-x0为周期的周期函数时,则要求S(x)也是周期函数,这时边界条件应满足00,00,00000nnnxSxSxSxSxSxS而此时有y0=yn,这样确定的样条函数S(x)称为周期样条函数。四、温度预测上的实际应用某班级组织一次实践活动,为了是同学了解温度的变化,在12h内,每隔1h测量一次温度,温度依次为:5,8,9,15,25,29,31,30,22,25,27,24.(单位:oC),试分别用分段线性插值、三次样条插值方法估计在3.2h,6.5h,7.1h,11.7h的温度值,每隔1/10h估计一次温度值并画出其图形.①用分段线性插值、三次样条插值方法估计在3.2h,6.5h,7.1h,11.7h的温度值应用分段差值多项式niiihxlfxI0)()(进行编程。程序如下:hours=1:12;temps=[5,8,9,15,25,29,31,30,22,25,27,24];t=interp1(hours,temps,[3.2,6.5,7.1,11.7])T=interp1(hours,temps,[3.2,6.5,7.1,11.7],'spline')结果为t=10.200030.000030.900024.9000T=9.673430.042731.175525.3820②每隔1/10h估计一次温度值并画出其图形,如图一(程序为附件1)图一4由上可以很明显的看出,由于计算机的加入,使其非常复杂的运算变得非常简单,因而计算机对计算机对插值法的作用真的很大.参考文献[1]徐萃薇编.《计算方法引论》(第二版)[M].高等教育出版社,1985:13-147页[2]张韵华、奚梅成编.《数值计算方法与算法》(第二版)[M].科学出版社,2006:10-40页[3]朱长青编著.《数值计算方法及其应用》(第二版)[M].科学教育出版社,2000:23-58页附件附件1:hours=1:12;temps=[5,8,9,15,25,29,31,30,22,25,27,24];h=1:0.1:12;t=interp1(hours,temps,h,'spline');plot(hours,temps,'+',h,t,hours,temps,'r:')xlabel('时间'),ylabel('温度')