基于MATLAB的数值计算一插值及曲线拟合摘 要:本文基于MATLA的数值计算功能,重点介绍了插值及曲线拟合的应用及特点.
关键词:MATLAB;数值计算;插值及曲线拟合本文从MATLAB的功能特点出发,阐述了它在数值计算中的基本要素和相关函数,以工程计算中常用到的数据插值和曲线拟合为主旨,通过三个实例,验证、分析了用MATLAB进行数据的插值和曲线拟合的合理性、可靠性和
准确性。
1插值及曲线拟合
插值与拟合是来源于实际、又广泛应用于实际的两种重要方法.随着计算机的不断发展及计算水平的提高,它们在国民经济和科学研究等方面扮演着越来越重要的角色。
1 .1插 值
插值计算在数据拟合和数据平滑等方面应用普遍。
插值计算的目的是通过离散的数据点来获得更为丰富的信息,它可以细分为一维插值和二维插值。
一维插值是在线的方向上对数值点进行插值:二维插值则可以理解为在面的方向上进行插值。
比较典型的例子就是在绘图过程中,当绘制二维曲线时,利用一维插值从少量数据中获得足够的信息进行描点;在绘制三维曲线时,则必须对两个方向的数据进行插值来获得其他点的信息。
1.2曲线拟合
很多的时候,在工程研究与计算中得到的原始数据往往只是在某些点上的离散值,它们所代表的函数关系不易得出一个容易表示的数学表达式;或者所得出的数据的函数表达式比较复杂,不易计算,这样在计算这些函数其他所需要的数值方面就带来了诸多不便.解决这个难题的方法之一就是利用一些性质相对“好”的简单函数,在某种规定和标准之下,去拟合或逼近这些“困难”函数,然后通过这些简单函数去获得所希望得到的结果。
曲线拟合根据拟合方法的不同,有参数拟合和非参数拟合。
参数拟合,曲线不通过所有点,采用最小二乘法:非参数拟合,曲线通过所有点,采用插值法。
2插值及曲线拟合应用实例
2. 1一维插值与拟合应用
一维插值是进行数据分析和曲线拟合的重要手段,interp 1函数使用多项式技术,用多项式函数拟合所提供的数据,计算目标插值点上的
插值函数值.它提供四种插值方法,即线性插值、三次样条插值、三次插值和最近邻点插值。
例如,将x定义为初识量=0,终止量0.5,数组元素为以10为底的对数分布的10个数,y=sin(x),对x,Y分别进行二阶和十二阶拟合,执行如下命令(程序)操作:
>> x=logspace(0,0.5,10);
>> y=sin(x);
>> f2=polyfit(x,y,2);
>> f12=polyfit(x,y,12);
>> y2=polyval(f2,x);
>> y12=polyval(f12,x);
>> plot(x,y,'o',x,y2,':*',x,y12,':x')
图1:拟合函数示意图
由图1可以看出,对上述函数,在自变量3取值范围内,12阶拟合较2阶拟合准确可靠,较高次数的拟合在数据点上得到相当准确的拟合点.事实上,并不是拟合的阶次越高越好,一方面,提高阶次必然会增加计算量,另一方面,与数据点吻合得很好也不能说明拟合得结果好,下例就是一个很好的佐证。
>>x=0:0.1:1;
>>y=
[0.232,0.3456,0.890,0.756,1.23,1.45,0.56,0.34,0.07,-0.02,0.67]; >>f2=polyfit(x,y,2);%2阶拟合
>>f4=polyfit(x,y,4);%4阶拟合
>>f12=polyfit(x,y,12); %12阶拟合
>>y2=polyval(f2,x);
>>y4=polyval(f4,x);
>>y12=polyval(f12,x);
>>plot(x,y,'o',x,y2,':*',x,y4,':x',x,y12,':p')
%显示拟合图结果如图所示
由图2可以看到,高阶拟合的确保证了数据点与曲线的吻合,但是其线型已近似为线性,也就是说,拟合曲线的数值特性不好,甚至从该曲线上已经难以得到数据点本身所具有的趋势.
2. 2二维插值与拟合应用
二维插值在三维图像处理和可视化方面有着很重要的应用。
MATLAB 用函数interp2进行二维插值.二维插值常见的可分为网格节点插值和散
乱数据插值,前者主要适用于数据点比较规范,即数据点落在由一些平
行直线组成的矩形网格的每个顶点上;后者多用于数据点不太规范的情
况。
下面就前者举例如下:
>>x=1:5;
>>y=1:5;
>>t=
[100,100,100,100,100;105,120,122,125,122;110,130,155,157,130;115,133,157 t =
100 100 100 100 100
105 120 122 125 122
110 130 155 157 130
115 133 157 160 140
113 132 149 154 128
>>mesh(x,y,t)
%数据值网格图结果如图4-3所示。
>>xx=1:0.1:5;
>> yy=1:0.1:5;
>>tt=interp2(x,y,t,xx,yy','cubic')
>>mesh(xx,yy,tt)
通过比较原数据(图4)和二维插值后的数据(图4)可以看出,插值
后拟合曲面的数值特性相当不错,数据点与曲面基本吻合.
3结束语
上述的实例只是从两个方面进一步佐证了MATLAB功能强大的数值计
算和数据能力,实际上,MATLAB除了上述内容外,它还求微分方程的数
值解、数据统计、数值分析和傅立叶分析等数值计算中有着广泛的应
用.利用MATLAB丰富的函数资源,使编程人员从繁琐的程序代码中解脱
出来.因此,学习和掌握它对科研工作者和工程技术人员来讲是十分重
要的。
[参考文献]
[1]苏金明,阮沈勇.MATLAB实用教程[M].北京:电子工业出版社
[2]幻王沫然. MATLAH与科学计算(第2版)仁[M].北京:电子工业出版社
[3]何光渝.计算机常用数值算法渝程序(C ++版)[M].北京:人民邮电出版社
[4]何光渝.VISUAL BASIC常用数值算法集[M].北京:科学出版社。