基于QR分解的矩阵特征值求解:MATLAB代码实现与分析
function [eigvals] = basic_qr_eig(A, tol, max_iter)
% BASIC_QR_EIG 使用基础QR方法求解方阵的特征值。
% A: 输入矩阵
% tol: 收敛容差
% max_iter: 允许的最大迭代次数
% eigvals: A的特征值
n = size(A, 1);
iter = 0;
eigvals = diag(A);
while iter < max_iter
Q = eye(n);
for i = 1:n-1
[Q_i, R_i] = qr(A - eigvals(i)*eye(n));
Q = Q * Q_i;
end
A = Q' * A * Q;
new_eigvals = diag(A);
if norm(new_eigvals - eigvals) < tol
break;
end
eigvals = new_eigvals;
iter = iter + 1;
end
if iter == max_iter
warning('达到最大迭代次数,未收敛。');
end
end
原文地址: https://www.cveoy.top/t/topic/jzXl 著作权归作者所有。请勿转载和采集!