% Demonstration of the construction of a Householder reflector % in three dimensions x = [.75;1.25;1]; vperp = .5*(x+norm(x)*[1;0;0]); v = .5*(x-norm(x)*[1;0;0]); ax = [-2 2 -2 2 -2 2]; % axis limits for the plots figure(1), clf plot3(0,0,0,'ko','markersize',8), hold on % plot origin p1=plot3([0 x(1)], [0 x(2)], [0 x(3)],'k-','linewidth',2); % plot x plot3([x(1)], [x(2)], [x(3)],'k.','markersize',20) grid on axis(ax) legend(p1, 'x') title('Householder Reflector Demonstration') input('press return') p2=plot3([0 norm(x)], [0 0], [0 0],'r-','linewidth',2); % plot norm(x)*e1 plot3([norm(x)], [0], [0],'r.','markersize',20) axis(ax) legend([p1 p2], 'x', '||x|| e_1') input('press return') p3=plot3([0 vperp(1)], [0 vperp(2)], [0 vperp(3)],'b--','linewidth',2); % plot vperp plot3([vperp(1)], [vperp(2)], [vperp(3)],'b.','markersize',20) legend([p1 p2 p3], 'x', '||x|| e_1', 'v^\perp') axis(ax) input('press return') p4=plot3([0 v(1)], [0 v(2)], [0 v(3)],'b-','linewidth',2); % plot v plot3([v(1)], [v(2)], [v(3)],'b.','markersize',20) axis(ax) legend([p1 p2 p3 p4], 'x', '||x|| e_1', 'v^\perp', 'v') input('press return') % plot the plane orthogonal to v [Q,R] = qr([v]); % construct an orthonormal basis for v-perp X = 2*[Q(:,2) Q(:,3) -Q(:,2) -Q(:,3)]; fill3(X(1,:),X(2,:),X(3,:),[0.7 0.7 1]), hold on