【银蛇出品】数学漫谈14——关于最小二乘拟合的一些思考

前置知识:线性代数、插值、数值逼近
前言:最小二乘拟合是进行数值逼近的常用手段。本文主要考虑两个问题,其一是最小二乘拟合与插值之间的关系,其二是如何利用已知点各阶导数值的信息做最小二乘拟合。在最后还将附上针对第二个问题的Matlab代码。
关键内容:最小二乘拟合、插值、导数值

一、最小二乘拟合的范数与内积观点
假设我们已知点
选择基函数
进行拟合。按照范数的观点,我们应该寻找一个
使得达到最小,这只需令
。由于考虑的是离散点,我们按如下方式取范数:
计算可得
如果取,上式就比较简单
这也是我们通常选择2-范数构建最小二乘拟合方程的原因。
同时我们注意到,按这种取法的2-范数满足平行四边形公式,因此可以由它诱导出一种内积。事实上我们知道这种内积就应该是:
那么,可不可以直接用内积的观点看最小二乘拟合呢?这个问题实际上就是在上寻找
的投影,即
容易验证,这与基于2-范数给出的拟合方程是一致的。

二、最小二乘拟合与插值的联系
插值所做的事情可以描述为:仍假设已知个点,但给定
个简单函数
,找到其线性组合使得其刚好通过所有给定点。记
则寻找线性组合系数事实上就是求解线性方程组
当基函数选为时,系数矩阵事实上就是Vandermonde矩阵,只要所给两点横坐标不相同,那么该方程就有且只有唯一解。(若选择多项式形式的基函数,总可在此基础上通过适当的可逆变换实现,从而说明这种情况也是有且只有唯一解的。对于更一般的非多项式形式,应该需要额外验证。)
通过观察能够发现,做拟合相较于做插值,就是所给基函数的个数少于已知点的个数,这导致前边的方程组变为
系数矩阵的行数大于列数,说明这是个超定方程,一般情况下是无解的。这时可以寻求其最佳最小二乘解,在左右两边同时左乘系数矩阵的转置得
由于,上式进一步整理就成为了
这与最小二乘拟合方程完全一致。于是说明,某种意义下,最小二乘拟合是插值的最佳最小二乘解。
反过来,如果给定的基函数与已知点个数一样多,那么此时插值问题的解与其最佳最小二乘解一致,这时拟合问题可以退化为插值问题。

三、利用已知点各阶导数值的信息做最小二乘拟合
如果已知一些点导数值信息,能否在做最小二乘拟合时将它们用上呢?只要能够构造一种适当的内积,其中包含导数值信息就可以了。我们先来构造这样一个运算:
容易验证,该运算是双线性、对称、正定的(但可能是退化的,例如对于就有
),将它与我们熟知的函数内积做一线性组合:
可以验证,该运算满足内积的定义。由于其中包含了导数值信息,所以它是有可能实现我们的想法的。不过该内积是对连续函数来说的,下边直接给出其针对离散点的版本:
此时,已知点的信息也要作出相应调整:
如何验证这样构造的内积实现的拟合效果的准确性呢?前边提到过在适当情况下,拟合问题可以退化为插值问题,而对于已知某点导数信息做插值的问题,我们可以使用Hermite插值。所以我们只要用这个内积验证一道Hermite插值的例题就能证明其准确的必要性了。
例1. 已知
求其三次Hermite插值多项式。
插值问题不是我们研究的重点,略去步骤,直接给出插值的结果为:
按照前边定义的内积,构建出的拟合方程为
解得
与Hermite插值给出的结果一致。
至于该方法能否推出Hermite插值的结果,笔者没有尝试,但猜测应该是成立的,感兴趣的读者可以尝试证明。
如果已知的是更高阶导数的信息呢?通过测试,笔者给出如下形式的内积:
对于的情形,笔者进行了类似前例的测试,结果是准确的。笔者比较感兴趣的是
这个系数是从何而来的,由于时间所限,笔者无法进行进一步的论证,也将这个问题留给读者思考。

附代码(Matlab):