数值分析幂法和反幂法文档格式.doc
- 文档编号:4645568
- 上传时间:2023-05-03
- 格式:DOC
- 页数:23
- 大小:378.11KB
数值分析幂法和反幂法文档格式.doc
《数值分析幂法和反幂法文档格式.doc》由会员分享,可在线阅读,更多相关《数值分析幂法和反幂法文档格式.doc(23页珍藏版)》请在冰点文库上搜索。
的解,就可得到相应的特征向量。
上述方法对于n很小时是可以的。
但当n稍大时,计算工作量将以惊人的速度增大,并且由于计算带有误差,方程
(2)未必是精确的特征方程,自然就不必说求解方程
(2)与(3)的困难了。
幂法是一种计算矩阵主特征值(矩阵按模最大的特征值)及对应特征向量的迭代方法,特别是用于大型稀疏矩阵。
反幂法是计算海森伯格阵或三角阵的对应一个给定近似特征值的特征向量的有效方法之一。
二.算法设计及流程图
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)
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).
幂法流程图:
开始
输入A;
[m,u,index]
=pow(A,1e-6)
k=0;
m1=
v=A*u
[vmax,i]=max(abs(v))
m=v(i);
u=v/m
abs(m-m1)<
1e-6
index=1;
break;
输出:
m,u,index
结束
m1=m;
k=k+1
反幂法流程图
[m,u,index]
=pow_inv(A,1e-6)
m1=0
v=invA*u
三、算法的理论依据及其推导
(一)幂法算法的理论依据及推导
幂法是用来确定矩阵的主特征值的一种迭代方法,也即,绝对值最大的特征值。
稍微修改该方法,也可以用来确定其他特征值。
幂法的一个很有用的特性是它不仅可以生成特征值,而且可以生成相应的特征向量。
实际上,幂法经常用来求通过其他方法确定的特征值的特征向量。
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的特征值绝对值的大小排序,有
||>
对A实行幂法,就可得A的绝对值最大的特征值1/和相应的特征向量,即A的绝对值最小的特征值和相应的特征向量。
由于用A代替A作幂法计算,因此该方法称为反幂法,反幂法的迭代格式为v=Au,m=max(v),u=v/m
(2)
2、对于反幂法的定理
按式
(2)计算出的m和u满足:
m=,u=
在式
(2)中,需要用到A,这给计算带来很大的不方便,因此,把
(2)式的第一式改为求解线性方程组
Av=u(3)
但由于在反幂法中,每一步迭代都需求解线性方程组(3)式,迭代做了大量的重复计算,为了节省工作量,可事先把矩阵A作LU分解,即A=LU
所以线性方程组(3)改为
Ly=u,Uv=y
四、算法程序设计代码
幂法程序,在matlab中建立一个M文件并保存。
%pow.m
function[m,u,index,k]=pow(A,u,ep,it_max)
ifnargin<
4
it_max=1000;
end
3
ep=1e-5;
n=length(A);
index=0;
m1=0;
m0=0;
I=eye(n);
T=A-m0*I;
whilek<
=it_max
v=T*u;
[vmax,i]=max(abs(v));
m=v(i);
u=v/m;
ifabs(m-m1)<
ep;
index=1;
break;
end
m=m+m0;
m1=m;
k=k+1;
在matlab输入面板,输入
A=rand(4);
%产生一个4维随机矩阵
B=A+A’;
u=[1111]’;
%设立初始向量
[m,u,index,k]=pow(B,u,ep,it_max)%最多可省略2个参数
程序结束。
在M文件中可以通过改变m0的值改变原点位移,从而达到原点位移加速。
反幂法程序设计代码:
在matlab中建立一个M文件并保存。
%pow_inv.m
function[m,u,index,k]=pow_inv(A,u,ep,it_max)
invT=inv(T);
v=invT*u;
[vmax,i]=max(abs(v));
ep
m=1/m;
m=m+m0;
[m,u,index,k]=pow_inv(B,u,ep,it_max)%最多可省略2个参数
【结果显示】
%在M0=1e-4
>
B=rand(4);
A=B+B’
A=
0.26750.57760.63441.3130
0.57761.15030.76410.1367
0.63440.76410.02570.4193
1.31300.13670.41931.2248
u=[1111]'
;
[m,u,index,k]=pow(A,u)
m=
2.6813
u=
0.8576
0.6934
0.5623
1.0000
index=
1
k=
49
修改M0=1e-3
2.6814
0
1001
修改M0=0%此时为幂法
2.6815
0.6935
10
修改U=[1234]
修改M0=1e-4
k=
9
2.6805
0.5622
7
修改M0=0
9
修改U=[3567]
2.6819
0.8577
0.6937
0.5624
2.6820
总结以上,幂法如下:
U
m0
m
u
index
k
[1111]
0.0001
2.6813
[0.85760.69340.56231.0000]
1
0.001
2.6814
[0.58760.69340.56231.0000]
1001
2.6815
[0.85760.69350.56231.0000]
10
[1234]
9
2.6805
[0.85760.69340.56221.0000]
7
[3567]
2.6819
[0.85770.69370.56241.0000]
2.6914
2.692
反幂法结果显示:
在m0为0时
M0=0.001U=[1111]
M0=0.1u=[1111]
M0=0u=[1357]
M0=0.1u=[1357]
M0=0.5u=[1357]
M0=0u=[2345]
M0=0.1u=[2345]
M0=0.7u=[2345]
综上,反幂法结果如下:
0.1
0.3847
[-0.89961.00000.2726-0.2364]
15
16
[1357]
0.5
[-0.89951.00000.2726-0.2364]
27
17
20
[2345]
0.7
0.7091
[-0.6962-0.44970.21961.0000]
5
19
五、结果分析
采用幂法和反幂法,求矩阵的最大和最小特征值,从原理上看,这两种方法都是迭代法,因此迭代初始向量的选择对计算结果会产生一定影响,主要表现在收敛速度上。
同时,原点位移m的选取也影响收敛的速度。
但原点位移m0的适当选取依赖于对矩阵A的大致了解。
成员
1007024104辛志贤
1007024107张容
1007024108罗言月
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数值 分析 反幂法
![提示](https://static.bingdoc.com/images/bang_tan.gif)