1、毕业论文 开题报告 信息与计算科学 矩阵特征值与特征向量计算的 MATLAB GUI 设计 一、选题的背景、意义 1.选题的背景 ATLAB 语言是性能卓著的实验“仪器” ,是一款功能强大的。用它能能送的进行各种数学计算和符号演算,绘制多种可视化图形 1。 MATLAB 是一种数值计算环境和编程语言,主要包括 MATLAB 和 Simulink 两大部分。 MATLAB 基于矩阵运算, 具有强大的数值分析、矩阵计算、信号处理和图形显示功能,其强大的数据处理能力和丰富的工具箱使得它的编程极为简单。 MATLAB 既能进行科学计算,又能开发出所需要的图形界面。 图形用户界面( GUI)是由窗口、光
2、标、按键、菜单、文字说明等对象( Objects)构成的一个用户界面。用户通过一定的方法选择、激活这些图形对象,是计算机产生某种动作或变化,比如实现计算、绘图等 2。 2选题的意义 由于计算机的发展和普及 ,科学计算已经成为解决各类科学技术问题的重要手段。因此 ,掌握科学计算的基本原理和方法是当今科学技术工作者不可缺少的本领和技能之一。求特征问题是科学与工程中提出的一类重要数学问题。如动力学系统和结构系统中的振动问题,需要求系统的频率与振幅,又如物理 学中的某些临界值的确定等。 2研究误差就要研究误差的来源、分类、基本概念和误差的传播。而在研究误差时,要进行一些复杂的计算,同时怎样形象的表示误
3、差又是一个问题,所以运用 MATLAB 的计算能力和 MATLAB GUI 的图形显示功能就能给研究误差带来很大的方便。 二、研究的基本内容与拟解决的主要问题 2.1 MATLAB 软件介绍 2.1.1 MATLAB 软件概况 3、 4 “ MATLAB” 是“ Matrix Laboratory” 的缩写。 MATLAB 的第一个版本是 LINPACK 和EISPACK 库的程序的一个接口 ,用来分析线性方程组。随着 MATLAB 的演化,除了线性代数外,它还支持许多其他的程序。 MATLAB 的核心仍然是基于命令行的交互式分析工具。用户可以用类 Fortran 语言扩展交互环境。交互环境中
4、的程序以命令行的形式执行。 MATLAB 用户接口包括下拉菜单和对话框,任何个人电脑使用者对这一接口都很熟悉。菜单命令支持文件操作、打印、程序编辑和用户接口定制。 MATLAB 的数值计算是通过在命令窗口输入命令,并不是通过菜单操作进行的。 MATLAB 是一个基本的应用程序,它有一个称为标准工具箱的巨大程序模块库。 MATLAB工具箱包括解决实际问题的扩展库,如:求根、插值、数值积分、线性和非线性方程组求解以及常微分方程组求解。由于继承了 LINPACK、 EISPACK 和 LAPACK 的特性, MATLAB 对数值线性代数来说是一个高可靠的优化系统。许多数值作业能够用线性代数语言精确地
5、表示。MATLAB 和线性代数的密切关系是程序员能够用很短的 MATLAB 语言来解决复杂的数值作业。标准工具箱还包括数据可视化的扩展图形库,有简单的点、线和复杂的三维图形和动画。所有的 MATLAB 程序都可以使用这些函数,这样就可以在所有程序和程序集中分析并生成 达到出版质量的图示。对图形的快速访问能有效地提高用户的效率。诊断点有助于调试程序和检验算法是否正确执行。低级的图形函数为自定义图形用户接口的分析代码提供了扩展空间。除了标准工具箱,可以使用其他的工具箱,如:信号处理、图像处理、优化、统计分析、偏微分方程的求解和许多数值计算的应用。 2.1.2 MATLAB 语言特点 5、 6 MA
6、TLAB 语言有不同于其他高级语言的特点,它被称为第四代计算机语言, MATLAB 语言的最大特点就是简单和直接。正如第三代计算机语言使人们摆脱对计算机硬件操作一样,MATLAB 语言使人们 从烦琐的程序代码中解放出来。它丰富的函数使开发者无须重复编程,只要简单的调用和使用即可。 MATLAB 语言的主要特点可概括如下: ( 1) 以矩阵和数组为基础的运算 MATLAB 是以矩阵为基础的,不需要预先定义变量和矩阵 (包括数组 )的维数,可以方便地进行矩阵的算术运算、关系运算和逻辑运算等。 ( 2) 简单易学,使用方便 MATLAB 被称为 “ 草稿式 ” 语言,这是因为其函数名和表达更接近我们
7、书写计算公式的思维表达方式,编写 MATLAB 程序犹如在草稿纸上排列公式与求解问题,因此可以快速地验证工程技术人员的算法。此外 MATLAB 还是一种解释性语言,不需要专门的编译器。 ( 3) 强大的图形技术 MATLAB 具有非常强大的以图形化显示矩阵和数组的能力,同时它能给这些图形增加注释并且打印这些图形。 MATLAB 的图形技术既包括一些可以方便产生二维、三维科技专业图形的高级绘图函数,又包括一些可以让用户灵活控制图形特点的低级绘图命令。另外,用户还可以利用 MATLAB 的句柄图形技术创建图形用户界面。 (4)编程效率极高 MATLAB 是一种面向科学和工程计算的高级语言。它以矩阵
8、运算为基础,极少的代码即可实现复杂的功能。 (5) 可扩 充性强,具有方便的应用程序接口 MATLAB 不仅有着丰富的库函数,在进行复杂的数学运算时可以直接调用。而且用户还可以根据需要方便地编写和扩充新的函数库。通过混合编程用户可以方便地在 MATLAB 环境中调用其他用 Fortran 或者 C 语言编写的代码,也可以在 C 语言或者 Fortran 语言程序中调用 MATLAB 计算引擎来执行 MATLAB 代码。 2.1.3 MATLAB GUI 介绍 7、 8 一个可以发布的应用程序通常都需要有一个友好的图形用户界面( Graphical User Interface)。程序的用户界面
9、是用户与计算机程序的交互方式,用户通过键盘、鼠标等输入设备与计算机交换信息。图形用户界面( GUI)是包含图形对象,如窗口、图标、菜单和文本的用户界面。用户以某种方式选择或激活这些对象,会引起动作或发生变化,例如调用计算程序或者绘图等。 图形用户界面通常是一种包含多种图形对象的界面,典型的图像界面包括图形显示区域,功能按钮控件以及用户自定义的功能菜单等。为了让界面实现各种功能,需要对各个图形对象进行布局和事件编程。当用户激活对应的 GUI 对象时,就能执行相应的时间行为。 GUI 也是一种 Matlab 对象,可以使用 M 文件来创建 M 文件,这也是最基础的,使用其他方法创建时,也需要编写相
10、应的程序代码。除了使用 M 文件来创建 GUI 对象外, Matlab还为用户开发图形界面提供一个方便高效的继承开发环境: Matlab 图形用户界面开发环境( Matlab Graphical User Interface Development Environment,GUIDE)。其主要是一个界面设计工具集,他将所有 GUI 所支持的用户控件都集成起来,同时提供界面外观、属性和行为响应方法的设置方法。除了可以使用 GUIDE 创建 GUI 之外 ,还可以将设计好的 GUI 界面保存为一个 FIG 资源文件,同时自动生成对应的 M 文件。该 M 文件包含了 GUI 初始化代码和组建界面布局
11、的控制代码。 使用 GUIDE 创建 GUI 对象执行效率高,可以交互式的进行组件布局,还能生成保存和发布 GUI 的对应文件。 22.2 矩阵特征值与特征向量计算 求解特征问题是科学与工程中提出的一类重要数学问题 ,如动力学系统和结构系统中的震动问题 ,需要求系统的频率与振幅 ,又如物理学中的某些临界值的确定等 2.2.1 乘幂法及其变体 3 乘幂法是用于大型稀疏矩阵的主特征值的迭代方法 ,其特点 是公式简单 ,易于上机实现 . 乘幂法德计算公式如下 . 设 nnAR , 取 初 始 向 量 0 nxR , 令 10x Ax , 21x Ax , , 一 般 有 1kkx Ax (3.1.4
12、) 并形成向量序列 kx ,由递推公式 (3.1.4),有 2 2 02( ) . . .k k k kx A A x A x A x (3.1.5) 这表明 kx 是用 A 的 k 次幂左乘 0x 得到的 ,因此称此方法为乘幂法 ,(3.1.4)式或 (3.1.5)式称为乘幂公式 , kx 称为 乘幂序列 . 设 nnAR 可逆 ,反幂法可以求出 A 的绝对值最小的特征值及相应的特征向量 .由 0Ax x x 可 知 1 1 ,A x x 即若 0 为矩阵 A 的特征值 ,则 1 必为矩阵 1A 的按模最大特征值 ,且特征向量相同 . 因此 ,若乘幂法可求 A 的主特征值 1 ,则用 1A
13、做乘幂矩阵 ,由迭代公式 1 1kkx A x (3.1.24) 便可求出 1A 的按模最大特征值 1n,再取倒数即可得到矩阵 A 的按模最小特征值 n .因此 ,对任取初始向量 0 nxR ,称公式 (3.1.24)为求矩阵 A 按模最小特征值的 反幂法 . 2.2.2 子空间迭代法 10 子空间迭代法最初是由 Clint 和 ennings 提出 ,是反幂法的 推广 11 .稍后 ,Bathe 和Wilson 在其中加入了子空间上的 Rayleigh-Ritz 过程 ,它可以明显地改善收敛速度 .以下是一个子空间迭代算法的主要步骤 . .初始化 (1)确定子空间的维数 q; (2)选取初始
14、向量矩阵 NqxR ; (3)设定每次移轴的最大迭代次数 maxI . .移轴与 Sturm 序列校核 (1)计算移轴 ,应设法保证它不是特征值 ; (2)分解移 轴刚度矩阵 1K M LD L ; (3)Strum 序列校核 . .迭代 maxI 次 ,完成后转向 (1)将 X 进行 M 一成交归一化 ; (2)解试 11 ()TX LDL M X ; (3)计算 K 和 M 在 1X 上的投影 , 1 1 1 1,TTK X K X M X M X (4)求解 q 阶广义特征值问题 KM ; (5)形 成新的近似特征向量 1XX; (6)按模态误差判断特征值和特征向量的收敛 ,移出已收敛的
15、特征向量 ,并在 X 中加入随机向量或减缩子空间的大小 . 子空间迭代法假设 q 个初始向量同时进行迭代 ,求得前 p 个特征向量 .传统上 , max( ,4)qs , 其中 s 为 L 中一行的平均非零元个数 ,由第与步计算之比确定 . 2.2.3 Jacobi 旋转法 12 Jacobi 方法用来计算实对称的全部特征值及对应的特征向量 . 基本思想 :通过一组平面旋转将 A 化为对角阵 . 若 nnAR 为对称阵 , 则存在一正定阵 p, 使 12( , , ., )T nP A P d i a g p , 12, ,., n 为 A 的特征值 , TP 的列向量 jv 为 A 对应于
16、j 的特征向量 .主要问题是如何构造P. nR 中 ,ijxx 平面内的平均旋转变换 . c o s s ins in c o s ,i i ji i jkky x xy x x y P Xyx 1212, , . ., , . ., , . ., , . ., , . ., , . .,Ti j nTi j nX x x x x xY y y y y yP 的性质 : 1 P 为正交阵 , Tpp I . 2.P 为单位阵 I 只在 ( , ), ( , ), ( , ), ( , )i i j j i j j i四个位置元素不一样 . 3. TPAP 只改变 A 的 i 行 i 列 j 行
17、 j 列的元素 . 定理 1 设 A 为 n 阶对称阵 , TC PAP ,其中 P 为正定阵 则 22| | | |FFCA 定理 2 设 nnAR 为对称矩阵 , (, )Pi j 为宜平面旋转阵 , TC PAP 的元素计算式为 : 11c os si n11si n c os11TTijPPij列 列2222c os sin 2 sin c ossin c os 2 sin c os1 ( ) sin 2 c os 22ii ii jj ijjj ii jj ijij ji jj ii ijc a a ac a a ac c a a a c o s s in ( , )c o s s
18、in ( , )( , , )i k k i i k j kj k j j k i kl k l kc c a a k i jc c a a k i jc a l k i j 设 S(A)表示 A 的非对角元素的平方和 ,D(A)表示 A 的 对角元素平方和 ,由上式 22( ) ( ) 2( ) ( ) 2 ijijD C D A aS C S A a这说明 C 的对角元素平方和和 A 的对角元素平方和增加了 22ija ,非对角元素和此 A 的非对角元素平方和减少了 22ija . 2.2.4 Householder 方法 13 设 nR ,且 2| | 1 ,则矩阵 2 THI 称为 H
19、ousehoder 矩阵或 Householder 变换 ,一般我们简称为 H 阵或 H 变换 . H 阵有以下重要性质 ; (1)H 是对称阵 : THH ; (2)H 是正交阵 : TH H I ; (3)设 , nx y R , 22| | | |xy 则总存在 H 阵使 Hx=y 我们仅就 (3)给出证明 . 若 x=y,则只需取 x 即可 ,今设 xy ,要使 ( 2 )TH x I x y 即 2( )T x y x 只需取 2( )/ | |y x y x 即可 . 2.2.5 QR 方法 14 QR 算法是求矩阵特征值的最有效和应用最广泛的一种方法 . QR 算法也是一种变换方
20、法 .设 nnAC ,令 1AA ,先将 1A 作 QR 分解 ,写成 1A QR ,其中 Q 是酉矩阵即 , THHQ Q I Q Q是 Q 的共轭转置 ,R 是上三角阵 ,当 A 非奇异且规定 R的对角元是正实数时 ,则分解时唯一的 ,然后令 2A QR ,则有 21HA Q AQ . 是 的正交相似变换 ,他们有相同的特征值 .这个过程可继续下去 ,得到迭代序列 kA ,称此过程为基本QR 算法过程 . 算法 基本 QR 算法 (1)定义 1AA (2)对于 k=1,2, (3) k k kA QR (对 kA 作 QR 分解 ) (4) 1 Hk k k k k kA Q A Q R
21、Q 三、研究的方法与技术路线、研究 难点,预期达到的目标 1、研究内容 ( 1)掌握 Matlab 的基本语法、基本命令、 Matlab 函数及程序设计,学习 Matlab GUI图形用户界面的设计; ( 2)熟悉 矩阵特征值与特征向量计算的方法 ; ( 3) 用 Matlab GUI 图形用户界面实现矩阵特征值与特征向量计算。 2、研究方法及技术路线 本论文主要以查找资料,以现有的知识水平,在前人的研究论述基础上,应用 Matlab来进行数值计算 ,并运用 Matlab GUI 图形用户界面功能实现矩阵特征值与特征向量计算。采取了从大量阅读已有的数据资料 然后对这些内容进 行总结 最后运用相
22、关知识来编程求解的技术路线 。 3、研究难点 ( 1)对编程的熟练程度及对 Matlab GUI 的学习和掌握程度有待加强; ( 2)由于论题比较深奥,很难有独创或新颖之处; ( 3) 矩阵特征值与特征向量计算 有很多种,本文只讲述经典的方法。 4、预期达到的目标 通过这次论文的撰写更好的掌握 Matlab 的基本语法、基本命令, Matlab 函数程序设计,会用 Matlab 编写程序实现数值计算,并会运用 Matlab GUI 进行用户界面设计,同时用Matlab GUI 来实现 矩阵特征值与特征向量计算 。除此,对 MATLAB 的掌握更进一步,对于相关或类似的问题也能很好的处理,并且用
23、软件来求解更多的问题。 四、论文详细工作进度和安排 第 7 学期第 9 周( 2010 年 11 月 5 号)至第 7 学期第 19 周( 2011 年 1 月 10 号) 完成毕业论文文献检索、文献综述、外文文献翻译及开题报告。 第 7 学期第 19 周( 2011 年 1 月 10 号)至第 8 学期第 3 周( 2011 年 3 月 11 号) 完成毕业论文的数据收集、论文初稿。 第 8 学期第 3 周( 2011 年 3 月 11 号)至第 8 学期第 11 周( 2011 年 5 月 3 号) 1、进入实习单位进行毕业实习,对论文进行修改 ; 2、第 11 周( 2011 年 5 月
24、 3 日)前必须返校,完成毕业实习返校,并递交毕业实习报告,进一步完善毕业论文; 第 8 学期第 14 周( 2011 年 5 月 23 号 2011 年 5 月 28 号)完成第一轮毕业论文答辩; 第 8 学期第 15 周( 2011 年 5 月 28 号 2011 年 6 月 3 号) 第一轮毕业论文答辩未通过的学生完成第二轮毕业论文答辩,并随机抽取部分完成较好地毕业论文进行校级答辩 五、主要参考文献: 1 周晓阳 ,数学实验与 Matlab,华中科技大学出版社 ,2002.1 2 拉克唐瓦尔德 . 数值方法和 MATLAB 实现与应 用 M. 北京:机械工业出版社, 2004.9: 3
25、黄明游,刘潘,徐涛 .数值计算方法 M.北京:科学出版社, 2005: 1 11 4拉克唐瓦尔德 .数值方法和 MATLAB 实现与应用 M.北京:机械工业出版社, 2004.9: 36 5John H.Mathews, Kurtis D.Fink.Numerical Methods Using MATLAB M.BeiJing: Publishing House of Electronics Industry.2005 6 王素立,高洁,孙新德 .MATLAB 混合编程与工程 M.北京:清华大学出版社, 2008.5:120 7周小阳 .数学软件与 MATLABM.武汉:华中科技大学出版社,
26、 2002 8陈垚光,毛涛涛等 .精通 MATLAB GUI 设计 .北京:电子工业出版社 .2008 9施晓红,周佳 .精通 MATLAB 图形界面编程 .北京:电子工业出版社 .2008 10宫玉才 ,周洪伟等 .震动工程学报 .北京大学力学与工程科学系 ,第 18 卷第 2 期 .2005.6 11Clint M, Jennings A.The evaluation of eigenvalue and eigenvectors of real symmetric matrices by simultaneous iteration J.The Computer Journal, 1970, 13(1): 76-80 12 李庆扬 ,数值分析 (第四版 ),华中科技大学出版社 ,2006.07 13陈忠 ,朱建伟 ,数值计算方法 ,石油工业出版社 ,2001.8 14现代应用数学手册编委会 ,现代应用数学手册 计算与数值 分析卷 .北京 :清华大学出版社 .2005.1 15 李显宏 . MATLAB7.X 界面设计与编译技巧 M.北京:电子工业出版社, 2006: 1 10