幂法,反幂法求解矩阵最大最小特征值及其对应的特征向量
数值计算解矩阵的按模最大最小特征值及对应的特征向量
一.幂法
1. 幂法简介:
当矩阵A满足一定条件时,在工程中可用幂法计算其主特征值(按模最大)
及其特征向量。矩阵A需要满足的条件为:
|,|,|,|,...,|,|,0,,为A的特征值(1) 12ni
x,x,...,x(2) 存在n个线性无关的特征向量,设为 12n1.1计算过程:
n(0)(0)对任意向量x,有x,,u,,不全为0,则有 ,iii,1i
(k,1)(k)k,1(0),,,xAx...Ax
nn11k,k,,,Aαuαλu,,iiiii
11i,i,
,,,, k,1k,1k,1n2,,,,,λu()au?()au11122nn,,,,11,,
k,1,,,u111
,2||可见,当越小时,收敛越快;且当k充分大时,有,1
11(k,)k,1(k,),,,xu,x,111(k,1),,,,x1,对应的特征向量即是。 )(k)(kkx,xu,,,111,
2 算法实现
,(1).输入矩阵A,初始向量x,误差限,最大迭代次数N
(k)x(k),(2).k,1,,0;y,(k)max(abs(x)
,(3).计算x,Ay,,max(x);
,,,,(4).若|,|,,输出,y,否则,转(5)
(5).若 k,N, 置k,k,1,,,,,转3 ,否则输出失败信息,停机.
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)eps && keps && keps && k0 ||aa(index)==0
r=r;
else
r=-r;
end
end
end
类似可得按模最小特征值和特征向量的代码如下:与上面类似,所不同的只
是迭代格式不同.
function [r,y]=invaitken(A,x0,eps,n)
k=1;
a0=0;
a1=1;
r0=1;
y=x0./max(abs(x0));
[L,U]=lu(A); % 迭代格式的不同
z=L\y;
x=U\z;
a2=max(abs(x));
r=a0-(a1-a0)^2/(a2-2*a1+a0);
if (a2-2*a1+a0)==0
disp "初始向量迭代失败"
return;
end
if abs(r-r0)eps && k0 ||aa(index)==0
r=1/r;
else
r=-1/r;
end
end
4. 计算Hilb矩阵特征值
此处不再举例,而是直接应用于15阶Hilb矩阵,初始向量选为ones(15,1),结果如下,并将结果与幂法和反幂法得到结果比较
这与幂法得到的特征值和特征向量一致,表明算法和代码正确;同理,最小特征值结果如下:
这与反幂法得到的结果一致,表明结果正确。
五,对称矩阵的Rayleigh商加速法 1.简介与原理
TxAxA为对称矩阵,设x,0,则称R(x),为关于A的Rayleigh商 Txx原理如下:
,,设为的特征向量,即X,0AX,Xiiiii用X左乘上式有:i
(k),x(k)y,,(k)max(x),,,(k1)(k)x,Ay这称为Rayleigh商加速法。,,(k)T(k1) ,(y)x(k)R(y),,(k)T(k)(y)(y),,
(k)x(k)(k)其中,R(y),,y,1(k)max(x)
2. 算法实现
,(1).输入矩阵A,初始向量x,误差限,最大迭代次数N,
x(2).置k1, r0,y,,,,0max(abs(x))
Tyx(3).xA*y,r,,Tyy (4).若|rr|,输出r,y,停机,否则转(5),,,,0
x(5).若kN,置kk1, rr,y, 转(3);,,,,,0max(abs(x))
否则输出失败信息,停机.
3. Matlab程序代码
function [r,y]=rayleigh(A,x0,eps,n) % r 是特征值,y是特征向量
k=1; r0=0;
y=x0./max(abs(x0));
x=A*y; % 迭代格式计算新的x
r=dot(y,x)/dot(y,y); % Reyleigh商
if abs(r-r0)eps && keps && k