一、理论基础

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收敛到矩阵ASchur分解中的矩阵Q,故矩阵𝑇𝑘:=𝑄_𝑘^𝐻*𝐴*Q_k收敛到某一上三角矩阵,即矩阵𝐴ASchur分解,从而矩阵𝑇𝑘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)