基于matlab的数值逼近仿真设计与实现_第1页
基于matlab的数值逼近仿真设计与实现_第2页
基于matlab的数值逼近仿真设计与实现_第3页
基于matlab的数值逼近仿真设计与实现_第4页
基于matlab的数值逼近仿真设计与实现_第5页
已阅读5页,还剩28页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

基于matlab的数值逼近程序设计研究意义

数值逼近的方法包括插值、拟合与逼近等,这些算法其实可以通过C,C++以及Fortran等语言编程实现.不过用C,C++以及Fortran等实现语言编写相对于Matlab更为复杂从而使程序易错,而Matlab在语言环境来说更为简单,并且在内部程序中自带相当多得函数,是程序的设计变得更为简单。使用Matlab对所编制的逼近程序进行绘图,让得到的结果在图形中进行展示,是我们看到的结果更为清楚明白。2.1分段插值

我们用高次插值多项式是不妥当的,从数值计算上可解释为高次插值多项式的计算会带来舍入误差的增大,从而引起计算失真。因此,实践上作插值时一般只用一次、二次最多用三次插值多项式。那么如何提高插值精度呢?采用分段插值是一种办法。分段线性插值方法在速度和误差之间取得了比较好的均很,其插值函数具有连续性,但在已知数据点的斜率一般不会改变,因此不是光滑的。分段线性插值方法是matlab一维插值默认的方法。定义

设f(x)是定义在[a,b]上的函数,在[a,b]上节点a=x0<x1<x2<…<xn-1<xn=b,的函数值为y0,y1,y2,…yn-1,yn,若函数(x)满足条件(1)(x)在区间[a,b]上连续;(2)(x)在每个子区[xi,xi+1](i=0,1,2,…,n-1)上是次数为m的多项式;则称(x)是f(x)在[a,b]上的分段m次插值多项式,m=1称为分段线性插值;m=2称为分段抛物线插值。由定义,(x)在每个子区间[xi,xi+1](i=0,1,2,…,n-1)上是一次插值多项式;

图2-1分段线性插值曲线图

2.1.2分段插值计算

例4-1:设

(-1≤x≤1);将[-1,1]10等份,用分段线性插值近似计算f(-0.96)。解:插值节点为xi=-1+i/5(i=0,1,…,10),h=1/5因为-0.96∈[-1,-0.8],取此区间为线性插值区间,其上的插值函数为所以f(-0.96)

(-0.96)=0.042532.1.3基于matlab分段插值实现

Matlab分段插值命令:interp1功能:一维数据插值。该命令对数据点之间计算内插值。它找出一元函数f(x)在中间点的数值。其中函数f(x)由所给数据决定。格式:yi=interp1(x,y,xi)其中x,y为原始数据点,xi,yi为插值点。由上面的例题基于matlab分段插值程序设计:(1)在工作空间建立名为example1.m的m文件。(2)在m文件中进行程序设计:%对原数据点进行定义x=[-1:0.2:1];y=(1+25*x.^2).^-1%对插值点进行定义x0=[-1:2/10:1];y0=(1+25*x0.^2).^-1y1=interp1(x,y,x0);%进行分段插值%x1=-0.96;%计算f(-0.96)%y2=(1+25*x1.^2).^-1y2=interp1(x,y,x0)figure%画出分段插值图形%plot(x0,y0,'o',x0,y1,'-b');legend('原曲线','分段线性插值曲线');2.1.4小结

实际上,上面介绍的分段低次插值,虽然具有计算简便,收敛性有保证,数值稳定性又好且易在计算机上实现等优点,但它却不能保证整条曲线的光滑性,从而不能满足某些工程技术上的要求,从六十年代开始,首先由于航空、造船等工程设计的需要而发展起来的样条插值(spline)方法,既保留了分段低次插值的各种优点,又提高了插值函数的光滑性,在许多领域显得越来越广泛的应用。2.2拉格朗日插值

2.2.1线性插值

给定两个插值点

其中

,怎样做通过这两点的一次插值函数?过两点作一条直线,这条直线就是通过这两点的一次多项式插值函数,简称线性插值(如图4-2)。图2-2拉格朗日线性插值

在初等数学中,可用两点式、点斜式或截距式构造通过两点的一条直线。下面先用待定系数法构造插值直线。设直线方程为

,将

分别代入直线方程

得:当

时,因

,所以方程组有解,而且解是唯一的。这也表明,平面上两个点,有且仅有一条直线通过。用待定系数法构造插值多项式的方法简单直观,容易看到解的存在性和惟一性,但要解一个方程组才能得到插值函数的系数,因工作量较大和不便向高阶推广,故这种构造方法通常不宜采用。当

时,若用两点式表示这条直线,则有:;这种形式称为拉格朗日插值多项式。记;,

称为插值基函数,计算

的值,易见在拉格朗日插值多项式中可将

看做两条直线

的叠加,并可看到两个插值点的作用和地位都是平等的。拉格朗日插值多项式型式免除了解方程组的计算,易于向高次插值多项式型式推广。2.2.2二次朗格拉日插值给定三个插值点

,,其中

互不相等,怎样构造函数

的二次的(抛物线)插值多项式?平面上的三个点能确定一条次曲线,如图2-3所示。2.2.3n次拉格朗日插值

给定平面上两个互不相同的插值点

,有且仅有一条通过这两点的直线;给定平面上三个互不相同的插值点

,有且仅有一条通过这三个点的二次曲线;给定平面上,个互不相同的插值点

,互不相同是指

互不相等,是否有且仅有一条不高于

次的插值多项式曲线,如果曲线存在,那么如何简单地作出这条

次插值多项式曲线?分析:

次多项式

,它完全由

个系数

决定。若曲线

通过给定平面上

个互不相同的插值点

