数值分析课程设计(矩阵的特征值求解软件).doc_第1页
数值分析课程设计(矩阵的特征值求解软件).doc_第2页
数值分析课程设计(矩阵的特征值求解软件).doc_第3页
数值分析课程设计(矩阵的特征值求解软件).doc_第4页
数值分析课程设计(矩阵的特征值求解软件).doc_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

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

文档简介

数值分析课程设计报告华 北 科 技 学 院数值分析课程设计说明书班级: 信息与计算科学B091 学号: 200909014117 姓名:_田健 _设计题目:_矩阵的特征值求解软件_设计时间:_2012.2.27_至_2012.3.2 _ 指导教师: _ _谭立云_评 语:_评阅成绩: 评阅教师: 目录1 设计总说明书12 前 言22.1课程设计选题22.2课程设计的目的22.3本选题的设计背景22.4功能需求22.5 系统的开发运行环境23问题定义及题目分析33.1分别用幂法和幂法加速技术求矩阵33.2对于实对称矩阵,用Jacobi方法编写其程序,并用所编程序求下列矩阵的全部特征值33.3概要设计34详细设计与实现54.1 矩阵特征值计算登陆主界面模块54.1.1模块算法(或重要代码段):54.2矩阵特征值计算模块64.2.2调试与测试65小结和展望7参 考 文 献8附 录8登陆界面部分代码8矩阵特征值特征向量部分代码10矩阵重置代码11-2-1 设计总说明书我们可以看到在当今这个以信息与计算为主的社会,一个实用的简单的计算工具已是占据不可或缺的地位和很稀缺的工具。因此,一个好的简单计算系统已成为企业、个人工作学习的不可缺少的一部分,不但可以直接影响到企业、个人学习,而且会间接的影响到企业、个人经济利益和社会地位。随着社会的发展,科技的进步,计算机的应用在社会各领域中都得到了普及,越来越多的人都感受到利用计算机进行各类管理的科学和便捷;认识到有一个实用且简洁的计算系统对于大量的计算工作的重要性。笨啦计算机的实际就是用于计算使用的,所以利用计算机进行多种数值计算是必然趋势,数值计算系统是各类工作中不可缺少的。即这次课程设计中,我选择开发数值矩阵特征值计算系统。这个计算系统的功能主要有计算一些简单的矩阵和矩阵之间的加发,减法和乘法。这也要求它应该能够为用户提供有好美观的窗口界面、充足可靠的信息数据、简单方便的维护手段和灵活多变的输入计算方式以及快捷而准确和简单明了的计算结果。所以,对于这个矩阵特征值计算系统的设计主要包括函数建立、矩阵计算以及应用程序和数据录入的开发两个方面。本次课程设计我选用的开发软件是大家比较熟悉的Microsoft 公司出品的Visual C+6.0 MFC平台进行系统的开发。输入需要计算的矩阵的基本信息(包括矩阵维数,精确度),对这些信息进行管理,要求 :1、用户录入需要计算的矩阵的基本信息; 2、能够快速的计算出矩阵的特征值; 3、能按要求计算个别矩阵之间的加,减,乘法。本系统主要用于对矩阵特征值基本信息进行计算,能够进行计算单个矩阵的特征值和多个矩阵的简单运算。登录该系统时,用户不需要输入口令和密码,简单方便实用。 基于上述想法,我们可以放心的实用这个简单的计算工具,以MFC为前台进行系统的设计然后将后台计算的数据读取出来,有助于用户对这些数据进行相应的操作,使操作更方便,更符合用户的要求。所以该系统应该要有一个较好的界面,使用户感觉很直观,使用快捷,这就是用MFC所要实现的功能。关键字:MFC 矩阵 特征值2 前 言2.1课程设计选题矩阵的特征值计算该功能只适用于计算一般矩阵的特征值由于设置优先所以只能求解N10的矩阵。2.2课程设计的目的巩固和加深以数值分析以及C语言为基础的界面设计和数值求解理论知识的理解,提高实际动手编程能力的培养,掌握以C语言为核心的应用软件开发方案,达到能独立阅读、编制和调试一定规模的C语言程序和独立解决数值分析问题的水平, 程序通过调用C语言提供的MFC进行了简单的界面设计,实现问题的解决。2.3本选题的设计背景在现实生活中,我们会经常遇到些需要解决数值分析等的问题,但是网络上大多数的计算工具都比较复杂没有一些简单方便的实用小工具,所以我们需要一些简单实用的数值计算小工具,以便对工作带来最大的满足与需求,于是我就设计了一个简单的矩阵的数值计算小工具,虽然不很常熟但是我觉得还挺实用的。2.4功能需求设计一个矩阵求特征值工具,能够实现简单的矩阵特征值求解。2.5 系统的开发运行环境本系统集成开发环境:C+本系统运行环境: windows xp 或以上版本C是一个开放源代码的、基于C的可扩展开发平台。编写代码和运行软件都很方便。编写过程中要是有错误就有提示,非常方便用户修改代码。3问题定义及题目分析3.1分别用幂法和幂法加速技术求矩阵的主特征值和特征向量3.2对于实对称矩阵,用Jacobi方法编写其程序,并用所编程序求下列矩阵的全部特征值3.3概要设计(1)幂法用于求按模最大的特征值及其对应的特征向量的一种数值算法,它要求矩阵 A的特征值有如下关系: ,对于相应的特征向量。其算法如下:Step 0:初始化数据Step 1:计算。Step 2:令 。Step 3:令 ;如果或,则 goto Step 4;否则 , k = k + 1 ,goto Step 1。Step 4:输出结果算法说明与要求输入参数为实数矩阵、初始向量、误差限与最大迭代次数。输出参数为特征值及相对应的特征向量。注意初始向量不能为“0”向量。(1)迭代法的原理如果能将方程 Ax=b 改写成等价形式:x=Bx+f。如果B 满足:(B)1,则对于任意初始向量 x (0) ,由迭代 x( k + 1) = Bx(k ) + f 产生的序列均收敛到方程组的精确解。迭代法中两种最有名的迭代法就是Jacobi 迭代法,它的迭代矩阵 B 为:, 其中,D 为系数矩阵 A 的对角元所组成对角矩阵,L 为系数矩阵 A 的对角元下方所有元素所组成的下三角矩阵,U 为系数矩阵 A 的对角元上方所有元素所组成的上三角矩阵。算法如下:Step 0:初始化数据 和。Step 1:计算D,L,U,J或G, 得到迭代矩阵B.Step 2:如果或,goto Step 3否则 goto Step 。Step 3:输出结果。程序说明与要求程序的输入参数为系数矩阵与常量、初始向量及误差控制,输出参数为方程组的近似解。要求输入系数 A 中对角元不能存在 0,如果对角元出现 0 元素,则可以通过交换方程组中方程的次序解决。4详细设计与实现4.1 矩阵特征值计算登陆主界面模块图4.1矩阵计算登陆4.1.1模块算法(或重要代码段):见附录4.2矩阵特征值计算模块图4.2矩阵特征值计算界面图4.3 附加功能4.2.2调试与测试 测试结果的分析与讨论,测试过程中遇到的主要问题及采取的解决措施。图4.4 三维矩阵计算5小结和展望作为一名大三的学生,我觉得能做类似的课程设计是十分有意义,而且是十分必要的。在已度过的大三的时间里我们大多数接触的是专业基础课。我们在课堂上掌握的仅仅是专业基础课的理论面,如何去锻炼我们的实践面?如何把我们所学到的专业基础理论知识用到实践中去呢?我想做类似的大作业就为我们提供了良好的实践平台。在做本次课程设计的过程中,我感触最深的当数查阅大量的书籍了。为了让自己的设计更加完善,更加符合软件工程标准,一次次翻阅各种参考资料是十分必要的,同时也是必不可少的。我们是在作设计,但我们不是艺术家。他们可以抛开实际,尽情在幻想的世界里翱翔,我们是学生,一切都要有据可依.有理可寻,不切实际的构想永远只能是构想,永远无法升级为设计。作为一名学生掌握一门或几门程序设计语言是必不可少的,由于本次课程设计要求用MFC进行开发,在这过程中我对各种的开发环境进行了探索,其中有VB,C+,java等,这使我对MFC的集成开发环境有了更深刻的理解虽然去从未独立应用过它们,但在学习的过程中带着问题去学我发现效率好高,记得大一学C语言好难就是因为我们没有把自己放在使用者的角度,单单是为了学而学,这样效率当然不会高。边学边用这样才会提高效率,这是我作本次课程设计的第二大收获。但是由于水平有限,难免会有错误,还望老师批评指正。参 考 文 献1 陈越, 童若峰. 数值分析课程设计 浙江大学出版社, 2009.2 欧阳志宏,董霖,钟俊华.MFC程序设计轻松入门.北京:人民邮电出版社,20093郁永彦,王志坚,Visual C+程序设计实用案例教程.北京大学出版社,2010 附 录登陆界面部分代码void CMatrixDlg:OnPaint() /图片插入if (IsIconic()CPaintDC dc(this); / device context for paintingSendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);/ Center icon in client rectangleint cxIcon = GetSystemMetrics(SM_CXICON);int cyIcon = GetSystemMetrics(SM_CYICON);CRect rect;GetClientRect(&rect);int x = (rect.Width() - cxIcon + 1) / 2;int y = (rect.Height() - cyIcon + 1) / 2;/ Draw the icondc.DrawIcon(x, y, m_hIcon);elseCPaintDC dc(this); CRect rect; GetClientRect(rect); dc.FillSolidRect(rect,RGB(255,255,255); CDialog:OnPaint();/ The system calls this to obtain the cursor to display while the user drags/ the minimized window.HCURSOR CMatrixDlg:OnQueryDragIcon()return (HCURSOR) m_hIcon;void CMatrixDlg:OnStaticInmap() / TODO: Add your control notification handler code hereCString msg;msg.Format(欢迎使用数值分析矩阵计算系统_);AfxMessageBox(msg);void CMatrixDlg:OnButtonEntrance() / TODO: Add your control notification handler code hereCMCAL calDlg;CMatrixDlg:OnOK();calDlg.DoModal();void CMatrixDlg:OnCancel() / TODO: Add extra cleanup hereCDialog:OnCancel(); AfxMessageBox(欢迎下次继续使用_);矩阵特征值特征向量部分代码void CMCAL:OnCalculateall() / TODO: Add your control notification handler code hereUpdateData(TRUE);if(HaveMatrix)m_Result=矩阵A:rn; Matrix=new doublem_N*m_N; int k=0;/获得矩阵编辑框的数据 for(int i=0;iGetWindowText(s);m_Result+=s+ ;if(i+1)%m_N=0)m_Result+=rn; Matrixi=atof(s); k+;m_Result+=rn; MatrixCal(m_N,Matrix,m_Eps);UpdateData(FALSE);void CMCAL:OnCalculatev() / TODO: Add your control notification handler code hereUpdateData(TRUE);if(HaveMatrix)m_Result=矩阵A:rn; Matrix=new doublem_N*m_N; int k=0;/获得矩阵编辑框的数据 for(int i=0;iGetWindowText(s);m_Result+=s+ ;if(i+1)%m_N=0)m_Result+=rn; Matrixi=atof(s); k+;m_Result+=rn;MatrixCalA(m_N,Matrix,m_Eps);UpdateData(FALSE);矩阵重置代码void CMCAL:OnReset() / TODO: Add your control notification handler c

温馨提示

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

评论

0/150

提交评论