ImageVerifierCode 换一换
格式:DOCX , 页数:14 ,大小:126.24KB ,
资源ID:10769091      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/10769091.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(幂法求矩阵最大特征值.docx)为本站会员(b****8)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

幂法求矩阵最大特征值.docx

1、幂法求矩阵最大特征值幂法求矩阵最大特征值摘要在物理、力学和工程技术中的很多问题在数学上都归结为求矩阵特征值的问题,而在某些工程、物理问题中,通常只需要求出矩阵的最大的特征值(即主特征值)和相应的特征向量,对于解这种特征值问题,运用幂法则可以有效的解决这个问题。幂法是一种计算实矩阵A的最大特征值的一种迭代法,它最大的优点是方法简单。对于稀疏矩阵较合适, 但有时收敛速度很慢。 用java来编写算法。这个程序主要分成了三个大部分:第一部分为将矩阵转化为线性方程组;第二部分为求特征向量的极大值;第三部分为求幂法函数块。其基本流程为幂法函数块通过调用将矩阵转化为线性方程组的方法,再经过一系列的验证和迭代

2、得到结果。 关键词:幂法;矩阵最大特征值;java;迭代POWER METHOD TO CALCULATE THE MAXIMUM EIGENVALUE MATRIXABSTRACTIn physics, mechanics and engineering technology of a lot of problems in math boil down to matrix eigenvalue problem, and in some engineering, physical problems, usually only the largest eigenvalue of the matr

3、ix (i.e., the main characteristics of the value) and the corresponding eigenvectors, the eigenvalue problem for solution, using the power law can effectively solve the problem.Power method is A kind of computing the largest eigenvalue of real matrix A of an iterative method, its biggest advantage is

4、 simple.For sparse matrix is right, but sometimes very slow convergence speed.Using Java to write algorithms.This program is mainly divided into three most: the first part for matrix can be converted to linear equations;The second part is the eigenvector of the maximum;The third part is the exponent

5、iation method of function block.Its basic process as a power law function block by calling the method of matrix can be converted to linear equations, then after a series of validation and iteration to get the results. Key words: Power method; Matrix eigenvalue; Java; The iteration 1 幂法.1 1.1 幂法基本思想.

6、11.2规范化.22 概要设计.3 2.1 设计背景. .3 2.2 运行流程 .32.3运行环境.33 程序详细设计 .4 3.1 第一部分:矩阵转化为线性方程组. .4 3.2 第二部分:特征向量的极大值.4 3.3 第三部分:求幂法函数块.54 运行过程及结果 .6 4.1 运行过程. .6 4.2 运行结果.6 4.3 结果分析.65 心得体会 .7参考文献.8附录:源程序.9 1 幂法设An有n个线性相关的特征向量v1,v2,vn,对应的特征值 1, 2, n,满足| 1| | 2| | n|1.1 基本思想因为v1,v2,vn为Cn的一组基,所以任给x(0) 0, 线性表示所以有

7、若a1 0,则因知,当k充分大时 A(k)x(0) 1ka1v1 = cv1 属 1的特征向量,另一方面,记max(x) = xi,其中|xi| = |x|,则当k充分大时,若a1 = 0,则因舍入误差的影响,会有某次迭代向量在v1方向上的分量不为0,迭代下去可求得 1及对应特征向量的近似值。1.2 规范化在实际计算中,若| 1| 1则| 1ka1| ,若| 1| | r +1| | n|则定理结论仍成立。此时不同初始向量的迭代向量序列一般趋向于 1的不同特征向量。2 概要设计2.1 设计背景用java程序来实现幂法求矩阵最大特征值。2.2 运行流程本程序分为了几大部分,通过方法间的相互调用,

8、达到求解目的:首先matrixx方法的作用是将矩阵A与向量X相乘,结果存储在Y中,即将方程组呈现出来,slove方法求出各未知数的最大值,程序的主体方法mifa通过do while 循环中调用matrixx方法实现幂法函数。2.3 运行环境 Windows 7 2009 JDK 6.03 程序详细设计首先在桌面里新建文件夹,并运行程序J+ 6.0;令一维矩阵u = 3,4,5; 双精度浮点型初值为 a = 1.0,b = 2.0;整型变量方程组的阶数 n=3;双精度浮点型方程组系数矩阵为 A = 7,3,-2,3,4,1,-2,-1,3;3.1 第一部分:矩阵转化为线性方程组将二维矩阵A,一维

