QR基本法和位移QR法矩阵特征值求解.doc

  1. 1、本文档共11页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
实验一:编程实现以下科学计算算法,并举一例应用之。 QR基本法和位移QR法矩阵特征值求解 1.QR基本法 算法说明:QR基本算法是求矩阵特征值的最有效和应用最广泛的一种方法方法,其基本依据是以下两个定理: 设A是n阶矩阵,其n个特征值为λ1、λ2、…λm,那么存在一个酉矩阵U使得UTAU是以λ1、λ2、…λm为对角元的上三角矩阵。 设A是n阶实矩阵,那么,存在一个正交矩阵Q,使得QTAQ为一个准上三角矩阵,它的每一个对角元是A的一个特征值,对角元上的二阶块矩阵的两个特征值是A的一对共轭复特征值。 QR基本算法的过程如下: 给定循环步数M,AT=A,k=1,2,…M,计算: Ak=QkRk Ak+1=RkQk QR基本算法有如下的收敛性质: 如果A的特征值满足|λ1||λ2||λ2|≥…≥|λm|,则QR基本算法产生的矩阵序列{Ak}基本收敛到上三角矩阵(特别,当A为对称阵时,收敛到对角阵),对角元素收敛到A的特征值。 在MATLAB中变成实现的QR基本算法的函数为:qrtz 功能:QR基本算法求矩阵全部特征值。 调用格式:l=qrtz(A,M). 其中,A为已知矩阵; M为迭代步数; L为矩阵A的全部特征值。 QR基本算法的流程图: QR基本算法的MATLAB程序代码如下: function l=qrtz(A,M) for i=1:M [q,r]=qr(A); A=r*q; l=diag(A); end task11.m format long A=[1,5,6;4,7,0;8,11,3] l=qrtz(A,20) disp(??è·?a) l=eig(A) 运行过程和结果: 2.位移QR算法 位移QR法是为了加快QR算法的收敛速度,其算法的迭代过程如下: 给定循环步数M,A1=Hessenberg(A), k=1,2,…M,选择μk,然后计算: Ak-μkI=QkRk Ak+1= QkQk+μkI 一般μk的选择有以下两种考虑方法: 选μk=μk,即瑞利商位移; 迭代过程中,如果子矩阵的两个特征值为实数时,选最接近ak n,n的那个作为μk,即威尔森位移 瑞利商位移QR法流程图如下: 在MATLAB中编程实现的瑞利商位移的QR算法的函数为:rqrtz。 功能:瑞利商位移的QR算法求矩阵全部特征值。 调用格式:T=rqrt(A,M) 其中,A为已知矩阵: M为迭代步数; l为矩阵A的全部特征值 瑞利商位移的QR算法的MATLAB程序如下: function l=rqrtz(A,M) %瑞利商位移QR算法求矩阵全部特征向量? %已知矩阵:A; 迭代步数:M; 求得的矩阵:l; A=hess(A); N=size(A); n=N(1,1); for i=1:M u=A(n,n); [q,r]=qr(A-u*eye(n,n)); A=r*q+u*eye(n,n); end; l=diag(A); end 威尔金森位移的QR算法流程图如下: 在MATLAB中编程实现的威尔金森位移的QR算法的函数为:wilkqrtz 功能:威尔金森的QR算法求矩阵全部特征值。 调用格式:T=wilkqrtz(A,M) 其中,A为已知矩阵; M为迭代步数; l为矩阵A的全部特征值 威尔金森的QR算法的MATLAB程序如下: function l=wilkqrtz(A,M) %威尔金森位移的QR算法求矩阵全部特征值 %已知矩阵:A; 迭代步数:M; 求的矩阵特征值:l A=hess(A); N=size(A); n=N(1,1); for i=1:M A1=A((n-1):n,(n-1):n); t=Chapoly(A1); if(imag(t(1,1))==0imagt(2,1)==0)%两特征值是否为实数 if(abs(t(1,1)-A(n,n))abs(t(1,1)-A(n,n))) u=t(1,1); else u=t(2,1);%选最接近A(n,n)的那个作为u end else u=A(n,n); end [q,r]=qr(A-u*eye(n,n)); A=r*q+u*eye(n,n); l=diag(A); end task12.m A=[6,3,2;4,3,8;7,9,5] disp(èeà?éì??ò?QR??·¨?a£o) l=rqrtz(A,13) disp(wilk??ò?QR??·¨?a£o) l=wilkqrtz(A,13) disp(??è·?a£o) l=eig(A) 运行结果

文档评论(0)

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

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

1亿VIP精品文档

相关文档