数学建模 插值和拟合.
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数学建模中的数据处理方法 (一)插值与拟合
插值与拟合
一、插值的基本原理 二、插值的MATLAB实现 三、拟合的基本原理
四、插值与拟合的关系 五、拟合的Matlab实现
一、概述
我们经常会遇到大量的数据需要处理, 而处理数据的关键就在于这些算法,例如 数据拟合、参数估计、插值等数据处理算 法。此类问题在MATLAB中有很多现成的 函数可以调用,熟悉MATLAB,这些方法 都能游刃有余的用好。
针对的是插值节点为网格节点
用MATLAB作网格节点数据的插值
z=interp2(x0,y0,z0,x,y,’method’)
插 被插值点 插值方法 值 节 点 ‘nearest’ 最邻近插值; 要求x0,y0单调;x,y ‘linear’ 双线性插值; 可取为矩阵,或x取行向 ‘cubic’ 双三次插值; 量,y取为列向量,x,y 缺省时 双线性插值. 的值分别不能超出 x0,y0的范围.
y
近似函数 ( x )
x0
x
xn
x
4.2 MATLAB实现插值 Matlab 实现:实现插值不需要编制函 数程序,它自身提供了内部的功能函数 interp1(一维分段插值)
interp2(二维)
interp3(三维) intern(n维)
4.3.1一维插值 用MATLAB作插值计算
例1:从1点到12点的11小时内,每隔1小时测量一次温 度,测得的温度的数值依次为:5,8,9,15,25,29, 31,30,22,25,27,24.试估计(1)每隔1/10小时的 温度值;(2)估计1点30分和13的温度值。 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,'r:') xlabel('Hour'),ylabel('Degrees Celsius’)
被插值点 的函数值
例:测得平板表面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点到12点的11小时内,每隔1小时测量一次 温度,测得的温度的数值依次为:5,8,9,15,25, 29,31,30,22,25,27,24.试估计每隔1/10小 时的温度值. 解题思路:不知道描述时间与温度关系的函数f(t),仅 知道一些离散的数据点。首先求一个性质优良、便于 计算的函数 ( t ) ,作为 f(t)的近似函数,并且在已知 的数据节点上 (ti ) f (ti ) … i 1, 2
二、基本概念
在实际中,常常要处理由实验或测量所 得到的一些离散数据。插值与拟合方法就是 要通过这些数据去确定某一类已知函数的参 数或寻求某个近似函数,使所得到的近似函 数与已知数据有较高的拟合精度。 如果要求这个近似函数(曲线或曲面) 经过所已知的所有数据点,则称此类问题为 插值问题。 (不需要函数表达式)
再通过 ( t ) 求每隔1/10小时的温度值。
பைடு நூலகம்
4.1 (一维)插值问题的一般描述
设给出关于函数y= f (x)的一组函数值,
x y
x0 y0
x1 y1
… xn … yn
其中x0,x1, …xn是n+1个互不相同的点,求一个 近似函数 ( x ) ,使得 ( xi ) f ( xi ) i 0,1 …n 即要求这个近似函数经过所已知的所有数据点, 则称此类问题为插值问题。
%当数据超出插值运算范围时,可以使用外推方法插值
4.3.2二维插值 一、针对于插值节点为网格节点的二维插值
例:测得平板表面3×5网格点处的温度分别为: 82 81 80 82 84 79 63 61 65 81 84 84 82 85 86 试作出平板表面的温度分布曲面z=f(x,y)的图形.
二维插值函数: z=interp2(x0,y0,z0,x,y,’method’)
二、针对于插值节点为散乱节点的二维插值
2.以平滑数据,在 x、y方向上每隔0.2个单位的地方进行插值.
x1=1:0.2:5; y1=1:0.2:3; z1=interp2(x,y,temps,x1,y1','cubic'); mesh(x1,y1,z1) title(‘双三次插值温度分布图’)
%画出插值后的温度分布曲面图.
注:surf(xi,yi,zi) title(‘双三次插值温度分布图’) %画出插值后的温度分布曲面图.
一维插值函数: yi=interp1(x,y,xi,'method')
xi处的 插值结果 插值节点 被插值点 插值方法
注意(1)所有的插值方法 ‘nearest’ 最近邻点插值; 都要求x是单调的,并且xi不 ‘linear’分段线性插值; ‘spline’ 三次样条插值; 能够超过x的范围; ‘cubic’ 三次多项式插值; (2)interp1()并没有提供 缺省时 分段线性插值. 插值函数的表达式。
例1:从1点12点的11小时内,每隔1小时测量一次温度, 测得的温度的数值依次为:5,8,9,15,25,29,31, 30,22,25,27,24.试估计(1)每隔1/10小时的温度 值;(2)估计1点30分和13的温度值。 t=interp1(hours,temps,1.5, 'spline') t=interp1(hours,temps,13, 'spline', 'extrap')
插值与拟合
一、插值的基本原理 二、插值的MATLAB实现 三、拟合的基本原理
四、插值与拟合的关系 五、拟合的Matlab实现
一、概述
我们经常会遇到大量的数据需要处理, 而处理数据的关键就在于这些算法,例如 数据拟合、参数估计、插值等数据处理算 法。此类问题在MATLAB中有很多现成的 函数可以调用,熟悉MATLAB,这些方法 都能游刃有余的用好。
针对的是插值节点为网格节点
用MATLAB作网格节点数据的插值
z=interp2(x0,y0,z0,x,y,’method’)
插 被插值点 插值方法 值 节 点 ‘nearest’ 最邻近插值; 要求x0,y0单调;x,y ‘linear’ 双线性插值; 可取为矩阵,或x取行向 ‘cubic’ 双三次插值; 量,y取为列向量,x,y 缺省时 双线性插值. 的值分别不能超出 x0,y0的范围.
y
近似函数 ( x )
x0
x
xn
x
4.2 MATLAB实现插值 Matlab 实现:实现插值不需要编制函 数程序,它自身提供了内部的功能函数 interp1(一维分段插值)
interp2(二维)
interp3(三维) intern(n维)
4.3.1一维插值 用MATLAB作插值计算
例1:从1点到12点的11小时内,每隔1小时测量一次温 度,测得的温度的数值依次为:5,8,9,15,25,29, 31,30,22,25,27,24.试估计(1)每隔1/10小时的 温度值;(2)估计1点30分和13的温度值。 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,'r:') xlabel('Hour'),ylabel('Degrees Celsius’)
被插值点 的函数值
例:测得平板表面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点到12点的11小时内,每隔1小时测量一次 温度,测得的温度的数值依次为:5,8,9,15,25, 29,31,30,22,25,27,24.试估计每隔1/10小 时的温度值. 解题思路:不知道描述时间与温度关系的函数f(t),仅 知道一些离散的数据点。首先求一个性质优良、便于 计算的函数 ( t ) ,作为 f(t)的近似函数,并且在已知 的数据节点上 (ti ) f (ti ) … i 1, 2
二、基本概念
在实际中,常常要处理由实验或测量所 得到的一些离散数据。插值与拟合方法就是 要通过这些数据去确定某一类已知函数的参 数或寻求某个近似函数,使所得到的近似函 数与已知数据有较高的拟合精度。 如果要求这个近似函数(曲线或曲面) 经过所已知的所有数据点,则称此类问题为 插值问题。 (不需要函数表达式)
再通过 ( t ) 求每隔1/10小时的温度值。
பைடு நூலகம்
4.1 (一维)插值问题的一般描述
设给出关于函数y= f (x)的一组函数值,
x y
x0 y0
x1 y1
… xn … yn
其中x0,x1, …xn是n+1个互不相同的点,求一个 近似函数 ( x ) ,使得 ( xi ) f ( xi ) i 0,1 …n 即要求这个近似函数经过所已知的所有数据点, 则称此类问题为插值问题。
%当数据超出插值运算范围时,可以使用外推方法插值
4.3.2二维插值 一、针对于插值节点为网格节点的二维插值
例:测得平板表面3×5网格点处的温度分别为: 82 81 80 82 84 79 63 61 65 81 84 84 82 85 86 试作出平板表面的温度分布曲面z=f(x,y)的图形.
二维插值函数: z=interp2(x0,y0,z0,x,y,’method’)
二、针对于插值节点为散乱节点的二维插值
2.以平滑数据,在 x、y方向上每隔0.2个单位的地方进行插值.
x1=1:0.2:5; y1=1:0.2:3; z1=interp2(x,y,temps,x1,y1','cubic'); mesh(x1,y1,z1) title(‘双三次插值温度分布图’)
%画出插值后的温度分布曲面图.
注:surf(xi,yi,zi) title(‘双三次插值温度分布图’) %画出插值后的温度分布曲面图.
一维插值函数: yi=interp1(x,y,xi,'method')
xi处的 插值结果 插值节点 被插值点 插值方法
注意(1)所有的插值方法 ‘nearest’ 最近邻点插值; 都要求x是单调的,并且xi不 ‘linear’分段线性插值; ‘spline’ 三次样条插值; 能够超过x的范围; ‘cubic’ 三次多项式插值; (2)interp1()并没有提供 缺省时 分段线性插值. 插值函数的表达式。
例1:从1点12点的11小时内,每隔1小时测量一次温度, 测得的温度的数值依次为:5,8,9,15,25,29,31, 30,22,25,27,24.试估计(1)每隔1/10小时的温度 值;(2)估计1点30分和13的温度值。 t=interp1(hours,temps,1.5, 'spline') t=interp1(hours,temps,13, 'spline', 'extrap')