9、矩阵x,y以及阶数n作为它的形参,通过for循环将Ax相乘得到的结果存储在Y中。 其执行程序如下:public void matrixx(double A,double x,double y,int n) for(int i=0;in;i+) yi = 0; for(int j=0;jn;j+) yi += Aij*xj; 3.2 第二部分:特征向量的极大值首先将形参double型一维矩阵x中的元素通过for循环取到最大值,并将最大值赋予max。其执行程序如下: public double slove(double x,int n) double max = 0; for(int i=0;ix

10、i+1?xi:xi+1; return max; 3.3 第三部分:求幂法函数块这个方法有五个形参,二维矩阵A,一维矩阵u,双精度浮点型初值a,b矩阵的阶数n。该方法的主体部分在do while中,通过循环迭代matrixx方法和solve方法,解出矩阵的特征值并且比较出最大特征值。通过for循环列出关于该矩阵的线性方程组的所有特征向量。其执行程序如下:public void mifa(double A,double u,double a,double b,int n) double c = 0.0; double c1 = 0.0; int count = 0; double temp=0,

11、0,0; do double u1 = u; matrixx(A,u1,u,n); c = slove(u,n); c1 = c; guifanhua(u,n); printfcount(count,u,n); count+; for(int i =0;ia|Math.abs(c1-c)b); System.out.println(最大特征值为:+c); System.out.println(特征向量为:); for(int i=0;in;i+) System.out.println(ui+); 4 运行过程及结果4.1 运行过程通过J+ 6.0,用for循环将Ax相乘得到的结果存储在Y中,将

12、形参double型数组x中通过for循环取到最大值,在do while 中调用matrixx方法,及solve方法,并打印最大特征值与特征向量。4.2 运行结果经多次调试程序,不再报错,结果如下图:4.3 结果分析该程序运行结果无误,其最大特征值为35.0,是实际运算结果。5 心得体会由于这次课程设计题目是由老师选的,一开始我认为非常难,不知道从哪里下手。并且题目内容还是这学期学的数值分析上的内容。内容也一知半解,但是最后在同学的帮助下我还是完成了这次课程设计,通过这次课程设计收获很多,在该实验中,我学会了为具体操作选择最合适的循环语句及for、while、do.while语句的相互转换使用。

13、最重要的是,明白了JAVA程序中,定义方法中的局部变量时一定要赋初始值,否则编译不能通过会报错;但类中的成员变量则不一定需要。同时通过这次课程设计让我意识到自己的java的基础还是很薄弱,有很多基本的知识都一知半解,不会合理利用学过的东西,在设计的过程中不时地翻阅资料,有时花费一天时间就只能完成一个功能。程序代码完成之后,要进行运行调试,刚开始由于没有调试经验和方法效率很低,同时发现了许多错误,最后同学的帮助下,终于顺利完成了,自己也从中学到了不少东西。更重要的是,在测试过程中的往往发现自己粗心大意犯了很多不必要的错误,通过这次课题,也使我认识到了认真在学习中的重要。以后我要更认真努力的学习j

14、ava。参考文献1 李庆扬 王能超 以大义数值分析华中科技大学出版社 第四版2 李兴华 Java从入门到精通 人民邮电出版社 2010-4-1版3 臧萌 编著 Java入门123清华大学出版社2010-5-1版4 朱福喜.Java语言程序设计(第二版).科学出版社5 李辉 打通经脉 Java 基础入门编程详解中国铁道出版社2010-11-01版6 陈国君等.Java程序设计基础(第二版).清华大学出版社7 Deitel.Java大学基础教程(第六版).电子工业出版社 8 MaryCampione.Java语言导学(第四版).机械工业出版社9 Y.Daniel Liang.Java语言程序设计基

15、础篇(第六版).机械工业出版社10 Kathy Sierra.Head First Java(第二版).东南大学出版社11 喻桃阳 Java快速入门与商用项目培训清华大学出版社2011-03-01版12 温沿书 Java入门与实战教程人民邮电出版社2010-03-01版13 李钟尉 Java范例完全自学手册人民邮电出版社2009-10-114 印旻编著,Java语言与面向对象程序设计,清华大学出版社15 耿详义编著,Java2程序设计实用教程,清华大学出版社16 辛运帏 Java程序设计(第二版) 清华大学出版社源程序public class MifaSolve public static v

16、oid main(String args) / TODO Auto-generated method stub MifaSolve mifaSolve = new MifaSolve(); double u = 3,4,5; double a = 1.0; double b = 2.0; int n=3; double A = 7,3,-2,3,4,1,-2,-1,3; mifaSolve.mifa(A,u,a,b,n); /将矩阵A与向量X相乘,结果存储在Y中(用for循环将Ax相乘得到的结果存储在Y中) public void matrixx(double A,double x,doubl

17、e y,int n) for(int i=0;in;i+) yi = 0; for(int j=0;jn;j+) yi += Aij*xj; /求最大值(将形参double型数组x中通过for循环取到最大值) public double slove(double x,int n) double max = 0; for(int i=0;ixi+1?xi:xi+1; return max; /规范化函数 public void guifanhua(double x,int n) double temp = slove(x,n); for(int i=0;in;i+) xi/=temp; /幂法函

18、数(在do while 中调用matrixx方法,及solve方法,并打印最大特征值与特征向量) public void mifa(double A,double u,double a,double b,int n) double c = 0.0; double c1 = 0.0; int count = 0; double temp=0,0,0; do double u1 = u; matrixx(A,u1,u,n); c = slove(u,n); c1 = c; guifanhua(u,n); printfcount(count,u,n); count+; for(int i =0;ia|Math.abs(c1-c)b); System.out.println(最大特征值为:+c); System.out.println(特征向量为:); for(int i=0;in;i+) System.out.println(ui+); public void printfcount(int count,double u,int n) System.out.println(count); for(int i=0;in;i+) System.out.println(ui);

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1