使用 QR 迭代的特征值

计算科学 线性代数 matlab 数值分析 特征值
2021-12-02 22:45:30

我正在尝试使用带有 Householder 的 QR 迭代来找到矩阵 A 的特征值。我使用了从康奈尔大学找到的这段代码,它用 Householder 分解 QR。

 A=  [3.56829648331616, -2.19026841424281,0.557474633283884,-0.126072015319561;
    -3.25393787896303, 4.81285873937612,-2.79568990543933,0.632240894103258
    1.14081451177546,   -4.13904528762030,  6.19190034744431,-2.98172499459682
    -0.639981731971678, 2.32194922534595,   -7.91889162828103,6.11802605281534]


[m,n] = size(A);
Q = eye(m); % Orthogonal transform so far
R = A; % Transformed matrix so far


for j = 1:n
% -- Find H = I-tau*w*w’ to put zeros below R(j,j)
normx = norm(R(j:end,j));
s = -sign(R(j,j));
u1 = R(j,j) - s*normx;
w = R(j:end,j)/u1;
w(1) = 1;
tau = -s*u1/normx;
% -- R := HR, Q := QH
R(j:end,:) = R(j:end,:)-(tau*w)*(w'*R(j:end,:));
Q(:,j:end) = Q(:,j:end)-(Q(:,j:end)*w)*(tau*w)';
end

现在我已经通过 MATLAB 验证了正确的 R 和 Q,我应该能够通过将 R 和 Q 相乘来找到特征值。

E=RQ,

其中 E 的对角元素必须包含特征值并且是对称的。

但是,这样做并没有给我正确的特征值。

我是否必须编写另一个迭代来找到 Q 和 R 的特征值?

0个回答
没有发现任何回复~