matlab插值与拟合问题,Matlab数据插值与拟合

《Matlab数据插值与拟合》由会员分享,可在线阅读,更多相关《Matlab数据插值与拟合(49页珍藏版)》请在人人文库网上搜索。

1、数据插值和拟合在工程实践和科学实验中,通常需要从一系列实验数据中找出自变量和原因变量的关系,一般可以用近似函数表示。 函数的生成方法取决于观测数据的要求,数据插值和拟合是两种常见的方法。 4.1 MATLAB中的插值函数4.2拉格朗日插值法4.3平均差的牛顿插值法4.4差的牛顿插值法4.5 Hermite插值4.6样条三次样条插值4.7多项式曲线拟合4.8最小二乘拟合, 4.1 MATLAB中的内插函数内插来源于函数的下一个问题:函数在某个区间定义,只知道已经得到的区间内的几个离散点的值。 希望用简单的公式来近似该区间中函数的整体记述,等于已知的离散点的值。 内插法以内插函数的形式主要有(1)。

2、代数多项式内插(2)三角多项式内插(3)有理分式内插。 代数多项式插值是最常用的插值方式,其内容也最丰富,可分为: (1)非等距节点插值、拉格朗日插值、使用平均差的牛顿插值和使用埃特金插值(2)差分的牛顿插值和高斯插值等通过向内插值添加导数而获得的Hermite (Hermite )内插值(4)段线性内插、Hermite (Hermite )段内插和样条函数内插。 内插函数的变数也可以将内插法分为一元内插值和多元内插值。 4.1.1一元插值函数、MATLAB的一元插值函数为interp1(),其功能为一元数据插值(表查找)。 该命令在对数据点之间修正计算函数f(x )中间点值的插值,该函数f(。

3、x )由所给数据决定。 一元插值函数interp1()的几种调用格式如表4-1所示。 表4-1一维插值函数interp1的语法格式是在MATLAB中的一维插值有多个算法,由interp1函数中的method指定。 MATLAB中一维插值的各种算法如表4-2所示。 表4-2一维插值法(method )、1.Linear (段线性插值法)对各小区间的xi、xi 1采用简单的线性插值法。 在时段xi,xi 1中的子内插多项式是不平滑的,因为该时段xi,xi 1整体上的内插函数定义如下:段线性内插方法具有良好的速度与误差平衡,而其内插函数是连续的,但是在已知点处的斜率通常不改变。 分段线性内插方法是M。

4、ATLAB维内插的缺省方法。 2 .样本内插值(样本内插值)和样本内插值利用分段低阶多项式来对函数进行近似。 样本函数可以给出平滑的插值曲线。 只要为插值部分的端点提供特定的导数信息,样本插值就可以满足不同的平滑需求。 三次样条是最广泛使用的样条内插,在各个子区间xi、xi 1具有二次连续导数的三次多项式,即其中具有三次多项式。 然后通过x,y (称为断点)查找三次多项式y=p(x ),它将给出的离散测量数据与每对数据(xi,yi )点之间的曲线进行近似。 通过2点(xi,yi )和(xi 1,yi 1)只能决定一条直线,但通过1点的3次多项式曲线无限多。 要使通过中间断点的3次多项式曲线具有。

5、唯一性,请添加以下连续条件和边界条件(因为3次多项式有4个系数):(1)3次多项式位于点(xi,yi )。 (2)三次多项式在点(xi,yi )上。 (3)三次多项式在点(xi,yi )上。 (4)边界条件:在表4-2的各种方法中,(1)nearest方法速度最快,占有存储器最小,但一般误差最大,插值结果最不平滑;(2)样条三次样条插值在所有插值方法中执行时间最长,其插值函数及插值函数最光滑的插值方法,占有存储器比cubic方法小,但是已知的据点不均匀分布可能会产生异常的结果。 (3)在3)cubic三次多项式插值法中,由于插值函数及其一次微分是连续的,所以其插值结果也比较平滑,运算速度比sp。

6、line法稍快,但消耗存储器最多。 在实际使用中,请根据实际需要和运算条件选择合适的算法。 在interp1中对示例4-1sin函数进行分段线性插值。 解:在MATLAB指令视窗中输入下列指令: x=0:2*pi; y=单位(x ); xx=033600.533602 *支付=中间1 (x、y、xx )。 plot(x,y,s,xx,yy )注意:在示例4-1中,使用默认的(分段线性内插的线性)对已知的七个sin函数的数据点进行内插,并且使用plot绘制内插结果。 由该图可知,段线性是连接相邻的2个已知点的线性函数插值,计算该区间内的插值点的函数值。 例4-2使用其他一维插值方法,对于以下7个。

7、离散数据点(1,3.5 )、(2,2.1 )、(3,1.3 )、(4.0.8)、(5,2.9 )。 解:在MATLAB命令窗口中输入以下命令: x=1 2 3 4 5 6 7; y=3.5 2.1 1.3 0.8 2.9 4.2 5.7。 xx=1:0.5:7; y1=互联网1 (x、y、xx、nearest ); y2=间距1 (x、y、xx、样条曲线); y3=中间1 (x、y、xx、cubic ); plot(x,y,o,xx,y1,-,xx,y2,- .xx,y 3, ),4.2拉格朗日插值法,拉格朗日插值法是基于基函数的插值方法。 功能:求出已知数据点的拉格朗日多项式的调用格式: f。

8、=Language(x,y )或f=Language(x,y,x0)。 其中x是已知数据点的x坐标向量,y是已知数据点的y坐标向量,x0是内插点的x坐标。f是所获得的拉格朗日多项式或x0处的内插。 function f=Language(x,y,x0) %已知数据点的拉格朗日多项式%已知数据点的x坐标向量:x %已知数据点的y坐标向量:y %用插值点的x坐标:x0 %求出的拉格朗日多项式或if (lef ) else disp(x和y的维数不相等! ); 返回; end %错误检测f=0.0; 我的意思是,I=13360 n,l=y (I )。 指定一个数字,其中j=13360 I-1,l=l。

