第5章 matlab 多项式、插值与数据拟合
- 格式:ppt
- 大小:1.40 MB
- 文档页数:84
Matlab中数据处理和多项式插值与曲线拟合⼀、基本统计处理1、查取最⼤值MAX函数的命令格式有:[Y,I]= max (X):将max(X)返回矩阵X的各列中的最⼤元素值及其该元素的位置赋予⾏向量Y与I;当X为向量时,则Y与I为单变量。
[Y,I]=max(X,[],DIM):当DIM=1时按数组X的各列查取其最⼤的元素值及其该元素的位置赋予向量Y与I;当DIM=2时按数组X的各⾏查取其最⼤的元素值及其该元素的位置赋予向量Y与I.max(A,B):返回⼀个与A,B同维的数组,其每⼀个元素是由A,B同位置上的元素的最⼤值组成。
【例1】查找下⾯数列x的最⼤值。
x=[3 5 9 6 1 8] % 产⽣数列xx = 3 5 9 6 1 8y=max(x) % 查出数列x中的最⼤值赋予yy = 9[y,l]=max(x) % 查出数列x中的最⼤值及其该元素的位置赋予y,ly = 9l = 3【例2】分别查找下⾯3×4的⼆维数组x中各列和各⾏元素中的最⼤值。
x=[1 8 4 2;9 6 2 5;3 6 7 1] % 产⽣⼆维数组xx = 1 8 4 29 6 2 53 6 7 1y=max(x) % 查出⼆维数组x中各列元素的最⼤值产⽣赋予⾏向量yy = 9 8 7 5[y,l]=max(x) % 查出⼆维数组x中各列元素的最⼤值及其这些% 元素的⾏下标赋予y,ly = 9 8 7 5l = 2 1 3 2[y,l]=max(x,[ ],1) % 本命令的执⾏结果与上⾯命令完全相同y = 9 8 7 5l = 2 1 3 2[y,l]=max(x,[ ],2) % 由于本命令中DIM=2,故查找操作在各⾏中进⾏y = 897l = 213[y,l]=max(x) % 查出⼆维数组x中各列元素的最⼤值及其这些% 元素的⾏下标赋予y,ly = 9 8 7 5l = 2 1 3 2[y,l]=max(x,[ ],1) % 本命令的执⾏结果与上⾯命令完全相同y = 9 8 7 5l = 2 1 3 2[y,l]=max(x,[ ],2) % 由于本命令中DIM=2,故查找操作在各⾏中进⾏y = 897l = 2132、查取最⼩值MIN函数⽤来查取数据序列的最⼩值。
matlab的数据拟合与插值Matlab 的数据的分析处理-拟合与插值在数学建模过程中,常常需要确定⼀个变量依存于另⼀个或更多的变量的关系,即确定这些变量之间的函数关系。
但在实际中确定这些变量之间函数函数关系时往往没有先验的依据,只能在收集的实际数据的基础上对若⼲合乎理论的形式进⾏试验,从中选择⼀个最有可能反映实际的函数形式,这就是统计学中的拟合和回归⽅程问题。
本节我们主要介绍如何分析处理实际中得到的数据。
下⾯先看⼀个例⼦。
例1 “⼈⼝问题”是我国最⼤社会问题之⼀,估计⼈⼝数量和发展趋势是我们制定⼀系列相关政策的基础。
有⼈⼝统计年鉴,可查到我国从1949年⾄1994⼀般地,我们采⽤下⾯的分析处理⽅法:⾸先,在直⾓坐标系上作出⼈⼝数与年份的散点图象。
观察随着年份的增加⼈⼝数与年份变化关系,初步估计出他们之间的关系可近似地可看做⼀条直线。
那么我们如何把这条直线⽅程确定出来呢?并⽤他来估计1999年我国的⼈⼝数。
⽅法⼀:先选择能反映直线变化的两个点,如(1949,541.67),(1984,1034.75)⼆点确定⼀条直线,⽅程为 N = 14.088 t – 26915.842 ,代⼊t =1999,得N ≈12.46亿⽅法⼆:可以多取⼏组点对,确定⼏条直线⽅程,将t = 1999代⼊,分别求出⼈⼝数,在取其算数平值。
⽅法三:可采⽤“最⼩⼆乘法”求出直线⽅程。
这就是曲线拟合的问题。
⽅法⼀与⽅法⼆都具有⼀定的局限性,下⾯我们重点介绍数据的曲线拟合。
所谓曲线拟合是指给定平⾯上的n 个点(x i ,y i ),i=1,2,….,n,找出⼀条曲线使之与这些点相当吻合,这个过程称之为曲线拟合。
最常见的曲线拟合是使⽤多项式来作拟合曲线。
曲线拟合最常⽤的⽅法是最⼩⼆乘法。
其原理是求f(x),使21])([i ni i y x f -=∑=δ达到最⼩。
matlab 提供了基本的多项式曲线拟合函数命令polyfit格式::polyfit(x,y,n)说明:polyfit(x,y,n)是找n 次多项式p(x)的系数,这些系数满⾜在最⼩⼆乘法意义下p(x(i)) ~= y(i).已知⼀组数据,⽤什么样的曲线拟合最好呢?可以根据散点图进⾏直观观察,在此基础上,选择⼏种曲线分别拟合,然后⽐较,观察那条曲线的最⼩⼆乘指标最⼩。
13. 数据插值与拟合实际中,通常需要处理实验或测量得到的离散数据(点)。
插值与拟合方法就是要通过离散数据去确定一个近似函数(曲线或曲面),使其与已知数据有较高的拟合精度。
1.如果要求近似函数经过所已知的所有数据点,此时称为插值问题(不需要函数表达式)。
2.如果不要求近似函数经过所有数据点,而是要求它能较好地反映数据变化规律,称为数据拟合(必须有函数表达式)。
插值与拟合都是根据实际中一组已知数据来构造一个能够反映数据变化规律的近似函数。
区别是:【插值】不一定得到近似函数的表达形式,仅通过插值方法找到未知点对应的值。
【拟合】要求得到一个具体的近似函数的表达式。
因此,当数据量不够,但已知已有数据可信,需要补充数据,此时用【插值】。
当数据基本够用,需要寻找因果变量之间的数量关系(推断出表达式),进而对未知的情形作预测,此时用【拟合】。
一、数据插值根据选用不同类型的插值函数,逼近的效果就不同,一般有:(1)拉格朗日插值(lagrange插值)(2)分段线性插值(3)Hermite(4)三次样条插值Matlab 插值函数实现:(1)interp1( ) 一维插值(2)intep2( ) 二维插值(3)interp3( ) 三维插值(4)intern( ) n维插值1.一维插值(自变量是1维数据)语法:yi = interp1(x0, y0, xi, ‘method’)其中,x0, y0为原离散数据(x0为自变量,y0为因变量);xi为需要插值的节点,method为插值方法。
注:(1)要求x0是单调的,xi不超过x0的范围;(2)插值方法有‘nearest’——最邻近插值;‘linear’——线性插值;‘spline’——三次样条插值;‘cubic’——三次插值;默认为分段线性插值。
例1 从1点12点的11小时内,每隔1小时测量一次温度,测得的温度的数值依次为:5,8,9,15,25,29,31,30,22,25,27,24.试估计每隔1/10小时的温度值。
matlab插值与拟合
在MATLAB中,插值和拟合都是通过函数来实现的。
插值是通过创建新的数据点来填充在已知数据点之间的空白。
MATLAB提供了几种不同的插值方法,例如分段线性插值、三次样条插值、立方插值等。
具体使用哪种插值方法取决于数据的特性和所需的精度。
插值函数的一般形式是`interp1(x, y, xi, 'method')`,其中`x`和`y`是已知的数据点,`xi`是待插值点的横坐标向量,`method`是插值方法,例如最近邻点插值、线性插值、三次样条插值、立方插值等。
拟合是通过调整一个数学模型来使得该模型尽可能地接近给定的数据点。
在MATLAB中,可以使用`polyfit`函数进行多项式拟合。
该函数的一般形式是`p = polyfit(x, y, n)`,其中`x`和`y`是已知的数据点,`n`是多项式的阶数。
该函数返回一个向量`p`,表示多项式的系数。
可以使用`polyval`函数来评估这个多项式模型在给定数据点上的值。
需要注意的是,插值和拟合都是数学上的近似方法,它们只能尽可能地逼近真实的情况,而不能完全准确地描述数据的变化。
因此,选择合适的插值和拟合方法是非常重要的。
目录【一维插值】interp1 (1)yi = interp1(x,y,xi,method) (1)例1 (1)例2 (2)【二维插值】interp2 (4)ZI = interp2(X,Y,Z,XI,YI,method) (4)插值方式比较示例 (4)例3 (8)例4 (9)【三角测量和分散数据插值】 (13)【数据拟合】 (17)例5 (17)例6 (18)【一维插值】interp1yi = interp1(x,y,xi,method)例1在1-12 的11 小时内,每隔1 小时测量一次温度,测得的温度依次为:5,8,9,15,25,29,31,30,22,25,27,24。
试估计每隔1/10 小时的温度值。
建立M文件temp.mhours=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,'kp',h,t,'b');35302520151050 2 4 6 8 10 12例2已知飞机下轮廓线上数据如下,求x每改变0.1时的y值。
X0357911 12131415 Y0 1.2 1.7 2.0 2.1 2.0 1.8 1.2 1.0 1.6建立M文件plane.mx0=[0 3 5 7 9 11 12 13 14 15 ];y0=[0 1.2 1.7 2.0 2.1 2.0 1.8 1.2 1.0 1.6 ];x=0:0.1:15;y1=interp1(x0,y0,x,'nearest');y2=interp1(x0,y0,x);y3=interp1(x0,y0,x,'spline');plot(x0,y0,'kp',x,y1,'r')2.521.510.50 5 10 15 plot(x0,y0,'kp',x,y2,'r')2.521.510.50 5 10 15 plot(x0,y0,'kp',x,y3,'r')2.521.510.50 5 10 15 【二维插值】interp2ZI = interp2(X,Y,Z,XI,YI,method)插值方式比较示例用较大间隔产生peaks 函数数据点[x,y] = meshgrid(-3:1:3);z = peaks(x,y);surf(x,y,z)642-2-4-642 40 2-2 -2-4 -4●产生一个较好的网格[xi,yi] = meshgrid(-3:0.25:3);●利用最近邻方式插值zi1 = interp2(x,y,z,xi,yi,'nearest');surf(xi,yi,zi1)●双线性插值方式zi2 = interp2(x,y,z,xi,yi,'bilinear');surf(xi,yi,zi2)●双立方插值方式zi3 = interp2(x,y,z,xi,yi,'bicubic');surf(xi,yi,zi3)●不同插值方式构造的等高线图对比contour(xi,yi,zi1)321-1-2-3-3 -2 -1 0 1 2 3 contour(xi,yi,zi2)321-1-2-3-3 -2 -1 0 1 2 3 contour(xi,yi,zi3)321-1-2-3-3 -2 -1 0 1 2 3例3测得平板表面3*5 网格点处的温度分别为:82 81 80 82 8479 63 61 65 8184 84 82 85 86试作出平板表面的温度分布曲面z=f(x,y)的图形。
计算可视化
1 插值与数据拟合 1.1 一维数据的插值问题 1.1.1 一维插值问题的求解
例1-1:已知的数据点来自函数25f ()(35)sin x x x x e x -=-+,根据生成的数据进行插值处理,得出较平滑的曲线直接生成数据。
例1-2:编写一段程序,允许利用插值方法手工绘制一条光滑的曲线。
1.1.2 Lagrange插值算法及应用
例1-3:对2()1/(125),11f x x x =+-≤≤进行Lagrange 插值。
1.2 已知样本点的定积分计算
例1-4:利用样条插值算法求解3/2
cos(15)x dx π⎰。
例1-5:已知其中的150个数据点,用quadspln()计算出该定积分的值
2
()x
t erf x e dt -=
⎰。
1.3 二维网格数据的插值问题
例1-6:由2
22(,)(2)x
y xy
z f x y x x e ---==-可计算出一些较稀疏的网格数据,对整
1.4 二维一般分布数据的插值问题1.5 高维插值问题。
Matlab中的插值与拟合技术在科学研究和工程领域中,数据的插值和拟合技术在数值计算和数据处理中具有重要意义。
Matlab作为一款强大的科学计算软件,提供了丰富的插值和拟合函数和工具箱,能够满足不同场景下的需求。
插值是一种通过已知数据点构建新数据点的技术。
在实际问题中,我们经常会遇到仅有少量已知数据点,但需要了解未知数据点的情况。
插值技术就可以帮助我们填补数据之间的空缺,以便更好地分析和理解数据。
Matlab中提供了多种插值函数,包括线性插值、多项式插值、样条插值等。
这些函数能够根据已知数据点的特征,推测出未知数据点的可能取值。
通过合理选择插值方法和参数,我们可以得到较为准确的结果。
以线性插值为例,其原理是根据已知数据点的直线特征,推测出未知数据点的取值。
在Matlab中,我们可以使用interp1函数实现线性插值。
该函数的基本用法是给定一组x和对应的y值,以及待插值的点xq,函数将计算出对应的插值点yq。
通过指定xq的形式,我们可以实现不仅仅是单个点的插值,还可以实现多点插值和插值曲线绘制。
这种灵活性使得插值操作更加方便快捷。
拟合技术则是通过一定数学函数的近似表示,来描述已知数据的特征。
它可以帮助我们找到数据背后的规律和趋势,从而更好地预测未知数据。
在Matlab中,拟合问题可以通过polyfit和polyval函数来解决。
polyfit函数可以根据一组已知数据点,拟合出最优的多项式曲线。
该函数的输入参数包括x和y,代表已知数据的横纵坐标值;以及n,代表拟合的多项式次数。
polyfit函数将返回拟合得到的多项式系数。
通过polyval函数,我们可以使用这些系数来求解拟合曲线的纵坐标值。
这样,我们就能够利用拟合曲线来预测未知数据点。
插值和拟合技术在实际问题中都有广泛的应用,尤其在数据处理和信号处理方面。
例如,当我们在实验中测量一组数据时,可能会存在测量误差或者数据缺失的情况。
此时,通过插值技术我们可以填补数据之间的空白,并得到一个更加完整的数据集。