插值与拟合

我们经常会遇到大量的数据需要处理,而处理数据的关键就在于这些算法,例如数据拟合、参数估计、插值等数据处理算法。此类问题在MATLAB中有很多现成的函数可以调用,熟悉MATLAB,这些方法都能游刃有余的用好。
数据拟合在很多赛题中有应用,与图形处理有关的问题很多与插值和拟合有关系,例如98年美国赛A题,生物组织切片的三维插值处理,94年A题逢山开路,山体海拔高度的插值计算,2003年吵的沸沸扬扬的“非典”问题也要用到数据拟合算法,观察数据的走向进行处理, 2005年的雨量预报的评价的插值计算。2001年的公交车调度拟合问题,2003年的饮酒驾车拟合问题。

小案例——地区雨量的获得


我们在不同的经纬度(有限的测试点)测出了不同的降雨量,用不同颜色的点表示,通过这些降雨量,我们要插值出一个覆盖整个空间的降雨量图。

1. 插值的基本原理

  • 在实际中,常常要处理由实验或测量所得到的一些离散数据。插值与拟合方法就是要通过这些数据去确定某一类已知函数的参数或寻求某个近似函数,使所得到的近似函数与已知数据有较高的拟合精度。 如果要求这个近似函数(曲线或曲面)经过所已知的所有数据点,则称此类问题为插值问题。 (不需要函数表达式)

2. 拟合的基本原理

如果不要求近似函数通过所有数据点,而是要求它能较好地反映数据变化规律的近似函数的方法称为数据拟合。(必须有函数表达式) 近似函数不一定(曲线或曲面)通过所有的数据点。

3. 插值和拟合的关系

1、联系
都是根据实际中一组已知数据来构造一个能够反映数据变化规律的近似函数的方法。
2、区别
插值问题不一定得到近似函数的表达形式,仅通过插值方法找到未知点对应的值。数据拟合要求得到一个具体的近似函数的表达式。

4. 插值的MATLAB实现

4.1 引言

  • 当数据量不够,需要补充,且认定已有数据可信时,通常利用函数插值方法。
  • 实际问题当中碰到的函数 f (x) 是各种各样的,有的表达式很复杂,有的甚至给不出数学的式子,只提供了一些离散数据,警如,某些点上的函数值和导数值。

4.2 插值方法

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

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

4.3 MATLAB实现插值

Matlab 实现:实现分段线性插值不需要编制函数程序,它自身提供了内部的功能函数
interp1(一维插值)
interp2(二维)
interp3(三维)
intern(n维)

一维

  • 例:从1点12点的11小时内,每隔1小时测量一次温度,测得的温度的数值依次为:5,8,9,15,25,29,31,30,22,25,27,24.试估计每隔1/10小时的温度值
hours=1:12;
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’)
  • 例 已知飞机下轮廓线上数据如下,求x每改变0.1时的y值.
二维插值

  • 例:测得平板表面3×5网格点处的温度分别为:
    82 81 80 82 84
    79 63 61 65 81
    84 84 82 85 86
  • 试作出平板表面的温度分布曲面z=f(x,y)的图形。

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)
  1. 以平滑数据,在 x、y方向上每隔0.2个单位的地方进行插值.