9、 * (t-x (j ) )/(x (I )-x (j ) )。 结束; 指示符号(j=I 13360 n ) l=l * (t-x (j ) )/(x (I )-x (j ) )。 对%拉格朗日基函数end进行修正运算f=f l; 拉格朗日插值函数求和(f) %简化if(i=n) if(nargin=3) f=subs(f,t,x0)。 %插值点的函数值else f=collect(f ); 将%插值多项式展开为f=vpa(f,6 )。 将%插值多项式的系数变换为6比特精度的小数end end end,例4-3根据下表的数据点求出该拉格朗日插值多项式,在x=1.6时校正y的值。 解: x=1。

10、 1.2 1.8 2.5 4。 y=0. 84150.9320.97380.5985-0.7568。 f=语言(x,y ) f=1. 05427 * t-. 145485 e-1 * t2-.204917 * t3. 328112 e-1 * t 4。 一次定义平均差是典型的,其中,函数f的k次平均差被定义为Newton :牛顿内插法多项式被编程成实现使用平均差的牛顿内插法函数,其中,系数的校正计算过程在表43中; 功能:求出已知数据点的平均差形式的牛顿插值多项式的调用格式: f=Newton(x,y )或f=Newton(x,y,x0)。 其中x是已知数据点的x坐标向量,y是已知数据点的y坐。

11、标向量,x0是内插点的x坐标。f是所获得的牛顿内插法多项式或x0下的内插。function f=Newton(x,y,x0) %已知数据点的平均差形式牛顿插值多项式%已知数据点的x坐标向量:x %已知数据点的y坐标向量:y %作为插值点的x坐标:x0 %求出的平均if (length (长度c(1:n)=0.0; else disp(x和y的维数不相等! ); 返回; 结束,f=y(1); y1=0; l=1; 其中,I=13360 n-1,y1=y (j )-y (I )/(x (j ) )。 终点c (I )=y1(I1):l=l * (t-x (I ) ):f=f c (I ) * l 。

12、简单(f ); y=y1; 接口(I=n-1 )接口(nargin=3)接口(f、t、x0)。 比例f=收集(f ); 将%插值多项式展开为f=vpa(f,6 )。 end end end,例4-4根据下表的数据点求其平均差形式的牛顿插值多项式,修正x=2.0时的y的值。 解: x=1 1.2 1.8 2.5 4。 y=1 1.44 3.24 6.25 16。 f=Newton(x,y ) f=.182711 e-14-. 482154 e-14 * t1. 00000 * t2-.169177 e-14 * t3.表示后方差分的后方差分表示。 的双曲馀弦值。 为了方便,可以构成表4-4所示的。

13、差分表() 表4-4差分校正表、4.4.1向前牛顿内插和向前牛顿内插多项式可以表示为:被称为步骤,其可取值的范围为。 在MATLAB中编程实现前牛顿插值法的函数是Newtonforward。 功能:要求已知数据点的前牛顿插值法多项式调用格式: f=Newtonforward(x,y )或f=Newtonforward(x,y,x0)。 其中x是已知数据点的x坐标向量,y是已知数据点的y坐标向量,x0是内插点的x坐标。f是所获得的前向牛顿内插法多项式或x0下的内插值。 将function f=Newtonforward(x,y,x0) %已知数据点的前方差分牛顿插值多项式%已知数据点的x坐标向量。

14、:x %已知数据点的y坐标向量:y %设为插值点的x坐标:x0。 长度(x )=长度(y ) ) n=长度(x )。 c(1:n)=0.0; else disp(x和y的维数不相等! ); 返回; 结束,f=y(1); y1=0; xx=linspace(x(1),x(n ),(x(2)-x(1): if(xx=x) disp (节点之间不是等间距的! ); 返回; 一个接一个地接一个地接一个地接一个地接一个地。 端点c (I )=y1(1):l=t; 对于(k=13360 I-1 ) l=l * (t-k )。 结束; f=fc (I ) * l /真实(I )。 简单(f ); y=y1;。

15、 if (I=n-1 ) if (纳米=3) f=子母(f,t,x0-x(1)/(x(2)-。 比例f=收集(f ); f=vpa(f,6 ); end end end、4.4.2向前牛顿插值和向后牛顿插值多项式可以表示为: 称为步骤,可取值的范围为。 用MATLAB编程实现后向牛顿插值法的函数是Newtonback。 功能:要求已知数据点的前牛顿插值法多项式调用格式: f=Newtonback (x,y )或f=Newtonback (x,y,x0)。 其中x是已知数据点的x坐标向量,y是已知数据点的y坐标向量,x0是内插点的x坐标。f是所获得的前向牛顿内插法多项式或x0下的内插值。 fun。

16、ction f=Newtonback(x,y,x0) %已知数据点的后方差分牛顿插值多项式%已知数据点的x坐标向量:x %已知数据点的y坐标向量:y %作为插值点的x坐标3360x0%的if (length (x,x ) ) c(1:n)=0.0; else disp(x和y的维数不相等! ); 返回; 结束,f=y(n ); y1=0; xx=linspace(x(1),x(n ),(x(2)-x(1): if(xx=x) disp (节点之间不是等间距的! ); 返回; 一个接一个地接一个地接一个地接一个地接一个地。 终点c (I )=y1(n ); l=t; 对于(k=13360 I-1 ) l=l * (t k )。 结束; f=f c(i)*l。

你可能感兴趣的:(matlab插值与拟合问题)