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
基于QR分解的矩阵特征值求解:MATLAB代码实现与分析

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

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