function [eigvals, eigvecs] = qr_eig(A, tol) % A: 待求特征值的矩阵 % tol: 精度要求

n = size(A, 1); eigvals = zeros(n, 1); eigvecs = eye(n);

while n > 1 while abs(A(n, n-1)) > tol % QR分解 [Q, R] = qr(A - eigvals(n)eye(n)); A = RQ + eigvals(n)eye(n); eigvecs = eigvecsQ; end

eigvals(n) = A(n, n);
n = n - 1;
A = A(1:n, 1:n);

end

if n == 1 eigvals(1) = A(1, 1); end

end


原文地址: https://www.cveoy.top/t/topic/bTUz 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录