xi=1:0.2:5;
yi=1:0.2:3;
zi=interp2(x,y,temps,xi',yi,'cubic');
mesh(xi,yi,zi)
  • 例 在某海域测得一些点(x,y)处的水深z由下表给出,船的吃水深度为5英尺,在矩形区域(75,200)×(-50,150)里的哪些地方船要避免进入
  1. 输入插值基点数据
  2. 在矩形区域(75,200)×(-50,150)进行插值。
  3. 作海底曲面图
  4. 作出水深小于5的海域范围,即z=5的等高线.
%程序一:插值并作海底曲面图x  =[129.0  140.0  103.5  88.0  185.5  195.0  105.5 157.5  107.5  77.0  81.0  162.0  162.0  117.5 ];
y =[ 7.5  141.5  23.0  147.0  22.5  137.5  85.5      -6.5  -81  3.0  56.5  -66.5  84.0  -33.5 ];
z =[ 4  8  6  8  6  8  8  9  9  8  8  9  4  9 ];
x1=75:1:200;
y1=-50:1:150;
[x1,y1]=meshgrid(x1,y1);
z1=griddata(x,y,z,x1,y1,'v4');
meshc(x1,y1,z1)

%程序二:插值并作出水深小于5的海域范围。
x1=75:1:200;
y1=-50:1:150;
[x1,y1]=meshgrid(x1,y1);
z1=griddata(x,y,z,x1,y1,'v4');  %插值
z1(z1>=5)=nan;   %将水深大于5的置为nan,这样绘图就不会显示出来
meshc(x1,y1,z1)

5. 拟合的MATLAB实现

5.1 引言

对于情况较复杂的实际问题(因素不易化简,作用机理不详)可直接使用数据组建模,寻找简单的因果变量之间的数量关系, 从而对未知的情形作预报。这样组建的模型为拟合模型。 拟合模型的组建主要是处理好观测数据的误差,使用数学表达式从数量上近似因果变量之间的关系。拟合模型的组建是通过对有关变量的观测数据的观察、分析和选择恰当的数学表达方式得到的。

5.2 拟合模型的分类

5.2.2 曲线拟合
5.2.3 观察数据修匀

对于已给一批实测数据,由于实测方法、实验环境等一些外界因素的影响,不可避免地会产生随干扰和误差。我们自然希望根据数据分布的总趋势去剔除观察数据中的偶然误差,这就是所谓的数据修匀(或称数据平滑)问题。

  • 引例1
  • 引例2
  • 已知一组(二维)数据,即平面上 n个点(xi,yi) i=1,…,n, 寻求一个函数(曲线)y=f(x), 使 f(x) 在某种准则下与所有数据点最为接近,即曲线拟合得最好
数学方法
  • 使得最小二乘法形成的误差方程最小即可

数学建模常规算法:插值和拟合相关推荐

  1. 数学建模预备知识——插值与拟合

    插值与拟合 在实际问题中,一个函数 y = f ( x ) y=f(x) y=f(x) 往往是通过实验观测得到的,仅已知函数 f ( x ) f(x) f(x) 在某区间 [ a , b ] [a,b ...

  2. 数学建模常规算法——层次分析法

    层次分析法是将定性问题定量化处理的一种有效手段,根据不同的指标进行比对,得出最优解.层次分析法是一种定性和定量相结合的.系统化的.层次化的分析方法. 层次分析法的基本思路: 1)目标层: 2)准则层( ...

  3. 数学建模必备算法模型,全新升级!

    转眼间2019年已经过去了四分之一,近日,2019年数学建模国赛的时间也已经出来啦,确定为9月12日(周四)18时至9月15日(周日)20时. 随着各种各样的数模比赛源源不断地开展,时不时有小伙伴私聊 ...

  4. 数学建模——主成分分析算法详解Python代码

    数学建模--主成分分析算法详解Python代码 import matplotlib.pyplot as plt #加载matplotlib用于数据的可视化 from sklearn.decomposi ...

  5. 数学建模之减肥计划 matlab编程,数学建模matlab算法大全第02章整数规划.pdf

    数学建模matlab算法大全第02章整数规划 第二章 整数规划 §1 概论 1.1 定义 规划中的变量(部分或全部)限制为整数时,称为整数规划.若在线性规划模型中, 变量限制为整数,则称为整数线性规划 ...

  6. 数学建模图论算法学习总结

    数学建模图论算法学习总结 图论基本知识 B站视频: https://www.bilibili.com/video/av18374161/?p=35 https://www.bilibili.com/v ...

  7. 数学建模方法 —【06】拟合方法之curve_fit

    拟合方法--curve_fit 今天来说说curve_fit拟合方法,在前面的博文中,我也介绍了其他两种拟合方法以及拟合优度的计算,有兴趣的读者可以看看: 数学建模方法-[03]拟合优度的计算(pyt ...

  8. 数学建模–模拟退火算法

    文章目录 数学建模--智能算法 1.简介 模拟退火算法 1. 简介 2.数学建模中的模拟退火算法原理 3.模拟退火算法流程及应用 1.Metropolis采样算法 2. 退火过程实现算法 3.举个栗子 ...

  9. 【Python数学建模常用算法代码(二)之BP神经网络】

    Python数学建模常用算法代码(二) BP神经网络模型Python代码 import numpy as np import math import random import string impo ...

最新文章

  1. 26 Java GC算法 垃圾收集器、标记 -清除算法、复制算法、标记-压缩算法、分代收集算法
  2. 面试问题:Spring实现AOP的方式
  3. 自动修改linux下/etc/sysconfig/network-scripts/ifcfg-ethX网卡文件的脚本
  4. 使用pickle模块打包停用词表,加快处理文本数据的速度
  5. 关于服务器发生w32tm的ID:29,ID:47等错误
  6. matplotlib-plt.plot用法
  7. 2010年是一道坎,也是一座桥
  8. 把一个SVN项目的目录结构 导入到另外一个空白的SVN项目里
  9. validate.js的使用
  10. 适合女孩子的高颜值蓝牙耳机推荐?2020新款高人气蓝牙耳机
  11. 基于微信小程序的培训机构系统
  12. exls表格搜索快捷键_excel搜索快捷键 常用的excel快捷键有哪些
  13. 2017携程java后台开发工程师暑期实习生招聘面试经验分享
  14. 计算机一个小键盘按不出来怎么办,电脑小键盘打不出字怎么办?
  15. python ValueError: No JSON object could be decoded
  16. Unity实现动态修改模型材质球
  17. 求最大公约数和最小公倍数-python3
  18. 控制器分析-绘制伯德图
  19. 将mybatis打印的Preparing与Parameters转化为可执行sql
  20. word批量转换为html,批量Word转HTML – ConvertWordToHTML[Update: Word转换工具]

热门文章

  1. flash_image
  2. [转 ] SAP Trouble Shooting Questionnaire SAP 常见问题
  3. Mask TextSpotter: An End-to-End Trainable Neural Network for Spotting Text with Arbitrary Shapes
  4. 二维码里德所罗门算法
  5. [转载]为何 Emacs 和 Vim 被称为两大神器
  6. react-native示例demo50个
  7. 如何使用php调用打印机驱动程序,网络打印服务器怎么安装和使用?
  8. 深圳万户6年成功研发出基于微软MOSS平台OA系统,开源OA,可掌握与扩展性整合性强的OA平台...
  9. 运维自动化要点——可运维性
  10. ISO8583报文组装解析工具和定义器示例