数值分析试验幂法与反幂法matlab.docx
《数值分析试验幂法与反幂法matlab.docx》由会员分享,可在线阅读,更多相关《数值分析试验幂法与反幂法matlab.docx(10页珍藏版)》请在冰豆网上搜索。
数值分析试验幂法与反幂法matlab
一、问题的描述及算法设计
(一)问题的描述
我所要做的课题是:
对称矩阵的条件数的求解设计
1、求矩阵A的二条件数
210
问题A=121
012
2、设计内容:
1)采用幂法求出A的错误!
未找到引用源。
.
2)采用反幂法求出A的错误!
未找到引用源。
.
-1Ⅱ
3)计算A的条件数ⅡAⅡ2*ⅡA2=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(k1),m
k=max(v(k)),u(k)=v(k)/m
(k)),u(k)=v(k)/m
k
(3)若|mk=mk1|<,则停止计算(mk作为绝对值最大特征值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(k1),Uv(k)=y(k)
(4)计算
m
)
(k),u(k)=v(k)/m
k=max(v
k
(5)若|m
k=mk1|<,则停止计算(1/mk作为绝对值最小特征值n,u
(k)作为
1
相应的特征向量);否则置k=k+1,转(3).
2
二、算法的流程图
(一)幂法算法的流程图
开始
k=0;m1=0
v=A*u
m1=m;k=k+1
[vmax,i]=max(abs(v
m=v(i);u=v/m
absn(mo-m1)<1e-6
yes
index=1;break;
输出:
m,u,index
结束
3
(二)反幂法算法的流程图
开始
输入A;[m,u,index]=pow_inv(A,1e-6)
k=0;m1=0
v=invA*u
m1=m;k=k+1
[vmax,i]=max(abs(v))
m=v(i);u=v/m
abs(nmo-m1)<1e-6
yes
index=1;break;
输出:
m,u,index
输入A;
结束
4
三、算法的理论依据及其推导
(一)幂法算法的理论依据及推导
幂法是用来确定矩阵的主特征值的一种迭代方法,也即,绝对值最大的特征
值。
稍微修改该方法,也可以用来确定其他特征值。
幂法的一个很有用的特性是
它不仅可以生成特征值,而且可以生成相应的特征向量。
实际上,幂法经常用来
求通过其他方法确定的特征值的特征向量。
1、幂法的迭代格式与收敛性质
设n阶矩阵A的特征值1,2,⋯,n是按绝对值大小编号的,xi(i=1,2,⋯,n)
为对应i的特征向量,且1为单根,即
|
1|>|2|≥⋯≥|n|
则计算最大特征值与特征向量的迭代格式为
v
(k)=Au(k1),m
k=max(v(k)),u(k)=v(k)/m
(k)),u(k)=v(k)/m
k
(1)
其中max(v
)
(k)表示向量v
(k)绝对值的最大分量。
2、对于幂法的定理
按式
(1)计算出mk和u
(k)满足
limmk=1,
k
limu
k
(k)=
x
1
max(x1)
(二)反幂法算法的理论依据及推导
反幂法是用来计算绝对值最小的特征值忽然相应的特征向量的方法。
是对幂
法的修改,可以给出更快的收敛性。
1、反幂法的迭代格式与收敛性质
设A是非奇异矩阵,则零不是特征值,并设特征值为
|
1|≥|2|≥⋯≥|n1|>|n|
则按A
1的特征值绝对值的大小排序,有
111
||>||≥⋯≥||
nn11
对A
1实行幂法,就可得A1的绝对值最大的特征值1/
n和相应的特征向量,即
A的绝对值最小的特征值和相应的特征向量。
由于用A
1代替A作幂法计算,因此该方法称为反幂法,反幂法的迭代格式
5
为v
)
(k=A1u(k1),m
)
(k),u(k)=v(k)/m
k=max(v
k
(2)
2、对于反幂法的定理
按式
(2)计算出的mk和u
(k)满足:
x
1
)
(k=n
limmk=,limu
kk
max(xn
n
)
在式
(2)中,需要用到A
1,这给计算带来很大的不方便,因此,把
(2)式的
第一式改为求解线性方程组
Av
(k)=u(k1)(3)
但由于在反幂法中,每一步迭代都需求解线性方程组(3)式,迭代做了大量的
重复计算,为了节省工作量,可事先把矩阵A作LU分解,即A=LU
所以线性方程组(3)改为
Ly
)
(k=u(k1),Uv
)
(k=y
(k)
四、相关的数值结果
(一)幂法程序的运行结果
m=3.4142u=-0.7071index=1
1.1
-0.7071
(二)反幂法程序的运行结果
m0=0.5858u=0.7071index=1
1.1
0.7071
(三)矩阵A的二条件数的结果
-1Ⅱ
ⅡAⅡ2*ⅡA2=cond2(A)=m/m
0=3.4142/0.5858=5.828269
6
五、数值计算结果的分析
求n阶方阵A的特征值和特征向量,是实际计算中常常碰到的问题。
对于n
阶矩阵A,若存在数和n维向量x满足
Ax=x
(1)
则称为矩阵A的特征值,x为相应的特征向量。
由线性代数知识可知,特征值是代数方程
|I-A|=
n+a
1
n1+⋯+a
n+an=0
(2)
1
的根。
从表面上看,矩阵特征值与特征向量的求解问题似乎很简单,只需求解方
程
(2)的根,就能得到特征值,再解齐次方程组
(I-A)x=0(3)
的解,就可得到相应的特征向量。
上述方法对于n很小时是可以的。
但当n稍大时,计算工作量将以惊人的速
度增大,并且由于计算带有误差,方程
(2)未必是精确的特征方程,自然就不
必说求解方程
(2)与(3)的困难了。
本次实验所用的幂法和反幂法分别是求解
最大特征值和最小特征值,并根据它们的结果求解二条件数。
幂法和反幂法的
Matlab程序很好的解决了手算时所会遇到的麻烦。
通过实验我们可以看到,幂法程序可以用来计算矩阵绝对值最大的特征值及
相应的特征向量。
幂法的缺点是开始的时候并不知道矩阵是否有单一的主特征
值。
也不知道如何选择x0以保证它关于矩阵特征向量的表达中包含一个与主特
征值相关的非零特征向量。
反幂法程序可以用来计算矩阵绝对值最小的特征值及
相应的特征向量,反幂法的收敛是线性的,它是对幂法的修改,可以给出更快的
收敛性。
7
六、附件
(一)幂法程序
/*幂法程序,函数名:
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;
whilek<=N
v=A*u;[vmax,i]=max(abs(v));
m=v(i);u=v/m;
ifabs(m-m1)index=1;break;
end
m1=m;k=k+1;
end
输入A=[2-10;-12-1;0-12];
[m,u,index]=pow(A,1e-6)
(二)反幂法程序
/*反幂法程序,函数名:
pow_inv.m*/
function[m0,u,index]=pow_inv(A,ep,N)
%A为矩阵;ep为精度要求;N为最大迭代次数;m
0为绝对值最小的特征值;u
为对应最小特征值的特征向量。
N=100;
ep=1e-6;
n=length(A);u=ones(n,1);
8
index=0;k=0;m1=0;
invA=inv(A);
whilek<=N
v=invA*u;[vmax,i]=max(abs(v));
m
0=v(i);u=v/m0;
ifabs(m-m1)index=1;break;
end
m1m
0;k=k+1;
end
m
0=1/m0;
输入A=[2-10;-12-1;0-12];
[m
0,u,index]=pow_inv(A,1e-6)
9
七、参考文献:
(1)薛毅.数值分析与实验.北京工业大学出版社.2005
(2)杜廷松等.数值分析及实验.科学出版社,2006
(3)RichardL.Burden等.数值分析(第七版)高等教育出版社,2005
10
数理系课程设计评分表
课程名称:
项目评价
设计方案的合理性与创造性
设计与调试结果
设计说明书的质量
答辩陈述与回答问题情况
课程设计周表现情况
综合成绩
教师签名:
日期:
11