1、资料内容仅供您学习参考,如有不当或者侵权,请联系改正或者删除。基于Matlab的数值逼近算法仿真设计与实现摘 要: 数值计算方法是计算机及相关专业的重要基础理论之一, 是程序设计和软件开发的基础。Matlab是当前最为优秀的科学计算软件之一, 也是许多科学领域中分析、 应用和开发的基本工具。经过多年的发展, Matlab已经成为一种功能全面的软件, 几乎能够解决科学计算中的所有问题。由于其编写简单, 代码效率高, Matlab广泛应用于计算机通信、 信号处理、 数值计算等领域。Matlab是一种面向科学与工程计算的高级语言, 它提供了强大的矩阵处理和绘图功能, 给出了一个融合计算、 可视化和程
2、序设计的交互环境, 操作简便。本设计以Matlab为编程语言和开发环境, 对数值逼近算法进行编程实现, 并进行图形化描述。所有结果表明, 采用不同的逼近方法, 利用Matlab编程能够简单、 有效地实现函数逼近。关键词: Matlab; 函数逼近; 拉格朗日插值; 曲线拟合Design and Realization of numerical Approximation algorithm based on Matlab Abstract: Numerical calculation method is a basic theory of professional computer and r
3、elated, it is a basic of programming and software development. Matlab is one of the most outstanding scientific calculation software, but also is many science analysis, application and development of the basic tools.After years of development, Matlab has become fully functional software; it can solv
4、e almost all problems in scientific computing. Due to its simple preparation, high efficiency, Matlab is widely applied in the computer communication, signal processing, numerical calculation and other areas. Matlab is oriented to science and engineering calculation of high-level language; it provid
5、es strong matrix processing and drawing functions, gives a fusion calculation, visualization and the program design of the interactive environment, simple operation.The design use Matlab as programming language and development environment, the numerical approximation algorithm for programming, and a
6、 graphical description. All the results show that, using different approximation methods, the use of Matlab programming can be simple, effective realization of function approximation.Key words: Matlab, function approximation, Lagrange interpolation, curve fitting目 录第1章 绪 论1 1.1 背景1 1.1.1 Matlab的发展1
7、1.1.2 数值逼近2 1.1.3 研究意义3 1.2 论文结构3第2章 MATLAB简介4 2.1 基本功能4 2.2 基本应用5 2.3 系统结构6 2.3.1 MATLAB开发环境6 2.3.2 MATLAB数学函数库7 2.3.3 MATLAB语言7 2.3.4 MATLAB图形处理系统7 2.3.5 MATLAB应用程序接口7 2.4 特点与优势8 2.4.1 特点8 2.4.2 优势8第3章 数值逼近12 3.1 数值拟合12 3.1.1 直线拟合13 3.1.2 曲线拟合15 3.1.3 多项式拟合15 3.2 插值逼近16 3.2.1 定义与发展16 3.2.2 主要内涵16
8、3.2.3 基本类型17第4章 基于matlab的数值逼近程序设计19 4.1 分段插值19 4.1.1 定义19 4.1.2 分段插值计算20 4.1.3 基于matlab分段插值实现20 4.1.4 小结21 4.2 拉格朗日插值21 4.2.1 线性插值21 4.2.2 二次朗格拉日插值23 4.2.3 n次拉格朗日插值24 4.2.4 拉格朗日计算26 4.2.5 基于matlab的拉格朗日程序设计26 4.2.6 rung( 龙格) 现象27 4.3 三次样条插值29 4.3.1 定义29 4.3.2 三次样条插值计算30 4.3.3 基于matlab三次样条插值实现31 4.3.4
9、 小结32 4.4 拟合33 4.4.1 定义33 4.4.2 基于matlab的拟合的实现33 4.4.4 小结35 4.5各类逼近方式解决实际问题35第5章 基于matlab的数值逼近程序测试38 5.1 插值逼近程序测试38 5.2 拟合程序测试41 5.3 各种逼近应用42结 论45致 谢46参考文献47第1章 绪 论在工程分析和科学研究中, 常需要根据一些测试数据求得自变量和因变量的近似函数关系式来完成其它设计计算。这就要求用简单的函数(z)近似地代替函数厂(z), 这种近似代替称为函数逼近, 它是计算数学中最基本的概念和方法之一, 在图像处理、 逆向工程以及测试数据的处理等领域应用
10、得相当广泛。函数逼近的方法包括插值、 拟合与逼近, 这些算法能够经过C, C+以及Fortran等语言编程实现可是计算过程都比较复杂。Matlab是一种面向科学与工程计算的高级语言, 它提供了强大的矩阵处理和绘图功能, 给出了一个融合计算、 可视化和程序设计的交互环境, 操作简便。能高效求解各种复杂工程问题并实现计算结果的可视化。Matlab本身已经包含了一些插值和拟合的函数, 能够方便地实现函数逼近。另外, 基于Matlab还能够利用神经网络实现任意非线性函数的逼近。这里在介绍上述逼近算法的基础上结合实例阐述了这些方法的具体应用。1.1 背景1.1.1 Matlab的发展MATLAB是由美国
11、mathworks公司发布的主要面对科学计算、 可视化以及交互式程序设计的高科技计算环境。它将数值分析、 矩阵计算、 科学数据可视化以及非线性动态系统的建模和仿真等诸多强大功能集成在一个易于使用的视窗环境中, 为科学研究、 工程设计以及必须进行有效数值计算的众多科学领域提供了一种全面的解决方案, 并在很大程度上摆脱了传统非交互式程序设计语言( 如C、 Fortran) 的编辑模式, 代表了当今国际科学计算软件的先进水平。20世纪70年代, 美国新墨西哥大学计算机科学系主任Cleve Moler为了减轻学生编程的负担, 用FORTRAN编写了最早的MATLAB。1984年由Little、 Mol
12、er、 Steve Bangert合作成立了的MathWorks公司正式把MATLAB推向市场。到20世纪90年代, MATLAB已成为国际控制界的标准计算软件( 如表1-1) 。表1-1 matlab的发展版本建造编号发布时间MATLAB 1.0MATLAB 2MATLAB 3MATLAB 3.5MATLAB 4MATLAB 4.2cMATLAB 6.0MATLAB 6.1MATLAB 6.5MATLAB 6.5.1MATLAB 6.5.2MATLAB 7( 本设计使用) MATLAB 7.0.1MATLAB 7.0.4MATLAB 7.10MATLAB 7.11MATLAB 7.12MAT
13、LAB 7.13MATLAB 7.14没有编号没有编号没有编号没有编号没有编号R7R12R12.1R13R13SP1R13SP2R14R14SP1R14SP2R aR bR aR bR a1984198619871990199219941996-1999 - .9.4 .3.5 .9.3 .4.8 .9.1 .3.11.1.2 数值逼近有效使用数字计算机求数学问题近似解的方法与过程, 以及由相关理论构成的学科。数值计算主要研究如何利用计算机更好的解决各种数学问题, 包括连续系统离散化和离散形方程的求解, 并考虑误差、 收敛性和稳定性等问题。从数学类型分, 数值运算的研究领域包括数值逼近、 数值
14、微分和数值积分、 数值代数、 最优化方法、 常微分方程数值解法、 积分方程数值解法、 偏微分方程数值解法、 计算几何、 计算概率统计等。随着计算机的广泛应用和发展, 许多计算领域的问题, 如计算物理、 计算化学、 计算经济学等都可归结为数值计算问题。泛指数学计算问题的近似解法。狭义的理解则专指对函数的逼近,即对于给定的较广泛的函数类F中的函数=(x),从较小的子类H中寻求在某种意义下的一个近似函数h( x) , 以便于计算和处理。.切比雪夫和K.( T.W.) 外尔斯特拉斯曾于19世纪中后期做了奠基性工作。函数逼近的主要内容有, 对于某些特定的被逼近函数类F与逼近函数类H, 讨论逼近的可能性,
15、 最佳逼近的存在性、 特征、 惟一性、 误差估计以及算法等。它是现代数值分析的基本组成部分, 除自身具有独立学科分支的意义外, 还可用于构造数值积分、 求函数零点、 解微分方程和积分方程的近似方法。1.1.3 研究意义数值逼近的方法包括插值、 拟合与逼近等, 这些算法其实能够经过C, C+以及Fortran等语言编程实现不过用C, C+以及Fortran等实现语言编写相对于Matlab更为复杂从而使程序易错, 而Matlab在语言环境来说更为简单, 而且在内部程序中自带相当多得函数, 是程序的设计变得更为简单。使用Matlab对所编制的逼近程序进行绘图, 让得到的结果在图形中进行展示, 是我们
16、看到的结果更为清楚明白。1.2 论文结构本文共包括五个章节的内容, 内容安排如下: 第一章: 绪论, 本章主要介绍了论文的主要研究工作具体是什么、 研究背景概述以及简单描述文的整体结构安排。第二章: MATLAB简介, 本章主要介绍了MATLAB的基本功能与基本的应用, 而且简述了MATLAB开发环境、 语言等系统机构, 特点与优势.第三章: 数值逼近, 本章主要对数值逼近的方法进行了讲述曲线拟合, 插值逼近。第四章: 基于matlab的数值逼近程序设计, 本章首先介绍了各种插值与拟合的定义, 并对各种算法进行举例计算, 最后在本章进行了各个算法基于matlab的设计与仿真。第五章: 基于ma
17、tlab的数值逼近算法系统测试及分析, 本章主要对基于matlab的数值逼近算法的实际运行过程进行了测试。第2章 MATLAB简介MATLAB是矩阵实验室( Matrix Laboratory) 的简称, 是美国MathWorks公司出品的商业数学软件, 用于算法开发、 数据可视化、 数据分析以及数值计算的高级技术计算语言和交互式环境, 主要包括MATLAB和Simulink两大部分。2.1 基本功能MATLAB和Mathematica、 Maple并称为三大数学软件。它在数学类科技应用软件中在数值计算方面首屈一指。MATLAB能够进行矩阵运算、 绘制函数和数据、 实现算法、 创立用户界面、
18、连接其它编程语言的程序等, 主要应用于工程计算、 控制设计、 信号处理与通讯、 图像处理、 信号检测、 金融建模设计与分析等领域。 MATLAB的基本数据单位是矩阵, 它的指令表示式与数学、 工程中常见的形式十分相似, 故用MATLAB来解算问题要比用C, FORTRAN等语言完成相同的事情简捷得多, 而且MATLAB也吸收了像Maple等软件的优点, 使MATLAB成为一个强大的数学软件。在新的版本中也加入了对C,FORTRAN,C+,JAVA的支持。能够直接调用,用户也能够将自己编写的实用程序导入到MATLAB函数库中方便自己以后调用, 另外许多的MATLAB爱好者都编写了一些经典的程序,
19、 用户能够直接进行下载就能够用( 如图2-1) 。图2-1 Matlab7开发工作界面2.2 基本应用Matlab产品族能够用来进行以下各种工作: 1) 数值分析2) 数值和符号计算3) 工程与科学绘图4) 控制系统的设计与仿真5) 数字图像处理技术6) 数字信号处理技术7) 通讯系统设计与仿真8) 财务与金融工程9) 管理与调度优化计算( 运筹学) MATLAB 的应用范围非常广, 包括信号和图像处理、 通讯( 如图2-2) 、 控制系统设计、 测试和测量、 财务建模和分析以及计算生物学等众多应用领域。附加的工具箱( 单独提供的专用MATLAB 函数集) 扩展了MATLAB 环境, 以解决这
20、些应用领域内特定类型的问题。图2-2 MATLAB在通讯系统设计与仿真的应用2.3 系统结构MATLAB系统由MATAB开发环境、 MATLAB数学函数库、 MATLAB语言、 MATLAB图形处理系统和MATLAB应用程序接口( API) 五大部分构成。2.3.1 MATLAB开发环境MATLAB开发环境是一套方便用户使用的MATLAB函数和文件工具集, 其中许多工具是图形化用户接口。它是一个集成的 用户工作空间, 允许用户输入输出数据, 并提供了M文件的集成编译和调试环境, 包括MATLAB桌面、 命令窗口、 M文件编辑调试器、 MATLAB工作空间和在线帮助文档。图2-3 MATLAB开
21、发环境2.3.2 MATLAB数学函数库MATLAB数学函数库包括了大量的计算算法。从基本算法如加法、 正弦, 到复杂算法如矩阵求逆、 快速傅里叶变换等。2.3.3 MATLAB语言MATLAB语言是一种高级的基于矩阵/数组的语言, 它有程序流控制、 函数、 数据结构、 输入/输出和面向对象编程等特色。2.3.4 MATLAB图形处理系统图形处理系统使得MATLAB能方便的图形化显示向量和矩阵, 而且能对图形添加标注和打印。它包括强大的二维三维图形函数、 图像处理和动画显示等函数。2.3.5 MATLAB应用程序接口MATLAB应用程序接口( API) 是一个使MATLAB语言能与C、 For
22、tran等其它高级编程语言进行交互的函数库。该函数库的函数经过调用动态链接库( DLL) 实现与MATLAB文件的数据交换, 其主要功能包括在MATLAB中调用C和Fortran程序, 以及在MATLAB与其它应用程序间建立客户、 服务器关系。2.4 特点与优势2.4.1 特点1) 高效的数值计算及符号计算功能, 能使用户从繁杂的数学运算分析中解脱出来; 2) 具有完备的图形处理功能,实现计算结果和编程的可视化; 3) 友好的用户界面及接近数学表示式的自然化语言, 使学者易于学习和掌握; 4) 功能丰富的应用工具箱(如信号处理工具箱、 通信工具箱等) ,为用户提供了大量方便实用的处理工具。2.
23、4.2 优势1. 友好的工作平台编程环境MATLAB由一系列工具组成。这些工具方便用户使用MATLAB的函数和文件, 析。其中许多工具采用的是图形用户界面。包括MATLAB桌面和命令窗口、 历史命令窗口、 编辑器和调试器、 路径搜索和用于用户浏览帮助、 工作空间、 文件的浏览器。随着MATLAB的商业化以及软件本身的不断升级, MATLAB的用户界面也越来越精致, 更加接近Windows的标准界面, 人机交互性更强, 操作更简单。而且新版本的MATLAB提供了完整的联机查询、 帮助系统, 极大的方便了用户的使用。简单的编程环境提供了比较完备的调试系统, 程序不必经过编译就能够直接运行, 而且能
24、够及时地报告出现的错误及进行出错原因分。2. 简单易用的程序语言Matlab是一个高级的矩阵/阵列语言, 它包含控制语句、 函数、 数据结构、 输入和输出和面向对象编程特点。用户能够在命令窗口中将输入语句与执行命令同步, 也能够先编写好一个较大的复杂的应用程序( M文件) 后再一起运行。新版本的MATLAB语言是基于最为流行的C+语言基础上的, 因此语法特征与C+语言极为相似, 而且更加简单, 更加符合科技人员对数学表示式的书写格式。使之更利于非计算机专业的科技人员使用。而且这种语言可移植性好、 可拓展性极强, 这也是MATLAB能够深入到科学研究及工程计算各个领域的重要原因。3. 强大的科学
25、计算机数据处理能力MATLAB是一个包含大量计算算法的集合。其拥有600多个工程中要用到的数学运算函数, 能够方便的实现用户所需的各种计算功能。函数中所使用的算法都是科研和工程计算中的最新研究成果, 而前经过了各种优化和容错处理。在一般情况下, 能够用它来代替底层编程语言, 如C和C+ 。在计算要求相同的情况下, 使用MATLAB的编程工作量会大大减少。MATLAB的这些函数集包括从最简单最基本的函数到诸如矩阵( 如图2-4( a) ) 、 特征向量( 如图2-4( b) ) 、 快速傅立叶变换的复杂函数。函数所能解决的问题其大致包括矩阵运算和线性方程组的求解、 微分方程及偏微分方程的组的求解
26、、 符号运算、 傅立叶变换和数据的统计分析、 工程中的优化问题、 稀疏矩阵运算、 复数的各种运算、 三角函数和其它初等数学运算、 多维数组操作以及建模动态仿真等。 ( a) 矩阵乘法运算 ( b) 特征向量运算图2-4 矩阵运算与特征向量运算4. 出众的图形处理功能MATLAB自产生之日起就具有方便的数据可视化功能, 以将向量和矩阵用图形表现出来, 而且能够对图形进行标注和打印( 如图2-5) 。高层次的作图包括二维和三维的可视化、 图象处理、 动画和表示式作图。可用于科学计算和工程绘图。新版本的MATLAB对整个图形处理功能作了很大的改进和完善, 使它不但在一般数据可视化软件都具有的功能(
27、例如二维曲线和三维曲面的绘制和处理等) 方面更加完善, 而且对于一些其它软件所没有的功能( 例如图形的光照处理、 色度处理以及四维数据的表现等) , MATLAB同样表现了出众的处理能力。同时对一些特殊的可视化要求, 例如图形对话等, MATLAB也有相应的功能函数, 保证了用户不同层次的要求。另外新版本的MATLAB还着重在图形用户界面( GUI) 的制作上作了很大的改进, 对这方面有特殊要求的用户也能够得到满足。图2-5 图形处理功能5.应用广泛的模块集合工具箱MATLAB对许多专门的领域都开发了功能强大的模块集和工具箱。一般来说, 它们都是由特定领域的专家开发的, 用户能够直接使用工具箱
28、学习、 应用和评估不同的方法而不需要自己编写代码。当前, MATLAB已经把工具箱延伸到了科学研究和工程应用的诸多领域, 诸如数据采集、 数据库接口、 概率统计、 样条拟合、 优化算法、 偏微分方程求解、 神经网络、 小波分析、 信号处理、 图像处理、 系统辨识、 控制系统设计、 LMI控制、 鲁棒控制、 模型预测、 模糊逻辑、 金融分析、 地图工具、 非线性控制设计、 实时快速原型及半物理仿真、 嵌入式系统开发、 定点仿真、 DSP与通讯、 电力系统仿真等, 都在工具箱( Toolbox) 家族中有了自己的一席之地。6.实用的程序接口和发布平台新版本的MATLAB能够利用MATLAB编译器和
29、C/C+数学库和图形库, 将自己的MATLAB程序自动转换为独立于MATLAB运行的C和C+代码。允许用户编写能够和MATLAB进行交互的C或C+语言程序。另外, MATLAB网页服务程序还容许在Web应用中使用自己的MATLAB数学和图形程序。MATLAB的一个重要特色就是具有一套程序扩展系统和一组称之为工具箱的特殊应用子程序。工具箱是MATLAB函数的子程序库, 每一个工具箱都是为某一类学科专业和应用而定制的, 主要包括信号处理、 控制系统、 神经网络、 模糊逻辑、 小波分析和系统仿真等方面的应用。第3章 数值逼近实际问题中碰到的函数是各种各样的。有的表示很复杂, 有的甚至不给出数学的表示
30、式, 而只是给出了一些离散数据譬如某些点的函数值和导数值。面对这种情况, 一个很自然的想法就是构造某个简单函数作为考察的函数的近似。如果要求近似函数去给定的离散数据, 则称之为的逼近函数。泛指数学计算问题的近似解法。狭义的理解则专指对函数的逼近,即对于给定的较广泛的函数类F中的函数=(x),从较小的子类H中寻求在某种意义下的一个近似函数h( x) , 以便于计算和处理。函数逼近的主要内容有, 对于某些特定的被逼近函数类F与逼近函数类H, 讨论逼近的可能性, 最佳逼近的存在性、 特征、 惟一性、 误差估计以及算法等。它是现代数值分析的基本组成部分, 除自身具有独立学科分支的意义外, 还可用于构造
31、数值积分、 求函数零点、 解微分方程和积分方程的近似方法。3.1 数值拟合所谓拟合是指已知某函数的若干离散函数值f1,f2,fn, 经过调整该函数中若干待定系数f(1, 2,n), 使得该函数与已知点集的差别(最小二乘意义)最小。如果待定函数是线性, 就叫线性拟合或者线性回归(主要在统计中), 否则叫作非线性拟合或者非线性回归。表示式也能够是分段函数, 这种情况下叫作样条拟合。 一组观测结果的数字统计与相应数值组的吻合。形象的说,拟合就是把平面上一系列的点,用一条光滑的曲线连接起来.因为这条曲线有无数种可能,从而有各种拟合方法.拟合的曲线一般能够用函数表示.根据这个函数的不同有不同的拟合名字。
32、插值法是一种用简单函数近似代替较复杂函数的方法, 它的近似标准是在插值点处的误差为零。但有时, 我们不要求具体某些点的误差为零, 而是要求考虑整体的误差限制。对了达到这一目的, 就需要引入拟合的方法, 因此数据拟合与插值相比: ( 1) 数据拟合-不要求近似 函数过所有的数据点, 而要求它反映原函数整体的变化趋势。( 2) 插值法-在节点处取函数值。实际给出的数据, 总有观测误差的, 而所求的插值函数要经过所有的节点, 这样就会保留全部观测误差的影响, 如果不是要求近似函数过所有的数据点, 而是要求它反映原函数整的变化趋势, 那么就能够用数据拟合的方法得到更简单活用的近似函数。在前面所讨论的各
33、种插值方法中, 始假设数据点是精确的, 准确的, 不可修改的, 所要求出的插值曲线必须经过每一个数据点。但在实际工作中由于各随机因素的干扰, 所得到的数据往往不同程度存在着误差。因此, 插值方法只能适用那些误差能够忽略不记的情况, 当误差较大而不能忽略时, 又如何经过这些观测数据确定其内在的变化规律呢? 本节所介绍的曲线拟合就是解决这一问题的主要方法之一。 3.1.1 直线拟合由给定的一组测定的离散数据( ) , 求自变量和因变量的近似表示式的方法。影响因变量只有一个自变量的数据拟合方法就是直线拟合。直线拟合最常见的近似标准是最小二乘原理, 它也是流行的数据处理方法之一。直线拟合步骤如下: (
34、1) 做出给定数据的散点图( 近似一条直线) 。(2) 设拟合函数为: 然后, 这里得到的和可能不相同, 记它们的差为: 称之为误差。在原始数据给定以后, 误差只依赖于的选取, 因此, 能够把误差的大小作为衡量的选取是否优良的主要标志。最小二乘法便是确定”最佳” 参数的方法, 也就是要误差的平方和达到最小。(3) 写出误差和表示式: 要选择而使得函数最小, 能够用数学分析中求极值的方法, 即先分别对求偏导, 再使偏导等于零, 就可得到所谓的正规方程组。(4) 正规方程组: , ; 整理: (5) 求解正规方程组, 得。(6) 确定的具体表示式。例如4-4: 已知观测数据如表3-1所示, 求它的
35、拟合曲线。xi12345yi44.5688.5表3-1 观测数据解: 根据所给数据, 在直角坐标下画出数据点, 从图3-1中能够看出, 各点在一条直线附近, 故可取线性函数作为拟合曲线图3-1 坐标数据点附近做直线令将数据带入公式得, 解得。因此而得所求拟合曲线为3.1.2 曲线拟合设有一组数据对( ) 求连续变量的一个函数, 它在处误差为, 使总体误差按某种算法达到最小常见的三种准则是:( 1) 使得误差的最大的绝对值为最小, 即 ; ( 2) 使误差的绝对值和最小, 即 ; ( 3) 使误差的平方和为最小, 即 ; 由于准测( 1) 、 ( 2) 含有绝对值不便于处理, 一般采用准测( 3
36、) , 并称基于准则( 3) 来选取拟合曲线的方法, 为曲线拟合的最小二乘法。3.1.3 多项式拟合一般而言, 所求得的拟合函数能够使不同的函数, 其中最简单的是多项式, 此时称为多项式拟合, 具体定义如下: 设有给定的数据( ) , 假设其拟合函数形式为, 求系数 , 使得;取最小值称m次多项式为m次最小二乘拟合多项式(或m次最小平方逼近多项式)。特别地, 当m=1时, 称为线性最小二乘拟合。容易看出是系数的m+1元二次多项式(二次型), 因此能够用多元函数求极值的方法求其最小值和最小值。将对求偏导数得到驻点方程组: , 即将方程整理, 得到: 3.2 插值逼近3.2.1 定义与发展定义:
37、在离散数据的基础上补插连续函数, 使得这条连续曲线经过全部给定的离散数据点。插值是离散函数逼近的重要方法, 利用它可经过函数在有限个点处的取值状况, 估算出函数在其它点处的近似值。插值: 用来填充图像变换时像素之间的空隙。发展: 早在6世纪, 中国的刘焯已将等距二次插值用于天文计算。 17世纪之后, I.牛顿, J.-L.拉格朗日分别讨论了等距和非等距的一般插值公式。在近代, 插值法依然是数据处理和编制函数表的常见工具, 又是数值积分、 数值微分、 非线性方程求根和微分方程数值解法的重要基础, 许多求解计算公式都是以插值为基础导出的。3.2.2 主要内涵插值问题的提法是: 假定区间a, b上的
38、实质函数f( x) 在该区间上 n+1个互不相同点x0, x1xn 处的值是f (x0), f( xn) , 要求估算f( x) 在a, b中某点x*的值。基本思路是, 找到一个函数P(x), 在x0, x1xn 的节点上与f(x)函数值相同(有时, 甚至一阶导数值也相同), 用P(x*)的值作为函数f(x*)的近似。 其一般的做法是: 在事先选定的一个由简单函数构成的有n+1个参数C0, C1, Cn的函数类(C0, C1, Cn)中求出满足条件P( xi) =f( xi) ( i=0, 1, n) 的函数P(x), 并以P()作为f()的估值。此处f( x) 称为被插值函数, x0, x1
39、, xn称为插值结(节)点, (C0, C1, Cn)称为插值函数类, 上面等式称为插值条件, ( C0, Cn) 中满足上式的函数称为插值函数, R( x) = f( x) P( x) 称为插值余项。当估算点属于包含x0, x1xn的最小闭区间时, 相应的插值称为内插, 否则称为外插。3.2.3 基本类型1.多项式插值这是最常见的一种函数插值。在一般插值问题中, 若选取为n次多项式类, 由插值条件能够唯一确定一个n次插值多项式满足上述条件。从几何上看能够理解为: 已知平面上n+1个不同点, 要寻找一条n次多项式曲线经过这些点。插值多项式一般有两种常见的表示形式, 一个是拉格朗日插值多项式,
40、另一个是牛顿插值多项式。2. 埃尔米特插值对于函数f( x) , 常常不但知道它在一些点的函数值, 而且还知道它在这些点的导数值。这时的插值函数P( x) , 自然不但要求在这些点等于f(x) 的函数值, 而且要求P( x) 的导数在这些点也等于f( x)的导数值。这就是埃尔米特插值问题, 也称带导数的插值问题。从几何上看, 这种插值要寻求的多项式曲线不但要经过平面上的已知点组, 而且在这些点( 或者其中一部分) 与原曲线”密切”, 即它们有相同的斜率。可见埃尔米特插值多项式比起一般多项式插值有较高的光滑逼近要求。3. 分段插值与样条插值为了避免高次插值可能出现的大幅度波动现象, 在实际应用中
41、一般采用分段低次插值来提高近似程度, 比如可用分段线性插值或分段三次埃尔米特插值来逼近已知函数, 但它们的总体光滑性较差。为了克服这一缺点, 一种全局化的分段插值方法三次样条插值成为比较理想的工具。 4. 三角函数插值当被插函数是以2为周期的函数时, 一般见n阶三角多项式作为插值函数, 并经过高斯三角插值表出。5. 辛克插值在抽样信号中我们以使用辛克插值, 它能够由样品值完美地重建原始信号。著名的抽样定理表述, 对于正确的抽样信号s(t), 原始信号能够由抽样值sk进行重建, 其公式为: 这里sk代表在时间tk=t0+k*T时的抽样值, T是抽样时间, 它的倒数1/T叫做抽样频率。此公式表示,
42、 已知在规则分布的区间中的抽样值sk, 我们就能够根据辛克函数先测出抽样值, 然后将它们相加, 这样计算出任意时间t上的值。matlab中使用插值函数第4章 基于matlab的数值逼近程序设计4.1 分段插值我们用高次插值多项式是不妥当的, 从数值计算上可解释为高次插值多项式的计算会带来舍入误差的增大, 从而引起计算失真。因此, 实践上作插值时一般只用一次、 二次最多用三次插值多项式。那么如何提高插值精度呢? 采用分段插值是一种办法。分段线性插值方法在速度和误差之间取得了比较好的均很, 其插值函数具有连续性, 但在已知数据点的斜率一般不会改变, 因此不是光滑的。分段线性插值方法是matlab一
43、维插值默认的方法。4.1.1 定义设f(x)是定义在a,b上的函数, 在a,b上节点a= x0 x1x2xn-1xn=b,的函数值为 y0 , y1 ,y2 ,yn-1 ,yn,若函数j(x)满足条件(1) j(x)在区间a , b上连续;(2) j(x)在每个子区间xi , xi+1(i=0,1,2,n-1)上是次数为m的多项式;则称j(x)是f(x)在a ,b上的分段m次插值多项式, m=1称为分段线性插值;m=2称为分段抛物线插值。由定义, j(x)在每个子区间xi , xi+1(i=0,1,2,n-1)上是一次插值多项式;图4-1 分段线性插值曲线图4.1.2 分段插值计算例4-1:
44、设( -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) j(-0.96)=0.042534.1.3 基于matlab分段插值实现Matlab分段插值命令: interp1功能:一维数据插值。该命令对数据点之间计算内插值。它找出一元函数f(x)在中间点的数值。其中函数f( x) 由所给数据决定。格式: yi=interp1( x, y, xi) 其中x, y为原始数据点, xi, yi为插值点。
45、由上面的例题基于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(原曲线,分段线性插值曲线);4.1.4 小结实际上, 上面介绍的分段低次插值, 虽然具有计算简便, 收敛性有保证, 数值稳定性又好且易在计算机上实现等优点, 但它却不能保证整条曲线的光滑性, 从而不能满足某些工程技术上的要求, 从六十年代开始, 首先由于航空、 造船等工程设计的需要而发展起来的样条插值( spline)方法, 既保留了分段低次插值的各种优点, 又提高了插值函数的光滑性, 在许多领域显得越来越广泛的应用。4.2 拉格朗日插值4.2
©2010-2024 宁波自信网络信息技术有限公司 版权所有
客服电话:4008-655-100 投诉/维权电话:4009-655-100