qriter_test The approximation to the smallest eigenvalue: ans = -0.059675578871905 1.564191203698703 1.987691412628296 2.349297531449158 3.409078620563635 -1.263166795003825 0.386479838574264 0.760280531365414 0.892069805683633 0.948593844059154 0.974891322850854 0.987588914811865 0.993829600975851 0.996923497448562 0.998463910120760 0.999232493287745 0.999616380778874 0.999808223821576 0.999904120240510 0.999952062194081 The error in the smallest eigenvalue: ans = 1.0597e+000 5.6419e-001 9.8769e-001 1.3493e+000 2.4091e+000 2.2632e+000 6.1352e-001 2.3972e-001 1.0793e-001 5.1406e-002 2.5109e-002 1.2411e-002 6.1704e-003 3.0765e-003 1.5361e-003 7.6751e-004 3.8362e-004 1.9178e-004 9.5880e-005 4.7938e-005 type qriter_test.m % Script: qriter_test.m % Exapmle script for QR iteration to find eigenvalues % close all; clear all; n = 10; D = diag((1:n)'); V = randn(n); % Interesting results if orthogonal matrix here instead! Ak = V*D/V; maxiter = 20; approx = []; for k=1:maxiter [Q,R] = qr(Ak); Ak = R*Q; approx = [approx Ak(n,n)]; end format long disp('The approximation to the smallest eigenvalue:') approx' plot(log(abs(approx))); xlabel('k'); ylabel('smallest eigenvalue'); % now look at error behavior err = abs( approx-1 ); figure plot(log(err)); xlabel('k'); ylabel('error in smallest eigenvalue'); format short e disp('The error in the smallest eigenvalue:') err' diary