关于幂法与反幂法的研究.doc

  1. 1、本文档共14页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
关于幂法与反幂法的研究

东北大学秦皇岛分校 数值计算课程设计报告 幂法及反幂法 ????? 学 院 数学与统计学院 专 业 学号 姓名 指导教师 *** *** 成 绩 教师评语: 指导教师签字: 2014年7月07日 1 绪 论 课题的背景阶矩阵,若存在数和维向量满足:,则称为矩阵的特征值,为相应的特征向量。 病态矩阵:求解方程组时对数据的小扰动很敏感的矩阵。希尔伯特矩阵是一类著名的病态矩阵个线性无关的特征向量,即有一个完全的特征向量组。 2 MATLAB特征值计算工具简介 说明:(1)输入参量必须是方阵; (2)输出参量是一个矩阵,它的各列是方阵的特征向量; (3)输出方阵是一个对角阵,其元素是方阵的特征值,与同列向量相对应; (4)当不写输出格式时,只输出由得特征值为元素的列阵; (5)如果中含有小到跟截断误差相当的元素时,加写输入参数“nobalance”,它可以提高小元素的作用,通常可以省略该参数,以免使结果误差变大。 例题检验:求方阵的特征值和特征向量。 MATLAB实现过程如下: A=[2 1 0;1 3 1;0 1 4]; [V,D]=eig(A) V = 0.7887 -0.5774 0.2113 -0.5774 -0.5774 0.5774 0.2113 0.5774 0.7887 D = 1.2679 0 0 0 3.0000 0 0 0 4.7321 3 幂 法 3.1 幂法算法的理论基础及推导 设实矩阵有一个完备的特征向量组(矩阵有个线性无关的特征向量),其特征值为,相应的特征向量为。已知A的主特征值是实根,且满足条件。 现在讨论求及的方法: 幂法的基本思想是任取一个非零的初始向量,由矩阵构造一向量序列 称为迭代向量。 由假设,可表示为 (设) (3.1) 于是 (3.2) 其中。由假设,故,从而。这说明序列越来越接近的对应于的特征向量,或者说当充分大时,即迭代向量为的特征值的近似向量。 下面再考虑主特征值的计算,用表示的第个分量,则,故。也就是说两相邻的迭代向量分量的比值收敛到主特征值。 通过以上推论可以得出结论,设有个线性无关的特征向量(即非亏损的),主特征值满足,则对任何非零初始向量,构造的向量序列收敛到主特征向量;收敛到主特征值。(定理一) 幂法只能对非亏损矩阵求实的主特征值,且常用于实对称矩阵。 3.2 幂法算法的迭代向量规范化 应用幂法计算的主特征值及对应的特征向量时,如果(或),迭代向量的各个不等于零的分量将随而趋向于无穷(或趋向于零),这样在计算机实现时就可能“溢出”。为了克服这个缺点,就需要将迭代向量加以规范化。 设有一向量,将其规范化得到向量,其中表示向量的绝对值最大的分量,即如果有,则,且为所有绝对值最大的分量中的最小下标。 任取一初始向量,构造向量序列: 由(3.1)式有, 同理,可得到 结论:设有个线性无关的特征向量,主特征值满足,则对任意非零初始向量,按下述方法构造的向量序列,: 则有;。 3.3 幂法算法 1、算法步骤 (1)取初始向量(例如取),置精度要求,置。 (2)计算 ,, (3)若,则停止计算(作为绝对值最大特征值,作为相应的特征向量)否则置,转(2)。 2、实现过程 在MATLAB中没有提供现成的函数幂法,通过自定义编写函数实现幂法。其代码如下: function [l,v,s]=mifa(A,x0,eps) %A为已知矩阵 %x0为迭代初始向量 %eps为迭代精度 %l为求得的矩阵主特征值 %v为求得的矩阵主特征向量 %s为迭代步数 if nargin==2 eps=1.0e-6; end v=x0; %v为主特征向量 M=5000; %对迭代步数限制 m=0; l=0; for k=1:M y=A*v; m=max(y); %m为模的最大分量 v=y/m; if(abs(m-l)eps) l=m; %到所需精度,退出,l为主特征值 s=k; %s为迭代步数 return else if k==m disp(迭代步数太多,收敛速度太慢); l=m;

文档评论(0)

jiayou10 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:8133070117000003

1亿VIP精品文档

相关文档