这虽然是给“插值”部分写的引言,但在后续数据处理中未必有这样一个小节,所以尽量顾及通用性。

   在我过去两年的科研工作中,数据处理一直是至关重要的环节,但似乎又没有受到足够的重视。学院式教学中,更多注重连续或局部连续的函数的处理,但现实世界似乎更偏爱离散。实验数据总是离散的,我们往往要从这些离散点中提取出某些函数信息,又几乎总是从插值开始。在诸如Origin、Matlab等科研软件盛行的今天,专业人员已经为我们提供了丰富的接口命令(图形或函数化)来完成许多数据处理的繁重工作,以至于大部分时候我们不需要知道其内部的实现细节。然而,在使用这样接口命令时,由于缺乏基本的了解可能会造成严重的计算误差或者其他无意的人为错误 ,这在科研中是不应该的。另一方面,学术圈流行的许多数值算法的中文教材常偏重于数理化推导,这是我所不喜欢的。我常想:为什么不能更通俗清晰一点呢?可能这些书籍的目标是作为严谨的教材,而这里,只是我整理和加工的学习资料。

  我在书写这些内容时,始终坚守一些信条。第一条准则是实用。也就说,我不是要展现数学的美感,而是要用它解决实际问题,特别是科研实验中数据的处理。换句话说,我不会给出很多数学结论的证明,但是我尝试提供能找到这些证明的资料。

  第二条准则是明晰。为什么不说得清楚一点,不仅要我的脑海中非常清晰,还应该寻找清晰的表达方式。虽然人类的知识目前在不少地方已经达到高度抽象的层次,但试图把道理讲得明晰一点是有必要的。也许,我会牺牲适当的精确度来做到这一点。

  第三条准则是与编程结合,特别是和Python结合。关于Python,我前几天写过一篇文章Why physics students and physicists need python?。因为介绍这些数值算法对于大部分科研人员来说,并不意味着自己要去编写,而是更好的运用,虽然我可能在一些算法后中给出Python实现,但还是强烈建议使用numpy、scipy等中提供的函数接口,因为他们已经被高度优化过了。

  接下来说说“插值”。常用的包括多项式插值和样条插值。多项式插值中又有Lagrange插值、Newton法,要求节点导数精确的Hermite插值,分段利用多项式插值等。样条插值中最常用的三次样条插值。当然,插值的问题也涉及到维度,这里可能只研究一维插值,二维或者三维情形有机会另外讨论。