插值问题详解
1.
我在具体的应用(如数学建模竞赛)中,常常需要根据已知的函数点进行数据、模型的处理和分析,而通常情况下现有的数据是极少的,不足以支撑分析的进行,这时就需要使用一些数学的方法,“模拟产生”一些新的但又比较靠谱的值来满足需求。一般来说,我可以去调用MATLAB或者Python的一些库函数来实现,这个功能就是“插值”。然而这有个非常让我苦恼的问题,我可以从手册上知道这个函数实现“三次多项式插值”,那个函数实现“样条插值”.......但究竟在什么情况下使用何种插值方法呢?若不对插值方法做深入的学习,这个疑团恐难以解开。
于是,在这个原因驱动之下,我决定对常见、常用的插值方法比较深入的学习一下。我希望读者也是基于这个原因来读这篇文章,希望我的总结能对你有所帮助。
2. 插值
简单讲,插值就是根据已知数据点(条件),来预测未知数据点值得方法。具体来说,假如你有n个已知条件,就可以求一个n-1次的插值函数P(x),使得P(x)接近未知原函数f(x),并由插值函数预测出你需要的未知点值。而又n个条件求n-1次P(x)的过程,实际上就是求n元一次线性方程组。
代数插值
代数插值就是多项式插值,即所求插值函数为多项式函数:
显然,系数a0.....an为所求。如果已知n+1个条件,需要n+1个方程组如下:
这时,便可以用待定系数求解。
一、泰勒插值
首先需要回顾泰勒多项式:
因而,泰勒插值的条件就是已知0-n阶的导数:
余项:
满足n阶可导这个条件实在是太苛刻,导致实际上泰勒插值并不常用,下面介绍拉格朗日插值与牛顿插值,这两种方法在本质上是相同的。
二、拉格朗日插值
上面引论中提到,一般来说多项式插值就是求n-1个线性方程的解,拉格朗日插值即是基于此思想。拉格朗日创造性的避开的方程组求解的复杂性,引入“基函数”这一概念,使得快速手工求解成为可能。
DEF:求作<=n 次多项式 pn(x),使满足条件pn(xi)= yi,i = 0,1,…,n.这就是所谓拉格朗日( Lagrange)插值
先以一次(线性)为例,介绍基函数方法求解,再推广到任意次多项式:
已知x0,x1;y0,y1,求P(x)= a0 + a1x,使得P(x)过这两点。则显然:
这里,与就是求解P(x)的两个基函数。
下面介绍基函数的一般形式:
对于要求的插值函数P(x),可以证明,均可以化简为以下形式:
要使得: