当前位置:文档之家› 数值分析试验幂法与反幂法matlab

数值分析试验幂法与反幂法matlab

一、问题的描述及算法设计
(一)问题的描述
我所要做的课题是:对称矩阵的条件数的求解设计 1、求矩阵A 的二条件数
问题 A=⎥⎥
⎥⎦

⎢⎢⎢⎣⎡----210121012 2、设计内容:
1)采用幂法求出A 的 错误!未找到引用源。

. 2)采用反幂法求出A 的错误!未找到引用源。

.
3)计算A 的条件数 ⅡA Ⅱ2* ⅡA -1Ⅱ2=cond2(A )=错误!未找到引用源。

/错误!未找到引用源。

.(精度要求为10-6) 3、设计要求 1)求出ⅡA Ⅱ2。

2)并进行一定的理论分析。

(二)算法设计
1、幂法算法
(1)取初始向量u )0((例如取u )0(=(1,1,…1)T ),置精度要求ε,置k=1. (2)计算
v )(k =Au )1(-k ,m k =max(v )(k ), u )(k = v )(k / m k
(3)若| m k = m 1-k |<ε,则停止计算(m k 作为绝对值最大特征值1λ,u )(k 作为相应的特征向量)否则置k=k+1,转(2) 2、反幂法算法
(1)取初始向量u )0((例如取u )0(=(1,1,…1)T ),置精度要求ε,置k=1. (2)对A 作LU 分解,即A=LU
(3)解线性方程组 Ly )(k =u )1(-k ,Uv )(k =y )(k (4)计算
m k =max(v )(k ), u )(k = v )(k / m k
(5)若|m k =m 1-k |<ε,则停止计算(1/m k 作为绝对值最小特征值n λ,u )(k 作
为相应的特征向量);否则置k=k+1,转(3).
二、算法的流程图(一)幂法算法的流程图
(二)反幂法算法的流程图
三、算法的理论依据及其推导
(一)幂法算法的理论依据及推导
幂法是用来确定矩阵的主特征值的一种迭代方法,也即,绝对值最大的特征值。

稍微修改该方法,也可以用来确定其他特征值。

幂法的一个很有用的特性是它不仅可以生成特征值,而且可以生成相应的特征向量。

实际上,幂法经常用来求通过其他方法确定的特征值的特征向量。

1、幂法的迭代格式与收敛性质
设n 阶矩阵A 的特征值1λ,2λ,…,n λ是按绝对值大小编号的,x i (i=1,2,…,n)为对应i λ的特征向量,且1λ为单根,即
|1λ|>|2λ|≥…≥|n λ|
则计算最大特征值与特征向量的迭代格式为
v )(k =Au )1(-k ,m k =max(v )(k ), u )(k = v )(k / m k (1)
其中max(v )(k )表示向量v )(k 绝对值的最大分量。

2、对于幂法的定理
按式(1)计算出m k 和u )(k 满足 ∞
>-k lim m k =1λ, ∞
>-k lim u )(k =
)
max (11
x x
(二)反幂法算法的理论依据及推导
反幂法是用来计算绝对值最小的特征值忽然相应的特征向量的方法。

是对幂法的修改,可以给出更快的收敛性。

1、反幂法的迭代格式与收敛性质
设A 是非奇异矩阵,则零不是特征值,并设特征值为
|1λ|≥|2λ|≥…≥|1-n λ|>|n λ|
则按A 1-的特征值绝对值的大小排序,有 |
n
λ1
|>|
1
1
-n λ|≥…≥|
1
1
λ|
对A 1-实行幂法,就可得A 1-的绝对值最大的特征值1/n λ和相应的特征向量,即A 的绝对值最小的特征值和相应的特征向量。

由于用A 1-代替A 作幂法计算,因此该方法称为反幂法,反幂法的迭代格
式为 v )(k = A 1-u )1(-k ,m k =max(v )(k ), u )(k = v )(k / m k (2) 2、对于反幂法的定理
按式(2)计算出的m k 和u )(k 满足:
∞>-k lim m k =n
λ1
, ∞>-k lim u )(k =)max (n n x x
在式(2)中,需要用到A 1-,这给计算带来很大的不方便,因此,把(2)式的第一式改为求解线性方程组
A v )(k = u )1(-k (3) 但由于在反幂法中,每一步迭代都需求解线性方程组(3)式,迭代做了大量的重复计算,为了节省工作量,可事先把矩阵A 作LU 分解,即 A=LU 所以线性方程组(3)改为
Ly )(k =u )1(-k ,Uv )(k =y )
(k
四、相关的数值结果
(一)幂法程序的运行结果
m = 3.4142 u = -0.7071 index = 1
1.0000
-0.7071
(二)反幂法程序的运行结果
m 0 = 0.5858 u = 0.7071 index = 1 1.0000 0.7071
(三)矩阵A 的二条件数的结果
ⅡA Ⅱ2* ⅡA -1Ⅱ2=cond2(A )=m/ m 0=3.4142/0.5858=5.828269
五、数值计算结果的分析
求n阶方阵A的特征值和特征向量,是实际计算中常常碰到的问题。

对于n 阶矩阵A,若存在数λ和n维向量x满足
Ax=λx (1)
则称λ为矩阵A的特征值,x为相应的特征向量。

由线性代数知识可知,特征值是代数方程
|λI-A|=λn+a
λ1-n+…+a1-nλ+a n=0 (2)
1
的根。

从表面上看,矩阵特征值与特征向量的求解问题似乎很简单,只需求解方程(2)的根,就能得到特征值λ,再解齐次方程组
(λI-A)x=0 (3)的解,就可得到相应的特征向量。

上述方法对于n很小时是可以的。

但当n稍大时,计算工作量将以惊人的速度增大,并且由于计算带有误差,方程(2)未必是精确的特征方程,自然就不必说求解方程(2)与(3)的困难了。

本次实验所用的幂法和反幂法分别是求解最大特征值和最小特征值,并根据它们的结果求解二条件数。

幂法和反幂法的Matlab程序很好的解决了手算时所会遇到的麻烦。

通过实验我们可以看到,幂法程序可以用来计算矩阵绝对值最大的特征值及相应的特征向量。

幂法的缺点是开始的时候并不知道矩阵是否有单一的主特征值。

也不知道如何选择x
以保证它关于矩阵特征向量的表达中包含一个与主特
征值相关的非零特征向量。

反幂法程序可以用来计算矩阵绝对值最小的特征值及相应的特征向量,反幂法的收敛是线性的,它是对幂法的修改,可以给出更快的收敛性。

六、附件
(一) 幂法程序
/*幂法程序,函数名:pow.m*/
function[m,u,index]=pow(A,ep,N)
%A为矩阵;ep为精度要求;N为最大迭代次数;m为绝对值最大的特征值;u为对应最大特征值的特征向量。

N=100;
ep=1e-6;
n=length(A);u=ones(n,1);
index=0;k=0;m1=0;
while k<=N
v=A*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
输入A=[2 -1 0;-1 2 -1;0 -1 2];
[m,u,index]=pow(A,1e-6)
(二) 反幂法程序
/*反幂法程序,函数名:pow_inv.m*/
,u,index]=pow_inv(A,ep,N)
function[m
%A为矩阵;ep为精度要求;N为最大迭代次数;m
为绝对值最小的特征值;
u为对应最小特征值的特征向量。

N=100;
ep=1e-6;
n=length(A);u=ones(n,1);
index=0;k=0;m1=0;
invA=inv(A);
while k<=N
v=invA*u;[vmax,i]=max(abs(v));
m
0=v(i);u=v/ m
;
if abs(m-m1)<ep
index=1;break; end
m1 m
;k=k+1; end
m
0=1/ m
;
输入A=[2 -1 0;-1 2 -1;0 -1 2]; [m
,u,index]=pow_inv(A,1e-6)
七、参考文献:
(1)薛毅.数值分析与实验.北京工业大学出版社.2005
(2)杜廷松等. 数值分析及实验.科学出版社,2006
(3)Richard L.Burden等. 数值分析(第七版)高等教育出版社,2005
数理系课程设计评分表
课程名称:
教师签名:
日期:
THANKS !!!
致力为企业和个人提供合同协议,策划案计划书,学习课件等等
打造全网一站式需求
欢迎您的下载,资料仅供参考。

相关主题