文档详情

数值分析实验报告基本QR算法求全部特征值.doc

发布:2017-04-20约1.51千字共3页下载文档
文本预览下载声明
PAGE  PAGE 3 数值分析实验报告 专业 信息与计算科学 班级 信计101 姓名 学号 协作队员 实验日期 2013 年 1 月 5 日 星期 六 成绩评定 教师签名 批改日期 题目 问题提出 给定矩阵, (1)用Matlab函数“eig”求矩阵全部特征值。 (2)用幂法求A的主特征值及对应的特征向量。 (3)用基本QR算法求全部特征值(可用Matlab函数“qr”实现矩阵的QR分解)。 模型建立 用幂法求A的主特征值及对应的特征向量的模型:选取v0=(1,1,1,1,1)T,按照下列公式构造向量序列{uk}{vk} v0=u0≠0vk=Auk-1μk=maxvkuk=vk/μk 则有 limk→∞uk=x1maxx1 limk→∞μk=λ1 循环足够多次后,可以近似得出, λ1=μk x1=uk 求解方法 (1) A=[2 3 4 5 6;4 4 5 6 7;0 3 6 7 8;0 0 2 8 9;0 0 0 1 0]; a=eig(A) (2) pmethod.m function [l,v,s]=pmethod(A,x0,eps) 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; s = M; else l = m; end end end (3) function l = rqrtz(A,M) %QR算法求矩阵全部特征值 %已知矩阵:A %迭代步数:M %求得的矩阵特征值:l A = hess(A); for i=1:M N = size(A); n = N(1,1); u = A(n,n); [q,r]=qr(A-u*eye(n,n)); A = r*q+u*eye(n,n); l = diag(A); end 输出结果 (1) a = 13.1724 6.5519 1.5957 -0.3908 -0.9291 (2) 主特征值 x = 13.1724 对应的特征向量 y = 0.7250 1.0000 0.7930 0.3533 0.0268 (3) 所有特征值 x = 13.1724 6.5519 1.5957 -0.9291 -0.3908 结果分析 三种算法各有优势,但结果差不多,都较为适用。
显示全部
相似文档