文档详情

数值计算3-插值和曲线拟合..doc

发布:2017-01-08约1.03万字共16页下载文档
文本预览下载声明
数值计算3-插值和曲线拟合 插值法是实用的数值方法,是函数逼近的重要方法。在生产和科学实验中,自变量x与因变量y的函数y = f(x)的关系式有时不能直接写出表达式,而只能得到函数在若干个点的函数值或导数值。当要求知道观测点之外的函数值时,需要估计函数值在该点的值。 如何根据观测点的值,构造一个比较简单的函数y=φ(x),使函数在观测点的值等于已知的数值或导数值。用简单函数y=φ(x)在点x处的值来估计未知函数y=f(x)在x点的值。寻找这样的函数φ(x),办法是很多的。φ(x)可以是一个代数多项式,或是三角多项式,也可以是有理分式;φ(x)可以是任意光滑(任意阶导数连续)的函数或是分段函数。函数类的不同,自然地有不同的逼近效果。在许多应用中,通常要用一个解析函数(一、二元函数)来描述观测数据。 根据测量数据的类型: 1.测量值是准确的,没有误差。 2.测量值与真实值有误差。 这时对应地有两种处理观测数据方法: 1.插值或曲线拟合。 2.回归分析(假定数据测量是精确时,一般用插值法,否则用曲线拟合)。 MATLAB中提供了众多的数据处理命令。有插值命令,有拟合命令,有查表命令。 一维插值  插值定义为对数据点之间函数的估值方法,这些数据点是由某些集合给定。当人们不能很快地求出所需中间点的函数值时,插值是一个有价值的工具。例如,当数据点是某些实验测量的结果或是过长的计算过程时,就有这种情况。 interp1(x,y,xi,method) x和y为既有数据的向量,其长度必须相同。 xi为要插值的数据点向量。 method插值方法,‘nearest’/‘linear’/‘cubic’/‘spline’之一, 分别为最近点插值/线性插值/分段三次Hermite插值/三次样条插值。 例 x=[1.0 2.0 3.0 4.0 5.0]; %输入变量数据x y=[11.2 16.5 20.4 26.3 30.5]; %输入变量数据y x1=2.55; %输入待插值点x y11=interp1(x,y,x1,nearest) %最近点插值方法的插值结果 y12=interp1(x,y,x1,linear) %线性插值方法的插值结果 y13=interp1(x,y,x1,cubic) %三次Hermite插值方法的插值结果 y14=interp1(x,y,x1,spline) %样条插值方法的插值结果 y11 = 20.4000 y12 = 18.6450 y13 = 18.6028 y14 = 18.4874 plot(x,y) 或许最简单插值的例子是MATLAB的作图。按缺省,MATLAB用直线连接所用的数据点以作图。这个线性插值猜测中间值落在数据点之间的直线上。当然,当数据点个数的增加和它们之间距离的减小时,线性插值就更精确。例如: x1=linspace(0, 2*pi, 60); x2=linspace(0, 2*pi, 6); plot(x1, sin(x1), x2, sin(x2), - ) xlabel( x ), ylabel( sin(x) ), title( Linear Interpolation )  上图是sin函数的两个图,一个在数据点之间用60个点,它比另一个只用6个点更光滑和更精确。 根据所作的假设,有多种插值。而且,可以在一维以上空间中进行插值。即如果有反映两个变量函数的插值,z=f(x, y),那么就可在x之间和在y之间,找出z的中间值进行插值。MATLAB在一维函数interp1和在二维函数interp2中,提供了许多的插值选择。其中的每个函数将在下面阐述。 为了说明一维插值,考虑下列问题,12小时内,一小时测量一次室外温度。数据存储在两个MATLAB变量中。 hours=1:12; % index for hour data was recorded temps=[5 8 9 15 25 29 31 30 22 25 27 24]; % recorded temperatures plot(hours, temps, hours, temps, + ) % view temperatures title( Temperat
显示全部
相似文档