function R = housemovie(A); % HOUSEMOVIE shows in-place Householder triangularization to give R, % but it throws away the v_k needed to form Q or use "A=QR" [m n] = size(A); scal = max(max(abs(A))); disp('hit any key to show next stage') A, pause for k=1:n % alg 10.1 clear v v = A(k:m,k); % called 'x' in alg 10.1 if v(1,1) < 0, v(1,1) = -norm(v,2) + v(1,1); else, v(1,1) = norm(v,2) + v(1,1); end r = norm(v,2); if abs(r) / scal < 2*eps, error('Householder reflector nearly zero'), end v = v/r; A(k:m,k:n)=A(k:m,k:n)-2*v*(v'*A(k:m,k:n)); A, pause end R = A;