1、 毕业论文文献综述 信息与计算科学 解线性代数方程组迭代法的 MATLAB GUI 设计 一、 前言部分 MATLAB 是 用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境,主要包括 MATLAB 和 Simulink 两大部分。图形用户界面( Graphical User Interfaces , GUI)则是由窗口、光标、按键、菜单、文字说明等对象构成的一个用户界面。用户通过一定的方法(如鼠标或键盘)选 择、激活这些图形对象,使计算机产生某种动作或变化,比如实现计算、绘图等。 GUI 是 向别人提供应用程序,进 行某种技术、方法的演示,制作一个供反复使用且操作简
2、单的专用工具 的 最好的选择之一 1。 我们似乎都碰到过这样的问题,为了求得某个线性方程组的解而花费大量的时间和计算量,还容易出错,而应用迭代法求解线性代数方程组的解则可以解决这个问题。一个收敛的迭代法不仅具有程序设计简单,适于自动计算的优点,而且较直接法而言用更少的计算量就可以获得满意的解。因此迭代法是求解线性代数方程组,尤其是求解具有大型系数矩阵的线性方程组的主要方法之一。而 MATLAB 的计算能力和 MATLAB GUI 的图形显示功能就能给研究特别是形象表示 线性方程组的解带来了很大的方便。 二、主题部分 2.1 MATLAB 软件介绍 2.1.1 MATLAB 软件概况 MATLA
3、B 是矩阵实验室( Matrix Laboratory)的简称,是美国 MathWorks 公司出品的商业 数学软件 ,用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境,主要包括 MATLAB 和 Simulink 两大部分。 20 世纪 70 年代,美国新墨西哥大学计算机科学系主任 Cleve Moler 为了减轻学生编程的负担,用 FORTRAN 编写了最早的 MATLAB。 1984 年由 Little、 Moler、 Steve Bangert 合作成立了的 MathWorks 公司正式把 MATLAB 推向市场。到 20 世纪 90 年代, MATLAB
4、已成为国际控制界的标准计算软件 2。 MATLAB 和 Mathematica、 Maple 并称为三大数学软件。它在数学类科技应用软件中在数值计算方面首屈一指。 MATLAB 可以进行矩阵运算、绘制函数和数据、实现算法、创建用户界面、连接其他编程语言的程序等,主要应用于工程计算、控制设计、信号处理与通讯、图像处理、信号检测金融建模设计与分析等领域 2。 MATLAB 的基本数据单位是矩阵,它的指令表达式与数学、工程中常用的形式十分相似,故用 MATLAB 来解算问题要比用 C, FORTRAN 等语言完成相同的事情简捷得多,并且 mathwork 也吸收了像 Maple 等软件的优点 ,使
5、MATLAB 成为一个强大的数学软件。在新的版本中也加入了对 C, FORTRAN, C+ , JAVA 的支持。可以直接调用 ,用户也可以将自己编写的实用程序导入到 MATLAB 函数库中方便自己以后调用,此外许多的MATLAB 爱好者都编写了一些经典的程序,用户可以直接进行下载就可以用 3。 MATLAB 的应用范围 非常广,包括信号和图像处理、通讯、控制系统设计、测试和测量、财务建模和分析以及计算生物学等众多应用领域。附加的工具箱(单独提供的专用 MATLAB 函数集)扩展了 MATLAB 环境,以解决这些应用领域内特定类型的问题 3。 2.1.2 MATLAB 软件的优势 ( 1)友好
6、的工作平台和编程环境 MATLAB 由一系列工具组成。这些工具方便用户使用 MATLAB 的函数和文件,其中许多工具采用的是图形用户界面。包括 MATLAB 桌面和命令窗口、历史命令窗口、编辑器和调试器、路径搜索和用于用户浏览帮助、工作空间、文 件的浏览器。随着MATLAB 的商业化以及软件本身的不断升级, MATLAB 的用户界面也越来越精致,更加接近 Windows 的标准界面,人机交互性更强,操作更简单。而且新版本的 MATLAB 提供了完整的联机查询、帮助系统,极大的方便了用户的使用。简单的编程环境提供了比较完备的调试系统,程序不必经过编译就可以直接运行,而且能够及时地报告出现的错误及
7、进行出错原因分析 3。 ( 2)简单易用的程序语言 Matlab 一个高级的矩阵 /阵列语言,它包含控制语句、函数、数据结构、输入和输出和面向对象编程特点。而且这种语言可移植 性好、可拓展性极强,这也是 MATLAB能够深入到科学研究及工程计算各个领域的重要原因 4。 ( 3)强大的科学计算机数据处理能力 MATLAB 是一个包含大量计算算法的集合。在计算要求相同的情况下,使用 MATLAB的编程工作量会大大减少 4。 ( 4)出色的图形处理功能 MATLAB 自产生之日起就具有方便的数据可视化功能,以将向量和矩阵用图形表现出来,并且可以对图形进行标注和打印 4。 ( 5)应用广泛的模块集合工
8、具箱 MATLAB 对许多专门的领域都开发了功能强大的模块集和工具箱。一般来说,它们都是由特 定领域的专家开发的,用户可以直接使用工具箱学习、应用和评估不同的方法而不需要自己编写代码 4。 ( 6)实用的程序接口和发布平台 新版本的 MATLAB 可以利用 MATLAB 编译器和 C/C+数学库和图形库,将自己的MATLAB 程序自动转换为独立于 MATLAB 运行的 C 和 C+代码。允许用户编写可以和MATLAB 进行交互的 C 或 C+语言程序。另外, MATLAB 网页服务程序还容许在 Web 应用中使用自己的 MATLAB 数学和图形程序 4。 ( 7)应用软件开发(包括用户界面)
9、在开发环境中,使用户更方便地控制多个文 件和图形窗口;在编程方面支持了函数嵌套,有条件中断等;在图形化方面,有了更强大的图形标注和处理功能,包括对性对起连接注释等;在输入输出方面,可以直接向 Excel 和 HDF5 进行连接 4。 2.1.3 MATLAB GUI 介绍 GUI 是 Graphical User Interfaces 的简称,是由窗口、光标、按键、菜单、文字说明等对象构成的一个用户界面。用户通过一定的方法(如鼠标或键盘)选择、激活这些图形对象,使计算机产生某种动作或变化。 GUI 是向别人提供应用程序,进行某种技术、方法的演示,制作一个反复使用且 操作简单的专用工具的最好选择
10、之一 5。 一个好的 GUI 能够使程序更加容易使用。它提供给用户一个常见的界面,还提供一些控件,例如按钮、列表框、滑块、菜单等。用户图形界面应当是易理解且操作是可以预告的,所以当用户进行某一项操作时,它知道如何去做 5。 实现一个 GUI 的过程包括两个基本任务:一是 GUI 的组建布局,另一个是 GUI组件编程。另外,用户还必须能够保存并发布自己的 GUI,使得用户开发的图形用户界面真正得到应用。所用这些功能都可以通过图形用户界面开发环境来完成 5。 在 MATLAB 中 GUIDE 是一个组 件布局工作集,能够生成用户所需的组件资源并保存在一个 FIG 文件中:其次, GUIDE 还可以
11、生成一个包含 GUI 初始化和发布控制代码的 M 文件,该文件为回调函数(用户在图形界面中激活某一控件时要执行的函数)提供了一个框架。事实上,用户也可以通过调用组件函数 M 文件来实现 GUI 中所有组件的布局,但是使用 GUIDE 交互式的组件布局将会大大减小工作量 6。 2.2 解线性代数方程组的迭代法 2.2.1 向量、矩阵范数与谱半径 7, 8, 9 定义 2.1 设 nxR (或 nxC ), ()N x x 为 x 的实值函数。若它满足下列条件: ( 1)非负性 0x , 00xx (零向量), ( 2.1.1) ( 2)齐次性 kx k x , k 为任意实数(或复数), ( 2
12、.1.2) ( 3)三角不等式 , nx y x y x y R (或 nC ), ( 2.1.3) 则称 ()N x x 为 nR (或 nC )上的一个向量范数(或向量模), x 的值称为向量 x 的范数。 由三角不等式还可推出不等式 x y x y ( 2.1.4) 向量范数有多种,常见的有一下三种: 2 1/ 22 1()niixx , ( 2.1.5) 1 1niix x, ( 2.1.6) 1max iinxx , ( 2.1.7) 分别称为向量的 2 范数, 1 范数和无穷范数。直接验证即知它们都满足向量范数的定义。 2是我们熟知的 Euclid 空间中的向量长度,也叫 Eucl
13、id 模。容易得出,这三种范数满足 关系 2 nx x x, ( 2.1.8) 1 nx x x. ( 2.1.9) 定义 2.2 设 ( ) ( ) ( ) ( )12 ( , , , ) k k k k Tnx x x x 为 nR 上的一个向量序列( k =1,2, ),* * * *12( , , , )Tnnx x x x R.如果对 i =1,2, , n 有 ( ) *lim ,kiik xx 则称向量序列 ()kx 收敛于向量 *x 。 容易证明, ()kx 收敛于向量 *x 的充要条件是 ( ) *lim 0kk xx . 再由( 2.1.8)和( 2.1.9)式,上式成立的
14、充要条件是 ( ) *2lim 0kk xx 或 ( ) *1lim 0kk xx . 这表明向量序列 ()kx 若按某种范数收敛,则按别的范数也收敛。 定义 2.3 设 nnAR (或 nnC ), ()N A A 为 A 的实值函数,若它满足下列条件: ( 1) 非负性 0 , 0 0A A A (零矩阵), ( 2.1.10) ( 2) 齐次性 kA k A , k 为任意实数(或复数), ( 2.1.11) ( 3) 三角不等式 , nnA B A B A B R (或 nnC ), ( 2.1.12) 则称函数 ()N x A 为 nnR (或 nnC )上的一个矩阵范数(或矩阵模)
15、, A 的值称为矩阵 A 的范数。 满足如下条件的叫相容范数: , , ,nnA B A B A B R ( 2.1.13) , , .n n nA x A x x R A R ( 2.1.14) A 的算子范数: 01m a x m a x ,ppPpxxpAxA A xx( 2.1.15) 定理 2.1 由( 2.1.15)所定义的矩阵范数为相容范数。 定理 2.2 对于由( 2.1.15)式所定义的矩阵范数,下列等式成立: 1 1m ax ,nijin jAa ( 2.1.16) 1 1 1m ax ,nijjn iAa ( 2.1.17) 1 / 22 ()TA A A 之 最 大 特
16、 征 值. ( 2.1.18) 谱半径:矩阵 A 的特征值的按模最大值称为 A 的谱半径,记作 A( ) ,即 1iA max in( ), ( 2.1.20) 其中 i 是 A 的特征值。 定理 2.3 对任意 nnAR ,有 ApA ( ), 1,2,p. ( 2.1.21) 2.2.2 迭代法的一般形式与收敛性定理 10 考虑求解线性代数方程组 Ax b (2.2.1) 为采用迭代法求解,首先要将方程组( 2.2.1)改写成等价的形式 ,x Hx g (2.2.2) 其中 nnHR ,ijHh, ngR 为已知向量, nxR 代表未知向量。 给定初始近似向量 (0) nxR ,定义向量序
17、列 ( 1) ( )kkx Hx g , k =0,1,2, , (2.2.3) 称 ()kx 为迭代序列,并称 H 为迭代矩阵。 引理 2.1 迭代法( 2.2.3)式对任何初始近似 (0)x 均收敛的充分必要条件是0( )kHk . 引理 2.2 0( )kHk 的充分必要条件是 H 的谱半径 ( ) 1H . 定理 2.4 迭代法( 2.2.3)式对任何初始近似 (0)x 均收敛的充分必要条件是迭代矩阵 H 谱半径 ( ) 1H . 定理 2.5 当 1H 时,由迭代法( 2.2.3)式所定义的序列 ()kx 满足如下估计式: ( ) * ( ) ( 1 )1k k kHx x x xH
18、 , ( 2.2.7) ( ) * ( 1 ) ( 0 )1kk Hx x x xH . ( 2.2.8) 迭代法( 2.2.3)式的渐进收敛速度: ( ) ln ( )R H H ( 2.2.10) 2.2.3 Jacobi 方法与 Gauss-Seidel 方法 11, 12 Jacobi 方法 考虑方程 组 Ax b ,其中 nnAR 是非奇异的, nbR 为已知向量。将矩阵 A 写成如下形式: A D L U , ( 2.3.2) 其中 11( , , )nnD dia g a a 为对角阵, ,LU分别为 A 的严格下、上三角部分构成的三角阵。 当 D 非奇异,即 0( 1, 2,
19、, )iia i n 时,利用( 2.3.2)式,可将方程组( 2.3.1)写成 11()x D L U x D b . ( 2.3.3) 于是可得迭代格式 ( 1 ) 1 ( ) 1()kkx D L U x D b , k =0,1,2, (2.3.4) 称此格式为求解方程组( 2.3.1)的 Jacobi 迭代法。注意到 L U D A,故( 2.3.3)式也可写成 11()x I D A x D b , 因而 Jacobi 方法的迭代矩阵为 11()H D L U I D A ( 2.3.5) Gauss-Seidel 方法 在计算过程中总是利用最新值进行计算的方法称为 Seidel
20、迭代法。 对 Jacobi 迭代( 2.3.6)式运用 Seidel 技巧得到 1( 1 ) ( 1 ) ( )111 ()ink k ki ij j ij j ij j iiix a x a x ba , i =1,2, , n . (2.3.9) 称( 2.3.9)式为 Gauss-Seidel 迭代 法(简称 G-S 迭代法),其矩阵形式为 ( 1 ) 1 ( 1 ) ( )( U )k k kx D L x x b , 并可整理成一般迭代法的形式 ( 1 ) 1 ( ) 1( ) ( )kkx D L U x D L b . ( 2.3.10) 定义 2.4 若矩阵 ()ijAa 满足
21、条件 1,nij iij j i aa , i =1, , n , (2.3.14) 且至少有一个 i ,使不等式严格成立,则称 A 为(按行)对角占优矩阵,若对 i =1, , n 严 格不等式均成立,则称 A 为(按行)严格对角占优矩阵。 定义 2.5 设 ( 2)nnA R n.若存在置换矩阵 P ,使得 0T BCPAP D , 其中 B 和 D 是阶数 1 的方阵, 0 是零矩阵,则称 A 为可约的,否则称 A 为不可约的。 定理 2.6 若 A 为严格对角占优矩阵(或对角占优且不可约矩阵),则 A 是非奇异的。 定理 2.7 若系数矩阵 A 满足( 1)按行(或列)严格对角占优,或
22、者( 2)不可约按行(或 列)对角占优,则 Jacobi 迭代法( 2.3.6)式和 Gauss-Seidel 迭代法( 2.3.9)式均收敛。 定理 2.8 若 A 对角元素大于零的实对称矩阵,则 Jacobi 方法收敛的充分必要条件是 A 和 2DA 皆为正定矩阵。 定理 2.9 设 A 为对称正定矩阵,则解( 2.3.1)式的 Gauss-Seidel 方法收敛。 2.2.4 松弛法 13 Richardson 迭代 下述含参数的 迭代格式 ( 1 ) ( ) ( )()k k kx x A x b , k =0,1,2, (2.4.1) 称为求解线性方程组( 2.3.1)的 Richa
23、rdson 迭代法。 Jacobi 松弛法 对 Jacobi 方法引进迭代参数,得到 ( 1 ) ( ) 1 ( )()k k kx x D A x b , 或者 ( 1 ) 1 ( ) 1()kkx I D A x D b ( 2.4.5) 称迭代法( 2.4.5)式为 Jacobi 松弛法(简称 JOR 方法)。由定理 2.4, JOR 方法收敛的充分必要条件是 1( ) 1I D A。 定理 2.11 若求解 Ax b 的 Jacobi 方法收敛,则 JOR 方法( 2.4.5)式对 01收敛。 定理 2.12 若 A 为对角元大 于零的实对称阵,则 JOR 方法收敛的充分必要条件是 A
24、 和12 DA 均为正定矩阵。 SOR 方法 仿照 JOR 方法,对 Gauss-Seidel 方法引进迭代参数 ,得到迭代格式 1( 1 ) ( ) ( 1 ) ( )1()ink k k ki i ij j ij j ij j iiix x a x a x ba , i =1,2, , n . (2.4.6) 称( 2.4.6)式为解方程组 Ax b 的超松弛方法,简记为 SOR 方法。它的矩阵形式为 ( 1 ) ( ) 1()kkx L x D L b , ( 2.4.7) 其迭代矩阵为 1( ) (1 ) TL D L D L 定理 2.13 设 TA D L L 为正定对称矩阵,则当
25、 02时 ( ) 1L ,即解方程组Ax b 的 SOR 方法收敛。 2.2.5 最速下降法、共轭梯度法 14, 15 最速下降法 从某一给定的初始近似 (0)x 出发,来求 ()Hx的极小值点 *x 。因 ()Hx在 (0)x 点的梯度为 ( 0 ) ( 0 ) ( 0 )( ) 2 ( ) 2g r a d H x A x b r ( 2.5.3) 它是 ()Hx在 (0)x 点上升速度最快的方向,所以 (0) (0)r b Ax 是 ()Hx在 (0)x 点下降速度最快的方向。这样,我们沿着 (0)r 的方向求 ()Hx的极小值点。 一般地,从 ()kx 出发,可得 ( 1 ) ( )
26、( )( ) ( )( ) ( )( ) ( ),TTk k kkkkk kkkkx x rrrr Arr b Ax k =0,1,2, (2.5.6) 通常称迭代格式( 2.5.6)为最速下降法。对于给定的精度限制 ,迭代到 ( ) ( )Tkkrr 为止。 共轭梯度法 一般地,当 ()kx , ()kr 和 ()kp 已知,可沿直线 ( ) ( )kkkx x p 求得 ()Hx的极小值点 ( 1) ( ) ( )k k kkx x p , ( 2.5.11) 其中 ( ) ( )( ) ( )TTkkk prp Ap . ( 2.5.12) 再利用梯度 ( 1) ( ) ( )k k k
27、kr r Ap , ( 2.5.13) 构造 ()kp 的共轭向量 ( 1) ( 1) ( )k k kkp r p, ( 2.5.14) 其中 ( ) ( 1)( ) ( )TTkkk p Arp Ap . ( 2.5.15) 然后开始进行下一步迭代。这样,从 ( 0 ) ( 0 ) ( 0 ) ( 0 ),x p r b A x ( 2.5.16) 出发,按( 2.5.11) ( 2.5.15)式求解线性代数方程组( 2.2.1)的过程,叫做共轭梯度法。 三、 总结部分 本文首先介绍了有关 MATLAB 软件方面的一些情况,包括它的功能以及它的优势等。MATLAB 是美国 Math Works 公司推出的一种面向工程和科学计算的交互式计算软件。它以矩阵运算为基础,把计算、可视化、程序设计融合在一个简单易用的交互式工作环境中,