西京学院数学软件实验任务书
课程名称数学软件实验班级数0901 学号0912020107 姓名李亚强
实验课题矩阵主特征值及相应特征向量的乘幂法(主特征值为单根,主特征值实重根,主特征值为共轭复根,主特征值为互反的实单根),原点平移法,Rayleigh商加速法
实验目的熟悉矩阵主特征值及相应特征向量的乘幂法(主特征值为单根,主特征值实重根,主特征值为共轭复根,主特征值为互反的实单根),原点平移法,Rayleigh 商加速法
实验要求
运用Matlab/C/C++/Java/Maple/Mathematica等其中
一种语言完成
实验内容矩阵主特征值及相应特征向量的乘幂法矩阵主特征值的原点平移法
矩阵主特征值的Rayleigh商加速法
成绩教师
实验十实验报告
一、实验名称:矩阵主特征值及相应特征向量的乘幂法(主特征值为单根,主特征值实重根,主特征值为共轭复根,主特征值为互反的实单根),原点平移法,Rayleigh商加速法。
二、实验目的:熟悉矩阵主特征值及相应特征向量的乘幂法(主特征值为单根,主特征值实重根,主特征值为共轭复根,主特征值为互反的实单根),原点平移法,Rayleigh商加速法,提高matlab编程能力。
三、实验要求:运用Matlab/C/C++/Java/Maple/Mathematica等其中一种语言完成设计矩阵主特征值及相应特征向量的常用算法。四、实验内容:
%矩阵主特征值及相应特征向量的乘幂法
function [l,v,s]=pmethod(A,x0,eps)
if nargin==2
eps = 1.0e-6;
end
v = x0;
M = 5000;
m = 0;
l = 0;
for(k=1:M)
y = A*v;
m = max(y);
v = y/m;
if(abs(m - l) l = m; s = k; return; else if(k==M) disp('迭代步数太多,收敛速度太慢!'); l = m; s = M; else l = m; end end end %原点平移法 function [m,u]=YDPY(A,ep,Nmax) if nargin<3 Nmax=500; end if nargin<2 ep=1e-7; end n=length(A); u=ones(n,1); k=0; m1=0; while k<=Nmax v=A*u; [vmax,i]=max(abs(v)); m=v(i); u=v/m; if abs(m-m1) break; end m1=m; k=k+1; end k %Rayleigh商加速法 function [l,v,s]=Rpmethod(A,x0,eps) if nargin==2 eps = 1.0e-6; end v = x0; M = 5000; m = 0; l = 0; for(k=1:M) y = A*v; m = (y'*v)/(v'*v); if(rank(m)>1) m=(y*v')/(v*v'); end v = y/m; if(abs(m - l) l = m; s = k; return; else if(k==M) disp('迭代步数太多,收敛速度太慢!'); l = m; s = M; else l = m; end end end 五、实验结果: >> A=[3 4 3;1 2 4;7 6 2]; >> x0=[1 1 1]'; >> [l,v,s]=pmethod(A,x0) l = 10.3687 v = 0.7128 0.5631 1.0000 s = 14 >> [m,u]=YDPY(A) k = 14 m = 10.3687 u = 0.7128 0.5631 1.0000 >>[l,v,s]=Rpmethod(A,x0) l = 10.3687 v = 0.9603 0.7586 1.3471 s = 13