本笔记权作为本学期数值分析学习的总结和回顾,参考教材有徐萃薇、孙绳武编的《计算方法引论》,和Timothy Sauer的《数值分析》。这一节介绍的是求解方程(主要针对非线性方程)的方法。
对于许多数值分析中的算法,我们往往关注以下几件事情:
- 算法的输入是什么,输出是什么,从输入得到输出的算法步骤是什么;
- 算法是否总能得到足够精度的输出,若否,何时能得到足够精度的输出;
- 算法是否能用足够小的代价得到足够精度的输出。
总结起来,上述三个问题导向了关于一个算法的步骤、误差和时间复杂度的讨论,这是我们在讨论算法时总要涉及的三个部分,往后也时常从这几方面来介绍一个算法。
目录
- 什么是插值
- 拉格朗日插值
- 牛顿插值
- 误差:余项表达式
- Hermite插值
什么是插值?
首先插值所要做的事情,大体上来说,就是已知n个数据点,要找一个函数,使得其图像通过所给的n个数据点。当我们在做这件事情的时候,我们实际上假设所给的n个数据点来源于一个未知的函数,而找一个函数使其通过这些数据点,其实想要做的是找一个函数逼近那个提供数据点的未知函数。因而插值是属于数值逼近的内容。
有两个角度理解这个算法:
- 当我们输入数据点而得到一个插值函数的时候,我们由有限的插值点得到了一个由无限被插值点组成的插值函数,换言之,是由有限的信息估计出了无穷的信息。所以我们自然地希望按某种方法从插值点得到的插值函数能够唯一,这样会比较简单。
- 但从另一个角度看,我们是如何得到插值点的呢?是从某一个未知的函数关系式中抽取出来的,这毫无疑问是一个压缩信息的过程:将一个含无限个点的实函数压缩成了有限个插值点。
从这里我们就可以回答,什么是插值呢?插值其实就是一个解压缩的过程,它其实是函数求值的逆过程——由值求函数。我们希望通过解压缩,来看到压缩之前的那个未知函数长什么样子。这样做的好处是,我们能用一个相较于原来的未知函数更简单的函数来替代未知函数;这样做的代价在于,我们会损失一些精度,而我们所能做的就是,尽可能地降低这个代价。
大体地解释了一下什么是插值之后,就要问:该如何插值呢?换言之,输入一串数据点,该如何得到通过它们的插值函数呢?首先我们能够知道的是,若要求得一函数
还有一个需要解决的问题是,通过n个插值点,怎样才能得到唯一的插值多项式呢?下面的主定理回答了这个问题:
首先我们可以预想到的是,n个插值节点只能产生n个方程,要想得到唯一解,多项式必然只能有最多n个待定系数,而显然的,n-1次多项式就有n个待定系数,因而我们易知,当待解多项式次数>n-1时,我们将解不出唯一的插值多项式(事实上此时方程应有无穷多解)。其次,将n个插值点代入n-1次多项式后,所产生的n阶方程的系数矩阵行列式为范德蒙行列式,这就保证了该系数矩阵行列式不为零(因为所有的n个
接下来就来具体看看,如何得到一个满足要求的插值多项式。当然,如上所说将插值点代入解n阶方程固然可以,但是这样非常麻烦,数值分析既然考虑到计算机执行的问题,就需要设计复杂度尽可能低的算法。
拉格朗日多项式插值
拉格朗日插值多项式的构造完全是从插值条件的要求出发的。插值条件要求所得插值函数经过给定的n个插值点,翻译过来就是,当
其中的
对于
牛顿插值多项式
牛顿插值多项式的思路与拉格朗日插值不同之处在于,拉格朗日插值让每一个插值横坐标
可以看到这当中有许多
首先我们先看看牛顿公式的特点。一是如上所言,牛顿插值多项式让每一个插值横坐标
然后要看看差商的性质。
许多数值分析书上都会有这么一张类似的图表,它的含义是,用n+1个函数值,两个两个地计算一阶差商,可以得到n个一阶差商;然后用这些一阶差商,两个两个地计算二阶差商,就能得到n-1个二阶差商,依次往下。而牛顿插值多项式的各项系数就是位于每列最上方的划线的这些差商。
最后,牛顿插值有一个拉格朗日插值没有的优点,就是当需要新增插值点的时候,拉格朗日插值需要将所有的基函数重新算过,而牛顿插值只需要在之前算得的插值多项式的基础上新增一项,即:
这是十分方便的。
误差:余项表达式
此处直接将误差余项式子放上来,不作推导:
其中:
(还记得刚刚有说牛顿插值多项式神似泰勒展开式吗?此处余项是否也神似泰勒余项呢?)
Hermite插值多项式
Hermite插值也叫做带指定微商值的插值,由此已经能看出它的特点:牛顿插值和拉格朗日插值的插值条件都是在给定节点取已知函数值,而Hermite插值还要求插值函数在给定节点上取已知导数值。我们将以两节点的Hermite插值为例展现如何构造Hermite插值,然后直接给出n节点的计算公式。
设给定
两节点Hermite的构造法一:
这一方法是类似于拉格朗日插值的构造方法,先构造出有如下取值的插值基函数:
然后像拉格朗日插值一样,将上述基函数做线性组合如下:
我们能看到,当我们分别考虑
先考虑
同理可得:
再考虑
同理可得:
这便求出了所有的
其中
总结一下:
两节点Hermite的构造法二(粗略):
构造法二类似于牛顿插值法,利用差商作为系数来构造多项式。首先要引入重节点的差商:
与牛顿插值法相似地,此时可以构造Hermite插值多项式如下:
证明略去。
最后要考虑一下Hermite插值多项式的误差余项。该余项如下:
由构造法二和误差余项我们就可以感觉到,Hermite插值很大程度上是将给出的n个点都分别考虑了两次,就像二阶零点其实可以看作两个零点一样,只不过是相等的零点。构造法二其实就是将
小结:首先,本章中所提到的插值方法都是多项式插值,最终会得到一个满足插值条件的多项式。其次,在本章中最关键的是两种插值多项式的构造思路:拉格朗日法和牛顿法,因为我们讨论Hermite插值时也是用相似的两种思路构造的。拉格朗日法最大的好处在于直观,它是直接由插值条件出发构造的;而牛顿法最大的好处在于易更新性,而且牛顿法的分析特征十分显著,与插值余项形式上的联系更加紧密。