数值分析幂法与反幂法_matlab程序
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数值分析幂法与反幂法 matlab程序
随机产生一对称矩阵,对不同的原点位移和初值(至少取3个)分别使用幂法求计算矩阵的主特征值及主特征向量,用反幂法求计算矩阵的按模最小特征值及特征向量。
要求
1)比较不同的原点位移和初值说明收敛性
2)给出迭代结果,生成DOC文件。
3)程序清单,生成M文件。wo
解答:
>> A=rand(5) %随机产生5*5矩阵求随机矩阵
A =
0.7094 0.1626 0.5853 0.6991 0.1493
0.7547 0.1190 0.2238 0.8909 0.2575
0.2760 0.4984 0.7513 0.9593 0.8407
0.6797 0.9597 0.2551 0.5472 0.2543
0.6551 0.3404 0.5060 0.1386 0.8143
>> B=A+A' %A矩阵和A的转置相加,得到随机对称矩阵B
B =
1.4187 0.9173 0.8613 1.3788 0.8044
0.9173 0.2380 0.7222 1.8506 0.5979
0.8613 0.7222 1.5025 1.2144 1.3467
1.3788 1.8506 1.2144 1.0944 0.3929
0.8044 0.5979 1.3467 0.3929 1.6286
B=⎥⎥⎥
⎥⎥
⎥
⎦
⎤
⎢⎢⎢
⎢⎢
⎢
⎣⎡6286.13929
.03467
.15979
.08044
.03929.00944.12144.18506.13788.13467.12144.15025.17222.08613.05979
.08506.17222.02380.09173.08044.03788.18613.09173.04187.1
编写幂法、反幂法程序:
function [m,u,index,k]=pow(A,u,ep,it_max) % 求矩阵最大特征值的幂法,其中 % A 为矩阵;
% ep 为精度要求,缺省为1e-5;
% it_max 为最大迭代次数,缺省为100; % m 为绝对值最大的特征值;
% u 为对应最大特征值的特征向量;
% index ,当index=1时,迭代成功,当index=0时,迭代失败 if nargin<4
it_max=100; end
if nargin<3 ep=1e-5; end
n=length(A); index=0; k=0; m1=0;
m0=0.01;
% 修改移位参数,原点移位法加速收敛,为0时,即为幂法 I=eye(n) T=A-m0*I
while k<=it_max v=T*u;
[vmax,i]=max(abs(v)); m=v(i); u=v/m;
if abs(m-m1) m=m+m0; m1=m; k=k+1; end function[m,u,index,k]=pow_inv(A,u,ep,it_max) % 求矩阵最大特征值的反幂法,其中 % A为矩阵; % ep为精度要求,缺省为1e-5; % it_max为最大迭代次数,缺省为100; % m为绝对值最大的特征值; % u为对应最大特征值的特征向量; % index,当index=1时,迭代成功,当index=0时,迭代失败 if nargin<4 it_max=100; end if nargin<3 ep=1e-5; end n=length(A); index=0; k=0; m1=0; m0=0; % 修改移位参数,原点移位法加速收敛,为0时,即为反幂法 I=eye(n); T=A-m0*I; invT=inv(T); while k<=it_max v=invT*u; [vmax,i]=max(abs(v)); m=v(i); u=v/m; if abs(m-m1) index=1; break; end m1=m; k=k+1; end m=1/m; m=m+m0; 修改输入的m0的值,所得结果: 幂法: )0( u m0m u index k ⎥⎥⎥⎥⎥⎥⎦ ⎤⎢⎢⎢⎢⎢⎢⎣⎡11111 0 5.2710 []T 7941.00000.19641.07685.09223.0 1 10 0.5 5.2710 []T 7941.00000.19641.07685.09223.0 1 13 0.3 5.2710 []T 7941.00000.19641.07685.09223.0 1 11 0.1 5.2710 []T 7941 .00000.19641.07685.09223 .0 1 10 ⎥⎥⎥⎥⎥⎥⎦ ⎤⎢⎢⎢⎢⎢⎢⎣⎡54321 0 5.2710 ]T 7941.00000.19641.07685.09223 .0 1 9 0.00001 5.2710 []T 7941.00000.19641.07685.09223.0 1 29 0.000005 5.2710 []T 7941.00000.19641.07685.09223.0 1 9 0.000001 5.2710 []T 7941.00000.19641.07685.09223.0 1 9 ⎥⎥⎥⎥⎥⎥⎦ ⎤⎢⎢⎢⎢⎢⎢⎣⎡1589364578 0 5.2710 []T 7941.00000.19641.07685.09223.0 1 10 0.00002 5.2710 []T 7941.00000.19641.07685.09223.0 0 10001 0.00001 5.2710 []T 7941.00000.19641.07685.09223.0 1 10 0.000001 5.2710 []T 7941 .00000 .19641 .07685 .09223 .0 1 10 反幂法: ) 0(u m m u index k ⎥⎥⎥⎥⎥⎥⎦ ⎤⎢⎢⎢⎢⎢⎢⎣⎡11111 0 -0.0039 []T 8078.04050.00000.18199.07725.0--- 1 5 0.00005 -0.0039 []T 8078.04050.00000.18199.07725.0--- 1 5 0.00001 -0.0039 []T 8078.04050.00000.18199.07725.0--- 1 5 0.000005 -0.0039 []T 8078.04050.00000.18199.07725.0--- 1 5 ⎥⎥⎥⎥⎥⎦ ⎤⎢⎢⎢⎢⎢⎢⎣⎡543210 -0.0039 []T 8078.04050.00000.18199.07725.0--- 1 5 0.00001 -0.0039 []T 8078 .04050 .00000 .18199 .07725 .0--- 1 5