一.插值的定义以及概念
首先,插值和拟合的算法思路是我第一次接触到数学建模所学习到的,插值和拟合在数学建模中属于十分基本的算法。
插值是指通过已知数据点之间的信息来估计出新的数据点的值。插值方法可以是线性插值、多项式插值、样条插值等。插值方法通常用于对数据进行平滑处理或填补缺失值。同时在插值中也有多种的方法。
在将插值的方法强还是用数学讲一下一维插值的定义
已知n+1个节点(𝑥𝑖,𝑦𝑖) (𝑖=0,1,⋯𝑛)(x_i,y_i) (i=0,1,⋯n)其中𝑥𝑖互不相同,不妨设𝑎=𝑥0<𝑥1<⋯<𝑥𝑛=𝑏,求任意一个插值点𝑥∗(≠𝑥𝑖)处的插值𝑦∗。
节点可以视为一个新的函数公式一个新的函数公式y=g(x)产生。
如下图所示
今天我先讲一维插值的方法。
二.拉格朗日插值(易于实现,但会产生震荡,对模拟未来结果产生影响)
主要原理是:通过构造一个满足通过所有已知数据点的多项式函数来估计未知数据点的值。具体步骤是首先构造拉格朗日插值多项式,然后将未知点代入多项式中计算出其值。已知函数 f(x) 在n+1个点x0,x1,…,xn处的函数值为 y0,y1,…,yn 。构造一个n次多项式函数Pn(x),使其满足:Pn(xi)=yi, i=0,1,…,n.同时解决拉格朗日插值的多项式公式, 其中为n次多项式:。
同时还有特别的,例如两点一次(线性)插值多项式:;同样三点二次亦是如此,这里也不再过多赘述。同时值得注意的是,Pn(x)的构造太过于巧妙,简单易实现,但可能产生震荡。如图所示。
三.分段线性插值(思路简单,计算量小,不会出现震荡线性,但光滑性不好,本质就是构造一个个直线进行插值)
考虑到大家应该都学过matlab所以直接上题
如果看不懂的可以先看看看matlab中的基础语法。
用matlab所画出来的就是这样的图像
将数据点之间的间隔分成若干段,并在每一段内使用线性函数来逼近未知数据点的值。这样可以在保持简单性的同时进行有效的插值,避免了复杂的高次多项式拟合。通过将插值问题分解为多个线性插值段,可以更准确地对数据点之间的关系进行逼近和估计。这种方法在实际应用中常用于处理非连续数据或者需要保持数据间平滑过渡的情况。
四.三次样条插值(构造一段一段的三次多项式曲线进行插值计算,光滑性好,无震荡现象)
和刚刚分段插值一样的题目,用三次样条插值所写
同时,在这里再写写如何用matlab来进行插值计算
ps在这里再次声明。出这个还是和上篇一样,一是供自己以后复习使用,二是真正帮助到那些小白(虽然我也是),希望能有帮助,同时也希望大佬指出问题所在。