插值与拟合

Posted by HK on March 19, 2019

数学建模学习第4天

处理大量数据时会需要用到数据拟合、参数估计、插值等数据处理算法。插值与拟合都是根据实际中一组已知数据来构造一个能够反映数据变化规律的近似函数的方法。

基本概念

插值与拟合的方法是通过实验或测量所得的一些离散数据去确定某一类已知函数的参数或寻求某个近似函数,使所得到的近似函数与已知数据有较高的拟合精度。

如果要求这个近似函数(曲线或曲面)经过所一直的所有数据点,则称刺裂问题为插值问题。(不需要函数表达式)

  • 插值问题不一定得到近似函数的表达形式,仅通过插值方法找到未知点对应的值。
  • 数据拟合要求得到一个具体的近似函数的表达式。

相关应用

插值方法

选用不同类型的插值函数,逼近的效果就不同

  1. 最近邻算法插值
  2. 拉格朗日插值算法
  3. 双线性内插值算法
  4. 分段线性插值
  5. 三次样条插值
  6. 克里金插值
  7. 反距离权重插值算法

一维插值(y=ax++b,例如处理经纬度数据)多用方法:1、2。

二维插值(空间上:经纬度+高度):3、4、5。

地理学:6、7

拟合方法

拟合模型的组建主要是处理好观测数据的误差,使用数学表达式从数量上近似因果变量之间的关系。拟合模型的组建是通过对有关变量的观测数据的观察、分析和选择恰当的数学表达方式得到的。

  • 直线拟合
  • 曲线拟合

线性最小二乘法的思路:

等待网络加载图片···

在MATLAB上的使用

插值

一维插值函数

yi=interp1(x,y,xi,’method’)

yi为xi处的插值结果;x,y为插值节点;xi为被插值点;method插值方法。

插值方法:’nearest’最邻近插值;’linear’线性插值;’spline’三次样条插值;’cubic’立方插值;缺省时为分段线性插值。

注意:所有的插值方法都要求x是单调的,并且xi不能够超过x的范围。、

代码示例:从1点到12点的11小时内,每隔1小时测量温度:5,8,9,15,25,29,31,30,22,25,27,24。估计每隔1/10小时的温度值。

hours=1:2;
temps=[5 8 9 15 25 29 31 30 22 25 27 24];
h=1:0.1:12;
t=interp1(hours,temps,h,'spline');  
plot(hours,temps,'+',h,t,hours,temps,'r:')
xlabel('Hour'),ylabel('Degrees Celsius')

作网络节点数据的插值

z=interp(x0,y0,z0,x,y,’method’)

z为被插值点的函数;x0,y0,z0为插值节点;x,y被插值点。

插值方法:’nearest’最邻近插值;’linear’双线性插值;’spline’双三次样条插值;’cubic’立方插值;缺省时为双线性插值。

示例:做出平板表面温度帆布曲面z=f(x,y)的图形。 82|81|80|82|84 79|63|61|65|81 84|84|82|85|86

1.先在三维坐标画出原始数,画出粗糙的温度分布曲线图。

x=1:5;
y=1:3;
temps=[82 81 80 82 84;79 63 61 65 81;84 84 82 85 86];
mesh(x,y,temps)

2.画出插值后的温度分布曲面图。

xi=1:0.2:5;
yi=1:0.2:3;
zi=interp2(x,y,temps,xi',yi,'cubic');
mesh(xi,yi,zi)