啊好像距离上次写作又过了七天,啊好像我之前计划的一周两三篇,啊辣鸡小说毁我青春,啊我是一只可怜的鸽子。
不管怎样,我又回来了,并坚定地更新着hhh。再过两三天就是我们学校数学建模选拔,再过八九天就是期末考试。所以这两天还是一样,写勤快一点儿,之后可能时不时就要断更一周了,八月十九最后一门考完后才能继续安安稳稳地写文章了。没办法,这个暑假实在是不够舒心。
好的,今天我来谈一谈插值和拟合。插值和拟合是两种不同的数值计算方法,分别又有着许多不同的插值算法和拟合算法。在我学习的《数值计算》课中,这两部分好像是讲了三四节课。因为课堂教学的时候,需要对各种算法进行严格的证明和数学推导。
限于篇幅以及个人能力的原因,本文不涉及太多的数学证明与推导(好吧,基本上不推导)。事实上许多经典的建模教材,也不怎么进行推导,主要还是着重于介绍与应用。因此想要对插值和拟合进行深入了解的同学,欢迎自学《数值计算》类课程。
插值
首先谈一谈插值。为什么需要插值呢?因为在许多的实际问题中,我们想要研究一个变量相对于另一个变量的关系,往往只能通过观测得出一组一组的值。而两个变量之间的函数关系,我们往往是难以通过某种解析式或者某种图像来表达的。也就是说,我们只有一组一组的数据,压根不晓得变量之间具体的函数关系。
这就带来了一个难题。举个例子,假设我们观测的是“离海岸距离”与“海水深度”的关系。现在我们将海岸线的位置作为0,每隔50米或者100米测量一次海水的深度,便得到了许多组数据。那现在的问题就是,如果我们想知道距离海岸线326米处的海水深度,怎么求呢?
嗯,最简单的方法就是跑到326米的位置测量一下啦。这确实是最为准确的方法。但是如果有许许多多的点都有待测量,考虑到时间以及其他成本,一个一个测量可能不太现实。因此,我们需要不同的方法来解决这类问题。即已知在之间一些点所对应的值:,我们想要求出节点之间某个位置的函数值。插值就是解决这类问题的一个合适的方法。
插值是什么呢?很简单,插值就是找到一个比较简单的函数,满足,之后使用这个函数来求得之间某个位置的函数值。也就是找一个函数来代替,作为的一个合理近似。
首先举个例子。
上图是我取出了函数中的7个点。现在假装我们不知道这是个正弦函数,我们只知道这7个点的坐标,那如何求得的函数值呢?求是求不出来的,不知道函数怎么可能求得出来,但我们可以使用插值求一个近似的解。
一种很简单的想法就是分段线性插值,即将相邻的两个点之间用直线进行连接。这种方法应该很容易理解。我们期望用简单的函数来代替,最简单的一种函数应该就是线性函数了吧。嗯,进行一下插值。