当前位置:文档之家› 数值分析幂法和反幂法

数值分析幂法和反幂法

10
修改U=[1 2 34]
修改M0=1e-4
m=
2.6813
u =
0.8576
0.6934
0.5623
1.0000
index =
1
k =
9
修改M0=1e-3
m=
2.6805
u =
0.8576
0.6934
0.5622
1.0000
index =1来自k=7修改M0=0
m=
2.6814
u =
0.8576
0.6934
m =
2.6820
u=
0.8577
0.6937
0.5624
1.0000
index=
1
k =

总结以上,幂法如下:
U
m0
m
u
index
k
[1 1 1 1]
0.0001
2.6813
[0.8576 0.6934 0.5623 1.0000]
1
49
0.001
2.6814
[0.5876 0.6934 0.5623 1.0000]
二.算法设计及流程图
1、幂法算法
(1)取初始向量u (例如取u =(1,1,…1) ),置精度要求 ,置k=1.
(2)计算
v =Au ,m =max(v ), u = v / m
(3)若| m = m |< ,则停止计算(m 作为绝对值最大特征值 ,u 作为相应的特征向量)否则置k=k+1,转(2)
成员
1007024104辛志贤
1007024107张容
1007024108罗言月
2、反幂法算法
(1)取初始向量u (例如取u =(1,1,…1) ),置精度要求 ,置k=1.
(2)对A作LU分解,即A=LU
(3)解线性方程组 Ly =u ,Uv =y
(4)计算
m =max(v ), u = v / m
(5)若|m =m |< ,则停止计算(1/m 作为绝对值最小特征值 ,u 作为相应的特征向量);否则置k=k+1,转(3).
1
9
[3 5 6 7]
0.0001
2.6819
[0.8577 0.6937 0.5624 1.0000]
1
7
0.001
2.6914
[0.8576 0.6934 0.5623 1.0000]
0
1001
0
2.692
[0.8577 0.6937 0.5624 1.0000]
1
7
反幂法结果显示:在m0为0时
>>A=B+B’
A=
0.26750.57760.63441.3130
0.57761.15030.7641 0.1367
0.63440.76410.02570.4193
1.3130 0.13670.41931.2248
>>u=[1111]';
>> [m,u,index,k]=pow(A,u)
m=
2.6813
所以线性方程组(3)改为
Ly =u ,Uv =y
四、算法程序设计代码
幂法程序,在matlab中建立一个M文件并保存。
%pow.m
function[m,u,index,k]=pow(A,u,ep,it_max)
if nargin<4
it_max=1000;
end
ifnargin<3
ep=1e-5;
end
k=k+1;
end
在matlab输入面板,输入
A=rand(4);%产生一个4维随机矩阵
B=A+A’;
u=[1111]’;%设立初始向量
[m,u,index,k]=pow(B,u,ep,it_max)%最多可省略2个参数
程序结束。
在M文件中可以通过改变m0的值改变原点位移,从而达到原点位移加速。
反幂法程序设计代码:
M0=0.001U=[11 1 1]
M0=0.1u=[111 1]
M0=0 u=[135 7]
M0=0.1u=[1 3 57]
M0=0.5 u=[1 3 57]
M0=0u=[2 345]
M0=0.1 u=[2345]
M0=0.7u=[23 45]
综上,反幂法结果如下:
u
m0
m
u
index
k
[1 1 1 1]
0.5623
1.0000
index =
1
k =

修改U=[3 56 7]
修改M0=1e-4
m=
2.6819
u=
0.8577
0.6937
0.5624
1.0000
index=
1
k=
7
修改M0=1e-3
m=
2.6814
u=
0.8576
0.6934
0.5623
1.0000
index =

k=
1001
修改M0=0
1、幂法的迭代格式与收敛性质
设n阶矩阵A的特征值 , ,…, 是按绝对值大小编号的,x (i=1,2,…,n)为对应 的特征向量,且 为单根,即
| |>| |≥…≥| |
则计算最大特征值与特征向量的迭代格式为
v =Au ,m =max(v ), u = v / m (1)
其中max(v )表示向量v 绝对值的最大分量。
2、对于幂法的定理
按式(1)计算出m 和u 满足
m = , u =
(二)反幂法算法的理论依据及推导
反幂法是用来计算绝对值最小的特征值忽然相应的特征向量的方法。是对幂法的修改,可以给出更快的收敛性。
1、反幂法的迭代格式与收敛性质
设A是非奇异矩阵,则零不是特征值,并设特征值为
| |≥| |≥…≥| |>| |
A=rand(4);%产生一个4维随机矩阵
B=A+A’;
u=[1111]’;%设立初始向量
[m,u,index,k]=pow_inv(B,u,ep,it_max)%最多可省略2个参数
程序结束。
在M文件中可以通过改变m0的值改变原点位移,从而达到原点位移加速。
【结果显示】
%在M0=1e-4
>>B=rand(4);
上述方法对于n很小时是可以的。但当n稍大时,计算工作量将以惊人的速度增大,并且由于计算带有误差,方程(2)未必是精确的特征方程,自然就不必说求解方程(2)与(3)的困难了。幂法是一种计算矩阵主特征值(矩阵按模最大的特征值)及对应特征向量的迭代方法,特别是用于大型稀疏矩阵。反幂法是计算海森伯格阵或三角阵的对应一个给定近似特征值的特征向量的有效方法之一。
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)<ep
index=1;
break;
end
m1=m;
k=k+1;
end
m=1/m;
m=m+m0;
在matlab输入面板,输入
Ax= x (1)
则称 为矩阵A的特征值,x为相应的特征向量。
由高等代数知识可知,特征值是代数方程
| I-A|= +a +…+a +a =0 (2)
的根。从表面上看,矩阵特征值与特征向量的求解问题似乎很简单,只需求解方程(2)的根,就能得到特征值 ,再解齐次方程组
( I-A)x=0 (3)
的解,就可得到相应的特征向量。
则按A 的特征值绝对值的大小排序,有
| |>| |≥…≥| |
对A 实行幂法,就可得A 的绝对值最大的特征值1/ 和相应的特征向量,即A的绝对值最小的特征值和相应的特征向量。
由于用A 代替A作幂法计算,因此该方法称为反幂法,反幂法的迭代格式为 v = A u ,m =max(v ), u = v / m (2)
u=
0.8576
0.6934
0.5623
1.0000
index=
1
k=
49
修改M0=1e-3
m =
2.6814
u =
0.8576
0.6934
0.5623
1.0000
index=
0
k=
1001
修改M0=0%此时为幂法
m=
2.6815
u=
0.8576
0.6935
0.5623
1.0000
index =

k =
题目
幂法和反幂法求矩阵特征值




随机产生一对称矩阵,对不同的原点位移和初值(至少取3个)分别使用幂法求计算矩阵的主特征值及主特征向量,用反幂法求计算矩阵的按模最小特征值及特征向量,并比较不同的原点位移和初值说明收敛。
要求
1.认真读题,了解问题的数学原形;
2.选择合适问题求解的数值计算方法;
3.设计程序并进行计算;
0.1
0.3847
[-0.8996 1.0000 0.2726 -0.2364]
1
15
0.001
0.3847
[-0.8996 1.0000 0.2726 -0.2364]
1
16
0
0.3847
[-0.8996 1.0000 0.2726 -0.2364]
1
16
[1 3 5 7]
相关主题