一、理论基础
1、Schur分解
如果复矩阵𝐴∈𝐶^(𝑛×𝑛),那么存在一个酉矩阵Q∈𝐶^(𝑛×𝑛),使得
Q^H AQ=T=D+N
这里D=diag(μ1,⋯,μ𝑛),𝑁∈𝐶^(𝑛×𝑛)是严格上三角矩阵。进一步可以选取𝑄Q使得特征值μ𝑖"μ" _i沿对角线按任一给定的次序出现。
2、Schur分解唯一性
当A时正规矩阵(A^H A=AA^H),此时酉矩阵Q是存在唯一的。
二、非对称特征值计算
1.幂法计算非对称矩阵特征值
function [rou,iter]=powermethod(A)
n = length(A);
Imax = 1000;
x = zeros(n,1);
x(1) = 1;
rou = 0;
for k = 1:Imax
temp = rou;
y = A*x;
x = y/norm(y);
rou = x'*A*x
err = abs(rou - temp);
if err<1e-5
iter = k;
break
end
end
注:1.如果A的模最大特征值是一对共轭负根,则幂法可能失效。2.幂法的收敛快慢取决于𝜇2/𝜇1的大小,𝜇2/𝜇1越小,收敛越快。
2.正交迭代法
function mu=power_extend(A,p)
n = length(A);
E = eye(n);
Q = zeros(n,p);
Q = E(:,1:p);
for k=1:500
Z = A*Q;
[Qt,R]=HouseholderQR(Z);
Q = Qt(:,1:p);
S = Q'*A*Q;
mu = diag(S);
end
3.QR迭代法
基于Schur分解,在一定条件下算法产生的矩阵Q_k收敛到矩阵A的Schur分解中的矩阵Q,故矩阵𝑇𝑘:=𝑄_𝑘^𝐻*𝐴*Q_k收敛到某一上三角矩阵,即矩阵𝐴A的Schur分解,从而矩阵𝑇𝑘T_k的对角元即为𝐴A的全部特征根。
A = [-261 209 -49; -530 422 -98;-800 631 -144];
for k=1:30
[Q,R]=HouseholderQR(A);
A= R*Q;
end
tril(A)