幂法-反幂法求解矩阵最大最小特征值及其对应的特征向量doc资料
数值计算解矩阵的按模最大最小特征值及对应的特征向量
一.幂法
1. 幂法简介:
当矩阵A 满足一定条件时,在工程中可用幂法计算其主特征值(按模最大)及其特征向量。矩阵A 需要满足的条件为:
(1) 的特征值为A i n λλλλ,0||...||||21≥≥≥>
(2) 存在n 个线性无关的特征向量,设为n x x x ,...,
,21 1.1计算过程:
i n
i i i u x x αα,1
)0()0(∑==,有对任意向量不全为0,则有
111111*********
1111
011)()(...u u a u a u λu λαu αA x A Ax x k n n k n k k n
i i k i i n i i i k )
(k (k))(k αλλλλλα++++=+=+++≈??
????+++======∑∑Λ 可见,当||1
2λλ越小时,收敛越快;且当k 充分大时,有1)1111)11111λαλαλ=???
???==+++(k )(k k (k k )(k x x u x u x ,对应的特征向量即是)(k x 1+。
2 算法实现
.,, 3,,1 , ).5()
5(,,,,||).4();max(,).3()
(max(;0,1).2(,).1()()
()(停机否则输出失败信息转置若转否则输出若计算最大迭代次数,误差限,初始向量输入矩阵βλβεβλβλε←+←<<-←←=←←k k N k y x Ay x x abs x y k N
x A k k k 3 matlab 程序代码
function [t,y]=lpowerA,x0,eps,N) % t 为所求特征值,y是对应特征向量
k=1;
z=0; % z 相当于λ
y=x0./max(abs(x0)); % 规范化初始向量
x=A*y; % 迭代格式
b=max(x); % b 相当于β
if abs(z-b) t=max(x); return; end while abs(z-b)>eps && k k=k+1; z=b; y=x./max(abs(x)); x=A*y; b=max(x); end [m,index]=max(abs(x)); % 这两步保证取出来的按模最大特征值 t=x(index); % 是原值,而非其绝对值。 end 4 举例验证 选取一个矩阵A,代入程序,得到结果,并与eig(A)的得到结果比较,再计算A*y-t*y,验证y是否是对应的特征向量。结果如下: 结果正确,表明算法和代码正确,然后利用此程序计算15阶Hilb矩阵,与eig(A)的得到结果比较,再计算A*y-t*y,验证y是否是对应的特征向量。设置初始向量为x0=ones(15,1),结果显示如下 可见,结果正确。得到了15阶Hilb 矩阵的按模最大特征值和对应的特征向量。 二.反幂法 1.反幂法简介及其理论 在工程计算中,可以利用反幂法计算矩阵按模最小特征值及其对应特征向量。其基本理论如下,与幂法基本相同: x x A x A x x Ax λλλ1 )(11==?=--则,由,可知,A 和A -1的特征值互为倒数, 求A 按模最小特征值即求A -1的按模最大特征值,取倒数即为A 的按模最小特征值所以算法基本相同,区别就是在计算) 1()()1()(1-)1()()1()1(;,+++++===k k k k k k k k x LU A y Ax y A x Ay x x 分解,来计算做对具体计算时,变换为而是时,不是令 2.算法实现 ., );4( ,)) (max(, ,1,).7(),7(,,,1,||).6( ),max().5(), ,().4().3(,)) (max(,0 ,1).2(, ,,,).1(000停机否则输出失败信息转置若否则转停机输出若解方程组作三角分解置最大迭代次数误差限初始向量输入矩阵x abs x y k k N k y x z Ux y Lz y LUx LU A x abs x y k N x A ← ←+←<<-←←====←←←λλλ ελλμ λμλε 3 matlab 程序代码 function [s,y]=invpower(A,x0,eps,n) % s 为按模最小特征值,y 是对应特征向量 k=1; r=0; % r 相当于0λ y=x0./max(abs(x0)); % 规范化初始向量 [L,U]=lu(A); z=L\y; x=U\z; u=max(x); s=1/u; % 按模最小为A-1按模最大的倒数. if abs(u-r) return end while abs(u-r)>eps && k k=k+1; r=u; y=x./max(abs(x)); z=L\y; x=U\z; u=max(x); end [m,index]=max(abs(x)); % 这两步保证取出来的按模最大特征值 s=1/x(index); % 是原值,而非其绝对值。 end 4 举例验证 同幂法一样,选取一个矩阵A,代入程序,得到结果,并与eig(A)的得到结果比较,再计算A*y-t*y,验证y是否是对应的特征向量。 可见结果正确,然后利用此程序计算15阶Hilb矩阵,eig(A)的得到结果比较,再计算A*y-s*y,验证y是否是对应的特征向量。设置初始向量为 x0=ones(15,1),结果显示如下 可见,结果真确。得到了15阶Hilb 矩阵的按模最大特征值和对应的特征向量。 三. 计算条件数 矩阵A 的条件数等于A 的范数与A 的逆的范数的乘积,即cond(A)=‖A‖·‖A^(-1)‖,对应矩阵的3种范数,可以定义3种条件数。 函数 cond(A,1)、cond(A)或cond(A inf)是判断矩阵病态与否的一种度量,条件数越大表明矩阵的病态程度越大. 的最大和最小特征值矩阵分别为范数,即这里我们选择矩阵的A A A cond T 2121,,)(2λλλλ= , 而如果A 为对称矩阵,如Hilb 矩阵,A A T 的最大最小特征值,分别为A 的最大最小特征值的平方。所以cond(A) 为A 的最大最小特征值得比值。对于本例中的15阶Hilb 矩阵来说,利用上面计算结果得其条件数(选择第二种条件数)为:3.0934e+017;这与直接利用cond(A)得到的结果:2.5083e+017 在同一数量级,再次表明了上述算得得最大最小特征值的正确性,同时又表明Hilb 矩阵是病态矩阵。 四.Aitken 商加速法 1.简介与原理 {}{}.,??:2)( 2)(,,;0lim ,122 112212221211加速法这种方法称为逼近用有充分大时当线性收敛即且收敛与若Aitken a a a a a a a a a a x x x x x x y a a a a a a a a k a c a a a a a a k k k k k k k k n n n n n n n k k k k k k k k k =+---≈?+---=--≈--≠=--+++++++++++++∞→