1、 毕业论文文献综述 信息与计算科学 求解非线性方程组和最优化的 MATLAB GUI 设计 一、前言部分 MATLAB 是一种数值计算环境和编程语言,主要包括 MATLAB 和 Simulink 两大部分。 MATLAB 基于矩阵运算, 具有强大的数值分析、矩阵计算、信号处理和图形显示功能,其强大的数据处理能力和丰富的工具箱使得它的编程极为简单。 MATLAB 既能进行科学计算,又能开发出所需要的图形界面。 图形用户界面( GUI)是由窗口、光标、按键、菜单、文字说明等对象( Objects)构成的一个用户界面。用户通过一定的方法选择、激活这些图形对象,是计算机产生某种动作或变化,比如实现计算
2、、绘图等。 1 人类为了认识自然与改造自然,需要不断地对自然界的各种现象进行测量和研究,由于实验方法和实验设备的不完善,周遭环境的影响,以及受人们认识能力所限等,测量和实验所得数据和被测量的真值之间,不可避免地存在着差异,这在数值上即表现为误差。同时在计算中,总是用近似值代替真值进行计算,这也会产生误差。为了充分认识并尽量减小或消除误差,必须对测量过程和科学实验中始终存在的误差进行研究。 2研究误差就要研究误差的来源、分类、基本概念和误差的传播。而在研究误差时,要进行一些复杂的计算,同时怎样形象的表示误差又是一个问题,所以运用 MATLAB 的计算能力和 MATLAB GUI 的图形显示功能就
3、能给研究误差带来很大的方便。 二、主题部分 2.1 MATLAB 软件介绍 2.1.1 MATLAB 软件概况 3、 4 MATLAB 是矩阵实验室( Matrix Laboratory)之意。除具备卓越的数值计算能力外,它还提供了专业水平的符号计算,文字处理,可视化建模仿真和实时控制等功能。 MATLAB的基本数据单位 是矩阵,它的指令表达式与数学 ,工程中常用的形式十分相似 ,故用 MATLAB来解算问题要比用 C,FORTRAN 等 语 言 完 相 同 的 事 情 简 捷 得 多 . 当前流行的MATLAB 5.3/Simulink 3.0 包括拥有数百个内部函数的主包和三十几种工具包
4、(Toolbox).工具包又可以分为功能性工具包和学科工具包 .功能工具包用来扩充 MATLAB 的符号计算 ,可视化建模仿真 ,文字处理及实时控制等功能 .学科工具包是专业性比较强的工具包 ,控制工具包 ,信号处理工具包 ,通信工具包等都属于此类 . 开放性使 MATLAB 广受用户欢迎 .除内部函数外 ,所有 MATLAB 主包文件和各种工具包都是可读可修改的文件 ,用户通过对源程序的修改或加入自己编写程序构造新的专用工具包 . “ MATLAB” 是“ Matrix Laboratory” 的缩写。MATLAB 的第一个版本是 LINPACK 和 EISPACK 库的程序的一个接口,用来
5、分析线性方程组。随着 MATLAB 的演化,除了线性代数外,它还支持许多其他的程序。 MATLAB 的核心仍然是基于命令行的交互式分析工具。用户可以用类 Fortran 语言扩展交互环境。交互环境中的程序以命令行的形式执行。 MATLAB 用户接口 包括下拉菜单和对话框,任何个人电脑使用者对这一接口都很熟悉。菜单命令支持文件操作、打印、程序编辑和用户接口定制。 MATLAB 的数值计算是通过在命令窗口输入命令,并不是通过菜单操作进行的。 MATLAB 是一个基本的应用程序,它有一个称为标准工具箱的巨大程序模块库。 MATLAB工具箱包括解决实际问题的扩展库,如:求根、插值、数值积分、线性和非线
6、性方程组求解以及常微分方程组求解。由于继承了 LINPACK、 EISPACK 和 LAPACK 的特性, MATLAB 对数值线性代数来说是一个高可靠的优化系统。许多数值作业能够用线 性代数语言精确地表示。MATLAB 和线性代数的密切关系是程序员能够用很短的 MATLAB 语言来解决复杂的数值作业。标准工具箱还包括数据可视化的扩展图形库,有简单的点、线和复杂的三维图形和动画。所有的 MATLAB 程序都可以使用这些函数,这样就可以在所有程序和程序集中分析并生成达到出版质量的图示。对图形的快速访问能有效地提高用户的效率。诊断点有助于调试程序和检验算法是否正确执行。低级的图形函数为自定义图形用
7、户接口的分析代码提供了扩展空间。除了标准工具箱,可以使用其他的工具箱,如:信号处理、图像处理、优化、统计分析 、偏微分方程的求解和许多数值计算的应用。 2.1.2 MATLAB 语言特点 5、 6。 7 一种语言之所以能如此迅速地普及,显示出如此旺盛的生命力,是由于它有着不同于其他语言的特点,正如同 FORTRAN 和 C 等高级语言使人们摆脱了需要直接对计算机硬件资源进行操作一样,被称作为第四代计算机语言的 MATLAB,利用其丰富的函数资源,使编程人员从繁琐的程序代码中解放出来。 MATLAB 最突出的特点就是简洁。 MATLAB 用更直观的,符合人们思维习惯的代码,代替了 C 和 FOR
8、TRAN 语言的冗长代码。 MATLAB 给用户带来的是最直观,最简洁的程序开发环境。以下简单介绍一下 MATLAB 的主要特点。 1)。语言简洁紧凑,使用方便灵活,库函数极其丰富。 MATLAB 程序书写形式自由,利用起丰富的库函数避开繁杂的子程序编程任务,压缩了一切不必要的编程工作。由于库函数都由本领域的专家编写,用户不必担心函数的可靠性。可以说,用 MATLAB 进行科技开发是站在专家的肩膀上。 2)运算符丰富。由于 MATLAB 是用 C 语言编写的, MATLAB 提供了和 C 语言几乎一样多的运算符,灵活使用 MATLAB 的运算符将使程序变得极为简短。 3) MATLAB 既具有
9、结构化的控制语句(如 for 循环, while 循环, break 语句和 if 语句),又有面向对象编程的特性。 4)程序限制不严格,程序设计自由度大。例如,在 MATLAB 里,用户无需对矩阵预定义就可使用。 5)程序的可移植性很好,基本上不做修改就可以在各种型号的计算机和操作系统上运行。 6) MATLAB 的图形功能强大。在 FORTRAN 和 C 语言里,绘图都很不容易,但在MATLAB 里,数据的可视化非常简单。 MATLAB 还具有较强的编辑图形界面的能力。 7) MATLAB 的缺点是,它和其他高级程序相比,程序的执行速度较慢。由于 MATLAB的程序不用编译等预处理,也不生
10、成可执行文件,程序为解释执行,所以速度较慢。 8)功能强大的工具箱是 MATLAB 的另一特色。 MATLAB 包含两个部分:核心部分和各种可选的工具箱。核心部分中有数百个核心内部函数。其工具箱又分为两类:功能性工具箱和学科性工具箱。功能性工具箱主要用来扩充其符号计算功能,图示建模仿真功能,文字处理功能以及与硬件实时交互功能。功能性工具箱用于多种学科。而学科性工具箱是专业性比较强的,如 control,toolbox,signl proceessing toolbox,commumnication toolbox 等。这些工具箱都是由该领域内学术水平很高的专家编写的,所以用户无需编写自己学科范
11、围内的基础程序,而直接进行高,精,尖的研究。 9)源程序的开放性。开放性也许是 MATLAB 最受人们欢迎的特点。除内部函数以外,所有 MATLAB 的核心文件和工具箱文件都是可读可改的源文件,用户可通过对源文件的修改以及加入自己的文件构成新的工具箱。 2.1.3 MATLAB GUI 介绍 7、 8 一个可以发布的应用程序通常都需要有一个友好的图形用户界面( Graphical User Interface)。程序的用户界面是用户与计算机程序的交互方式,用户通过键盘、鼠标等输入设备与计算机交换信息。图形用户界面( GUI)是包含图形对象,如窗口、图标、菜单和文本的用户界面。用户以某种方式选择
12、或激活这些对象,会引起动作或发生变化,例如调用计算程序或者绘图等。 图形用户界面通常是一种包含多种图形对象的界面,典型的图像界面包括图形显示区域,功能按钮控件以及用户自定义的功能菜单等。为了让界面实现各种功能,需要对各个 图形对象进行布局和事件编程。当用户激活对应的 GUI 对象时,就能执行相应的时间行为。 GUI 也是一种 Matlab 对象,可以使用 M 文件来创建 M 文件,这也是最基础的,使用其他方法创建时,也需要编写相应的程序代码。除了使用 M 文件来创建 GUI 对象外, Matlab还为用户开发图形界面提供一个方便高效的继承开发环境: Matlab 图形用户界面开发环境( Mat
13、lab Graphical User Interface Development Environment,GUIDE)。其主要是一个界面设计工具集,他将所有 GUI 所支持的用户控件都集成起来,同时提供界面外观、属性和行为响应方法的设置方法。除了可以使用 GUIDE 创建 GUI 之外,还可以将设计好的 GUI 界面保存为一个 FIG 资源文件,同时自动生成对应的 M 文件。该 M 文件包含了 GUI 初始化代码和组建界面布局的控制代码。 使用 GUIDE 创建 GUI 对象执行效率高,可以交互式的进行组件布局,还能生成保存和发布 GUI 的对应文件。 2.2 求解非线性方程组 2.2.1 N
14、ewton 方法 9 为了构造在一维情况下相应的不动点方法的算法,需找出一个函数 满足性质 ( ) ( ) ( )g x x x f x 使函数 g 能平方收敛于不动点 p (见 2.4 节)。由此条件, Newton 方法选择函数 ()x =1/ ()fx,这里假设 ()fx 0。 在 n 维情况下使用类似的方法要用到矩阵 1 1 1 2 12 1 2 2 212( ) ( ) ( )( ) ( ) ( )()( ) ( ) ( )nnn n n na x a x a xa x a x a xAxa x a x a x其中,每个元素 ()ijax都是从 nR 到 R 的函数。需要求解 ()A
15、x 以使得 1( ) ( ) ( )G x x A x F x 平方收敛于 ()Fx=0 的解,这里假设 ()Ax 在 G 的不动点 p 处是非奇异的。 2.2.1 拟牛顿方法 10 设 (0)x 是 ( ) 0Fx 的解 p 的初始近似以 Newton 方法同样的方式来计算下一个近似(1)x ,或者若不便于精确确定 (0)()Jx ,则使用式( 10.10)给出的差分方程来近似计算偏微分。然而,计算 (2)x 就不能用 Newton 方法而是用一元非线性方程的正割方法来求。正割方法用近似值 101 10( ) ( )() f x f xfx xx 来代替 Newton 方法中的 1()fx。
16、对于非线性方程组, (1) (0)xx 是一个向量,相应的商未定义。可类似地继续该方法,对方程组用矩阵 1A 代替 Newton 方法的矩阵 (1)()Jx , 1A 具有性质 ( 1 ) ( 0 ) ( 1 ) ( 0 )1 ( ) ( ) ( )A x x F x F x nR 中的任意非零向量可写作 (1) (0)xx 的乘积和 (1) (0)xx 的正交补向量乘积的和。所以,为了唯一定义矩阵 1A ,需要说明它如何作用于 (1) (0)xx 德正交补向量上。因为没有在 F上与 (1) (0)xx 正交的方向上关于 F 变化的可用信息,因此就要求 (0)1 ()Az J x z ,其中
17、(1) (0)( ) 0tx x z 这样,与 (1) (0)xx 正交的任意向量不受 (0)()Jx 更新的影响,由此计算 (1)x 以及用来确定 1A的 (2)x 。 由条件( 10.11)和( 10.12)可唯一地定义 1A 为(见参考文献 DM) ( 1 ) ( 0 ) ( 0 ) ( 1 ) ( 0 ) ( 1 ) ( 0 )( 0 )1 2( 1 ) ( 0 )2 ( ) ( ) ( ) ( ) ( )() tF x F x J x x x x xA J xxx 用该矩阵取代 (1)()Jx 来确定 (2)x ,有 ( 2 ) (1) 1 (1)1 ()x x A F x 一旦确定
18、了 (2)x ,重复该方法来确定 (3)x ,用 1A 取代 0A (0)()Jx ,用 ( 2 ) x 和 (1)x 取代 (1)x和 (0)x 。一般地,一旦确定了 ()ix , ( 1)ix 可以通过 11 22ti i ii i iiy A sA A ss ( 和 ( 1 ) ( ) 1 ( )()i i iix x A F x 来计算,其中记号 ( ) ( 1)( ) ( )iiiy F x F x 和 ( ) ( 1)iiis x x 用来简化方程。 2.2.2 最速下降法 11 从 nR 到 R 的函数的最小值和非线性方程组的解之间的关系基于这样一个事实,当形式 为 1 1 2(
19、 , , , ) 0nf x x x 2 1 2( , , , ) 0nf x x x 12( , , , ) 0nnf x x x 的方程组在 x = 12( , , , )tnx x x 有一个解,此时恰为由 21 2 1 21( , , , ) ( , , , )nn i nig x x x f x x x 定义的函数 g 有最小是 0。 对任意从 nR 到 R 的函数 g 求局部最小值的最速下降方法可被只管地描述如下 : 1. 用初始近似 ( 0 ) ( 0 ) ( 0 ) ( 0 )12( , , ) tnx x x x 计算 g 。 2. 从 (0)x 处确定使 g 值下降的一个方
20、向。 3. 按该方向移动适当值并且调用新值 (1)x 。 4. 用 (1)x 替换 (0)x 并重复步骤 1 至 3. 2.2.3 同伦和延拓法 10 非线性方程组的 同伦 或者 延拓 法包含在问题集合中求解的问题。特别地,为了求解形如 ( ) 0Fx 的问题,它有一个未知解 *x ,考虑一系列使用假设在 0,1上的参数 来描述的问题。有已知解 (0)x 的问题对应于 0 ,有未知解 *(1)xx 的问题对应于 1 。 例如,假设 (0)x 是 *( ) 0Fx 的解的初始近似值。定义 : 0 ,1 nnG R R 其方程形式为 ( , ) ( ) ( 1 ) ( ) ( (0 ) ) ( )
21、 ( 1 ) ( (0 ) )G x F x F x F x F x F x ( 10.19) 对不同的 值,可以确定 ( , ) 0Gx 的解。当 0 ,此方程假定形如 0 (0 , ) ( ) ( (0 ) )G x F x F x 且 (0)x 是一个解。当 1 时,方程假定形如 0 (1, ) ( )G x F x 且 *(1)xx 是一个解。 2.2.4 一类不动点迭代法的求解 ( 1)反函数方法 12 因为 ()xx ,有 111 ( ) ()x x ,则当 , x ab 时, 1 1 ( ) 1x L ,所以方程()xx 可写成等价形式 1()xx ,从而构造迭代格式 11 ()
22、kkxx ( 0,1, )k 。很明显, 11 ()kkxx 满足收敛条件。 ( 2)牛顿( Newton)迭代法 13 把 ()xx 化为 ( ) ( ) 0f x x x ,采用 Newton 迭代格式有 1 11( ) ( ) ( ) , ( 0 , 1 , )1 ( ) 1 ( )k k k k kkk kkx x x x xx x kxx ( 3)埃特金 (Aitken)加速法 根据 Aitken 加速算法,对迭代格式 1 ()kkxx ( 0,1, )k ,进行如下修改: 221( ( ) ) ( )() ( ( ) )2 ( ( ) ) 2 ( )kkkkk k kk k k k
23、 k kxxzyx z xz y x x x x ( 4)松弛法 14 将 ()xx 化成等价形式 (1 ) ( ) ,x x x 为松弛因子,迭代函数为( ) (1 ) ( )x x x ,迭代格式为 1 (1 ) ( )k k kx x x 记 minmin ( )mx, max ( )a x bMx,有如下结论: 当 ( ) 1xL , 取 2 01M 时,迭代格式( 3)收敛; 当 ( ) 1xL , 取 20 1 m 时,迭代格式( 3)收敛; 当 ( ) 1xL , 取 11 1 mm 时,迭代格式( 3)收敛,并比迭代格式1 ()kkxx 收敛快。 一个方程的迭代格式不是唯一的,
24、且迭代也不都是收敛的,其收敛性质取决于迭代函数()x 和初值 0x 。关于迭代的收敛性,已经有如下的结论 15-16 若 ()x 满足下列条件:( 1) , x ab 时, ( ) , x a b ;( 2)对任意 , x ab ,存在01L,使 ( ) 1xL ,则方程 ()xx 在 , ab 上有惟一的根 *x ,且对任意初值 0 , x ab ,迭代序列 1 ()kkxx ( 0,1,2 )k 收敛于 *x 。 三、总结部分 本文首先介绍了 MATLAB 这个数学软件,让我们初步了解了这个软件的一些情况。 MATLAB是当今最优秀的科技应用软件之一,它以强大的科学计算与可视化功能、简单易
25、用、开放式可扩展环境,特别是所附带的 30 多种面向不同领域的工具箱支持,使得它在许多科学领域中成为计算机辅助设计和分析、算法研究和应用开发的基本工具和首选平台。 MATLAB 具有其他高级语言难以比拟的一些优点,如编写简单、编程效率高、易学易懂等,因此 MATLAB语言也被通俗地称为演算纸式科学算法语言。 MATLAB GUI 是 MATLAB 的图形用户界面,它有友好的程序界面,再加上 MATLAB 的强大计算能力,使得 MATLAB 软件更受人们的欢迎。 接着又介绍了求解非线性方程的几种方法和几种迭代方法。求解非线性方程组的主要方 法有 Newton 方法、拟牛顿法、最速下降法、同伦和延
26、拓法而不动点迭代方法是求解非线性方程近似根的一个重要方法,其应用非常广泛,对迭代函数不满足收敛定理条件的一类情况进行了研究,归纳出几种迭代方法。 MATLAB 的强大计算能力和 MATLAB GUI 的友好图形界面给 求解非线性方程组研究带来了很大的方便。 四、参考文献 1 拉克唐瓦尔德 . 数值方法和 MATLAB 实现与应用 M. 北京:机械工业出版社 .2004 2 费业泰 .误差理论与数据处理 M.第 4 版 北京:机械工业出版社 .2005 3拉克唐瓦尔德 .数值方法和 MATLAB 实现与应用 M.北京:机械工业出版社 .2004 4John H.Mathews,Kurtis D.
27、Fink.Numerical Methods Using MATLABM.BeiJing: Publishing House of Electronics Industry.2005 5 王素立,高洁,孙新德 .MATLAB 混合编程与工程 M.北京:清华大学出版社 .2008 6周小阳 .数学软件与 MATLABM.武汉:华中科技大学出版社 .2002 7陈垚光,毛涛涛,王正林,王玲 .精通 MATLAB GUI 设计 M.北京:电子工业出版社 .2008 8施晓红,周佳 .精通 MATLAB 图形界面编程 .北京:电子工业出版社 .2008 9John H.Mathews,Kurtis D
28、.Fink.数值方法( MATLAB 版) .北京:电子工业出版社。 2005 10Richad L Burden,J.Douglas Faries.数值分析(第七版) .北京:高等教育出版社。 2001 11吴锋 ,李秀梅 ,朱旭辉 ,黄哲华 .最速下降法的若干重要改进 .广西 南宁:广西大学学报: 自然科学版。 2010 12WANG D R,WU YJ.Some modifications of the parallel Halley iteration method and their convergence JComputing.1987 13EHRLICH L W.A modified Newton method for polynomials J.Comm.ACM,1967 14高尚 .不动点迭代法的一点注记 .大学数学 J.2003 15李信真 .计算方法 M.西安 : 西北工业大学出版社 , 2004. 16高培 .计算方法典型例题与解法 M.北京 : 国防科技大学出版社 , 2003.