带精度的基本qr方法求矩阵特征值得MATLAB程序
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 著作权归作者所有。请勿转载和采集!