数值计算解矩阵的按模最大最小特征值及对应的特征向量
一.幂法
1. 幂法简介:
当矩阵A满足一定条件时,在工程中可用幂法计算其主特征值(按模最大)及其特征向量。矩阵A需要满足的条件为: (1) |?1|?|?2|?...?|?n|?0,?i为A的特征值
xn
(2) 存在n个线性无关的特征向量,设为x1,x2,...,1.1计算过程:
n对任意向量x,有x(0)(0)???iui,?i不全为0,则有
i?1x(k?1)?Ax(k)?...?Ak?1x(0)??Aαiui??αiλik?1uik?1i?1i?1nn?? ?nk?1?2k?1?λ??1u1?()a2u2???()anun??1?1??k?1??1?1u1k?11?2|越小时,收敛越快;且当k充分大时,有可见,当|?1(k?1)k?1???1?1u1x(k?1)?x(k?1)????(k)x1,对应的特征向量即是。 (k)kx??x??1?1u1
2 算法实现
(1).输入矩阵A,初始向量x,误差限?,最大迭代次数N(2).k?1,??0;y(k)x(k)?max(abs(x(k))
(3).计算x?Ay,??max(x);(4).若|???|??,输出?,y,否则,转(5)(5).若 k?N, 置k?k?1,???,转3 ,否则输出失败信息,停机.3 matlab程序代码
1 / 17
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) while abs(z-b)>eps && k 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是否是对应的特征向量。结果如下: 2 / 17 结果正确,表明算法和代码正确,然后利用此程序计算15阶Hilb矩阵,与eig(A)的得到结果比较,再计算 A*y-t*y,验证y是否是对应的特征向量。设置初始向量为x0=ones(15,1),结果显示如下 3 / 17