我正在尝试使用带有 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 的对角元素必须包含特征值并且是对称的。
但是,这样做并没有给我正确的特征值。
我是否必须编写另一个迭代来找到 Q 和 R 的特征值?