,则

应满足

,事实上一个插值点就是一个插值条件。将

依次代入

中得到线性方程组:方程组的系数行列式是范德蒙(Vandermonde)行列式:通过求解方程组得到插值多项式

,因其计算量太大而不可取,仿照线性以及二次插值多项式的拉格朗日形式,我们可构造

次拉格朗日插值多项式。对于

个互不相同的插值节点

,由

次插值多项式的惟一性,可对每个插值节点

作出相应的

次插值基函数

。要求

的零点,因此可设

2.2.4拉格朗日计算2.2.5基于matlab的拉格朗日程序设计由于拉格朗日在matlab中没有进行函数定义,所以进行拉格朗日较其他程序的编写稍微复杂。1)在工作空间建立Folder文件夹;2)建立M文件定义lagrange函数:%%lagrange.mfunctionf=lagrange(x,fx,inx)n=length(x);m=length(inx);fori=1:mz=inx(i);s=0.0fork=1:np=1.0;forj=1:nifj~=kp=p*(z-x(j))/(x(k)-x(j));endends=s+p*fx(k);endf(i)=s;end3)建立执行m文件:x=[-2.000.001.002.00];y=[17.001.002.0017.00]x0=[-2:4/3:2];y0=lagrange(x,y,x0);x1=0.6;y1=lagrange(x,y,x1)sufigurebplot(1,2,1)plot(x,y,'o',x0,y0,'--r')legend('原曲线','三次拉格朗日插值')title('例题')2.2.6rung(龙格)现象并不是插值多项式的次数越高,插值效果就越好,精度也不一定是随次数的提高而升高,这种现象在上个世纪初由Runge发现,故称runge现象Runge现象在matlab中体现:1)建立文件名为lagrange1.m的函数functioncy=lagrange(x,y,n,cx)m=length(cx);cy=zeros(m,1);fork=1:n+1t=ones(m,1);forj=1:n+1ifj~=kt=t.*(cx-x(j))./(x(k)-x(j));endendcy=cy+y(k).*t;end2)体现runge现象:fori=1:18x=-5:10/i:5;y=1./(1+x.^2);cx=-5:0.0001:5;cy=lagrange1(x,y,i,cx');subplot(6,3,i)plot(cx,cy)axis([-5,5,-0.5,2])holdont=-5:0.0001:5;y=1./(1+t.^2);plot(t,y,'r')end2.3.4小结

鉴于高次插值不收敛又不稳定的特点,低次插值既具有收敛性又具有稳定性,因此低次值更具有实用价值,但是低次插值的光滑性较差,比如分段线性插值多项式在插值区间中仅具有连续性,在插值节点处有棱角,一阶导数不存在;分段三次Hermite插值多项式在插值区间中仅具有一阶导数即一阶光滑性但不具备二阶光滑性,不能满足某些实际应用比如汽车、轮船、飞机等的外形中流线形设计。样条是在二十世纪初期经常用于图样设计的一种富有弹性的细长条,多个样条互相弯曲连接后沿其边缘画出的曲线就是三次样条曲线。后来数学上对其进行了抽象,定义了m次样条函数,并成为数值逼近的重要研究分枝,进一步扩大了样条函数的应用范围。结

论本课题利用各类算法,以matlab为平台,设计了分段插值,三次样条,曲线拟合以及拉格朗日插值几种逼近方式,并且对几种逼近方式的优缺点进行了对比。使用matlab设计上面的几种方法可以有效快速地解决在科学研究与工程分析学上的实际问题,虽然这些算法都可以通过C,C++以及Fortran等语言编写程序实现,但是相对于matlab计算过程都比较复杂。Matlab提供了强大的矩阵处理和绘图功能,给出了一个融合计算、可视化和程序设计的交互环境,操作简便,能高效求解各种复杂工程问题并实现计算结果的可视化。Matlab本身已经包含了一些插值和拟合的函数,能够方便地实现函数逼近。本文设计的基于matlab的数值逼近主要实现了以下功能:使用拟合的方式在matlab7中实现数值逼近,其中拟合分为线性拟合和曲线拟合,本设计以曲线拟合为主。使用插值的方式在matlab7中实现数值逼近,其中采用了三种插值方式——分段插值,三次样条插值和拉格朗日插值。其中特别说明了拉格朗日高次插值的龙格现象。使用上述的两种方式进行应用,表明了基于matlab的数值逼近在科学研究与工程分析学的重要意义。上述的几种方法都是实现函数逼近的有效处理法,这里就其Matlab的实现方法进行了研究,给出了Matlab实现的源程序,并得出了仿真结果。采用Matlab进行数据处理,克服了计算机高级语言编程复杂的问题,调试方便,运行效率比较高,还能够快捷地得到图文并茂的处理结果,这在工程分析和科学研究中会越来越重要的作用。

参考文献[1]徐跃良.数值分析[M].成都:西南交通大学出版社,2005.[2]王正林,刘明.精通Matlab7[M].北京:电子工业出版杜,2006.[3]周开利,邓春晖.Matlab基础及其应用教程[M].北京:北京大学出版社,2007.[4]罗成汉,刘小山.曲线拟合法的Matlab实现[J].现代电子技术,2003,26(20):16—18.[5]王可,毛志假.基于Matlab实现最/Ix--乘曲线拟合[J].北京广播学院学报:自然科学版,2005(2):52—56.[6]陈奋策.Matlab在数据处理和数值模拟中的应用[J].福建教育学院学报,2007(1):107—110.[7]董长虹.Matlab神经网络与应用[M]北京:国防工业出版社,2005.[8]HornikK,StinchcombeM,WhiteH.MultilayerFeedfor—wardNetworksareUniversalApproximators[J].NeuralNetworks,1996(3):359—366.[9]CHUICK

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论