数学建模常规算法:插值和拟合

插值与拟合

我们经常会遇到大量的数据需要处理,而处理数据的关键就在于这些算法,例如数据拟合、参数估计、插值等数据处理算法。此类问题在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) 在某种准则下与所有数据点最为接近,即曲线拟合得最好
数学方法
  • 使得最小二乘法形成的误差方程最小即可
docker启动报错203时,这通常是由于docker与操作系统之间的兼容性问题导致的。为解决此问题,您可以按照以下步骤进行操作: 1. 首先,您需要卸载旧版本的docker,以便安装最新版本。您可以使用以下命令卸载docker: 2. 接下来,您需要更新yum工具,以确保能够获取到最新的docker版本。您可以使用以下命令更新yum: 3. 然后,您需要添加docker的仓库文件docker-ce.repo。您可以使用以下命令添加该仓库: 4. 添加完仓库后,您可以使用以下命令查看docker-ce仓库中可用的docker版本: 5. 您可以选择安装最新的docker版本。根据您查看到的版本列表,选择一个较新的版本进行安装。您可以使用以下命令安装docker: 6. 安装完成后,您可以尝试启动docker,并检查是否仍然出现错误203。 通过以上步骤,您可以解决docker启动报错203的问题,并使用最新版本的docker。希望这能对您有所帮助!<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [docker 启动容器报错及解决办法](https://blog.csdn.net/TOP__ONE/article/details/101426455)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值