% lanczos.m - Simple Lanczos iteration for symmetric matrix A . function e = lanczos(A,nsteps); N = length(A); qold = zeros(N,1); b = randn(N,1); q = b/norm(b); a = []; c = 0; for n = 1:nsteps v = A*q; a = [a; q'*v]; v = v - c(n)*qold - a(n)*q; c = [c; norm(v)]; qold = q; q = v/c(n+1); end c = c(2:n); T = diag(a) + diag(c,-1) + diag(c,1); e = sort(eig(T));