数值分析试验幂法与反幂法matlab
一、问题的描述及算法设计
(一)问题的描述
我所要做的课题是:对称矩阵的条件数的求解设计
1、求矩阵A的二条件数
问题 A=
2、设计内容:
1)采用幂法求出A的 .
2)采用反幂法求出A的.
3)计算A的条件数 ⅡAⅡ2* ⅡA-1Ⅱ2=cond2(A)=/.(精度要求为10-6)
3、设计要求
1)求出ⅡAⅡ2。
2)并进行一定的理论分析。
(二)算法设计
1、幂法算法
(1)取初始向量u(例如取u=(1,1,…1)),置精度要求,置k=1.
(2)计算
v=Au,m=max(v), u= v/ m
(3)若| m= m|
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|
二、算法的流程图
(一)幂法算法的流程图
no
yes
(二)反幂法算法的流程图
no
yes
三、算法的理论依据及其推导
(一)幂法算法的理论依据及推导
幂法是用来确定矩阵的主特征值的一种迭代方法,也即,绝对值最大的特征值。稍微修改该方法,也可以用来确定其他特征值。幂法的一个很有用的特性是它不仅可以生成特征值,而且可以生成相应的特征向量。实际上,幂法经常用来求通过其他方法确定的特征值的特征向量。
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)式的第一式改为求解线性方程组
A v= u (3)
但由于在反幂法中,每一步迭代都需求解线性方程组(3)式,迭代做了大量的重复计算,为了节省工作量,可事先把矩阵A作LU分解,即 A=LU
所以线性方程组(3)改为
Ly=u,Uv=y
四、相关的数值结果
(一)幂法程序的运行结果
m = 3.4142 u = -0.7071 index = 1
1.0000
-0.7071
(二)反幂法程序的运行结果
m = 0.5858 u = 0.7071 index = 1
1.0000
0.7071
(三)矩阵A的二条件数的结果
ⅡAⅡ2* ⅡA-1Ⅱ2=cond2(A)=m/ m=3.4142/0.5858=5.828269
五、数值计算结果的分析
求n阶方阵A的特征值和特征向量,是实际计算中常常碰到的问题。对于n阶矩阵A,若存在数和n维向量x满