一、引述

1.1 插值算法

问题如下:

已经有

插值器 估值器的区别 android_多项式

 个节点

插值器 估值器的区别 android_拟合_02

 ,其中

插值器 估值器的区别 android_插值_03

 互不相同不妨假设

插值器 估值器的区别 android_插值_04

 ,求任一插值点

插值器 估值器的区别 android_插值_05

 处的插值

插值器 估值器的区别 android_插值器 估值器的区别 android_06

.

插值器 估值器的区别 android_大数据_07

 思路:构造函数

插值器 估值器的区别 android_插值器 估值器的区别 android_08

 ,使

插值器 估值器的区别 android_大数据_09

 过所有节点,求

插值器 估值器的区别 android_插值器 估值器的区别 android_10

即可得到

插值器 估值器的区别 android_大数据_11

.

2.2 拟合算法 

二、插值算法的应用

2.1 多项式插值

2.1.1 拉格朗日插值

在数值分析中,拉格朗日插值法是以法国十八世纪数学家约瑟夫∙路易斯∙拉 格朗日命名的一种多项式插值方法。在若干个不同的地方得到相应的观测值,拉格朗日插值法可以找到一个多项式,其恰好在各个观测的点取到观测到的值。

 拉格朗日插值多项式一般形式为,

插值器 估值器的区别 android_大数据_12

其中,

插值器 估值器的区别 android_多项式_13

令 

插值器 估值器的区别 android_插值器 估值器的区别 android_14


插值器 估值器的区别 android_拟合_15

.

 从而得到拉格朗日插值多项式,

插值器 估值器的区别 android_插值器 估值器的区别 android_16

.

2.1.2 牛顿插值

插值器 估值器的区别 android_多项式_17

2.1.3 拉格朗日插值与牛顿插值的比较

比较:与拉格朗日插值法相比,牛顿插值法的计算过程具有继承性。 (牛顿插值法每次插值只和前n项 的值有关,这样每次只要在原来 的函数上添加新的项,就能够产生新的函数) 但是牛顿插值也存在龙格现象的问题。

小结:上面讲的两种插值仅仅要求插值多项式在插值节点处与被插函数有相等的函数值,而这种插值多项式却不能全面反映被插值函数的性态。 然而在许多实际问题中,不仅要求插值函数与被插值函数在所有节点处有相同的函数值,它也需要在一个或全部节点上插值多项式与被插函数有相同的低阶甚至高阶的导数值。 

2.1.4 龙格现象 

高次插值会产生龙格现象,即在两端处波动极大,产生明显的震荡。在不熟悉曲线运动趋势的前提下,不要轻易使用高次插值

2.2 分段插值

为了避免龙格现象,我们一般不使用多项式插值,而是用分段插值

2.2.1 埃尔米特插值

插值器 估值器的区别 android_多项式_18

直接使用Hermite插值得到的多项式次数较高,也存在着龙格现象, 因此在实际应用中,往往使用分段三次 Hermite 插值多项式 (PCHIP)。 

2.2.2  三次样条插值

插值器 估值器的区别 android_多项式_19

小结:

  1. 插值算法一般用于插值区间内部的点的函数值的估计或短期预测估计 。
  2. 三次样条插值使用较多。

三、拟合算法的应用

3.1 拟合与插值的区别

插值问题不同,在拟合问题中不需要曲线一定经过给定的点。拟合问题的目标是寻求一个函数(曲线),使得该曲线在某种准则下与所有的数据点最为接近,即曲线拟合的最好(最小化损失函数)。

插值器 估值器的区别 android_多项式_20

3.2 最小二乘法

3.2.1 最小二乘法的几何解释

插值器 估值器的区别 android_多项式_21

注意:

  1. 第一种定义有绝对值,不容易求导,因此计算比较复杂。 所以我们往往使用第二种定义,这也正是最小二乘的思想。 
  2. 为什么不用四次方? (1)避免极端数据对拟合曲线的影响。 (2)最小二乘法得到的结果和MLE极大似然估计一致。
  3. 为什么不用奇数次方?误差会正负相抵。

 3.2.2 最小二乘法的求解

插值器 估值器的区别 android_多项式_22

3.3 拟合好坏的评价标准

3.3.1 拟合优度

插值器 估值器的区别 android_大数据_23

插值器 估值器的区别 android_插值_24

 注意:

插值器 估值器的区别 android_大数据_23

只能用于拟合函数是

线性函数

时,拟合结果的评价。 线性函数和其他函数(例如复杂的指数函数)比较拟合的好坏,直接看

SSE

即可。

3.3.2 SST=SSE+SSR的证明

3.4 线性函数

3.4.1 什么是线性函数?

插值器 估值器的区别 android_拟合_26

3.4.2 如何判断线性函数? 

插值器 估值器的区别 android_插值器 估值器的区别 android_27

四、算法代码实现

//FileName:G_Insert

%% 数据插值
% 一维三次埃尔米特插值
x=-pi:pi;
y=sin(x);
new_x=-pi:0.1:pi;
new_y1=pchip(x1,y1,new_x1);
figure(1);
plot(x,y,'bo',new_x1,new_y1,'r-');

% 一维三次样条插值
new_y2=spline(x,y,new_x);
hold on
plot(new_x,new_y2,'k-');
legend('样本点','三次埃尔米特插值值','三次样条插');

% 二维插值
xx=-5:5;yy=-5:5;
zz=rand(size(xx,2),size(yy,2));
new_xx=-5:0.05:5;new_yy=-5:0.05:5;
new_zz=interp2(xx,yy,zz,new_xx,new_yy','spline');% 二维插值
mesh(new_xx,new_yy,new_zz);% mesh函数用于画三维曲面图

 //FileName:G_Fit

五、总结

小结:

  1. 插值算法要求必须经过所有样本点,而拟合算法则不必经过所有样本点只需让拟合出的曲线与样本点最为接近就行。
  2. 插值次数过高会出现龙格现象。
  3. 拟合优度只用于拟合函数是线性函数时。

疑问:

  1. 拉格朗日插值法等的原理如何证明?
  2. 拟合函数为非线性函数时用什么评价标准来评价拟合的好坏?