数学建模——插值方法
数模比赛中,常常需要根据已知的函数点进行数据、模型的处理和分析
插值算法:现有的数据是极少的,不足以支撑分析的进行,需要“模拟产生”一些新的但又比较靠谱的值来满 足需求,这就是插值的作用。(根据现有的数据点,构造函数)
插值法定义
设函数y= f(x)在区间[a,b]上有定义,且已知在点a ≤x0<x1<…<xn≤ b,上的值分别为:y0,y1…,yn,
若存在简单函数P(x),使
P(xi)= yi; (i=0,1,2……,n)
则称P(x)为f(x)的插值函数,点x0,x1,…,xn称为插值节点,包含插值节点的区间|a,b]称为插值区间,求插值函数P(x)的方法称为插值法。
一般插值多项式
设有n+1个互不相同的节点(xi,yi)(i=0,1,2…n),则存在唯一的多项式:
使得
【注1】只要n+1个节点互异,满足上述插值条件的多项式是唯一存在的
【注2】如果不限制多项式的次数,插值多项式并不唯一。
拉格朗日插值法
在若干个不同的地方得到相应的观测值, 拉格朗日插值法可以找到一个多项式,其恰好在各个观测的点取到观测到的值。
拉格朗日 插值多项式:
缺点
高次插值会产生龙格现象,即在两端处波动极大,产生明显的震荡。在不熟悉曲线 运动趋势的前提下,不要轻易使用高次插值
高次插值采用方法
分段线性插值(提高插值精度)
分段二次插值
选取跟节点x最近的三个节点xi-1,xi,xi+1 进行二次插值。即在每一个区间[xi-1,xi+1]上,取:
牛顿插值法
一阶差商:
二阶差商:
k阶差商:
(xk和xk-可以不相邻)
埃尔米特(Hermite)插值
☆☆☆☆☆分段三次埃尔米特插值☆☆☆☆☆
建模常用方法
直接使用Hermite插值得到的多项式次数较高,也存在着龙格现象, 因此在实际应用中,往往使用分段三次 Hermite 插值多项式 (PCHIP)
Matlab有内置的函数(实现过程已经帮我们封装好了,会调用就行了):
1 |
|
x是已知的样本点的横坐标;
y是已知的样本点的纵坐标;
new_x是要插入处对应的横坐标
当给的数据点相当多时,不太适合用插值了,比如
数学建模——拟合
拟 合问题的目标是寻求一个函数(曲线),使得该曲线在某种准则下与所 有的数据点最为接近,即曲线拟合的最好(最小化损失函数)。
确定拟合曲线
设这些样本点为(xi,yi),i=1,2,…,n,设置的拟合曲线为y =kx +b
问题:k和b取何值时,样本点和拟合曲线最接近。
求解:使用最小二乘法
(数据点离拟合值的距离和越小越好)
求解:
评价拟合的好坏: