% testQR: tests four QR methods on random matrices % requires: clgs.m, mgs.m, house.m %ELB 10/03 clear E F numtest=20; sizetest=100; Ih=eye(sizetest); for k=1:numtest if k==1, tic, end A=randn(sizetest); [QC,RC]=clgs(A); E(k,1)=max(max(abs(A-QC*RC))); F(k,1)=max(max(abs(Ih-QC'*QC))); [QM,RM]=mgs(A); E(k,2)=max(max(abs(A-QM*RM))); F(k,2)=max(max(abs(Ih-QM'*QM))); [QH,RH]=house(A); E(k,3)=max(max(abs(A-QH*RH))); F(k,3)=max(max(abs(Ih-QH'*QH))); [QQ,RR]=qr(A,0); E(k,4)=max(max(abs(A-QQ*RR))); F(k,4)=max(max(abs(Ih-QQ'*QQ))); end subplot(1,2,1) semilogy(1:numtest,E(:,1),'o',1:numtest,E(:,2),'*',1:numtest,E(:,3),'s',1:numtest,E(:,4),'d') legend('CLGS','MGS','Householder','Matlab QR'), title('max entry of |A - Q R|') xlabel('test number'), ylabel error subplot(1,2,2) semilogy(1:numtest,F(:,1),'o',1:numtest,F(:,2),'*',1:numtest,F(:,3),'s',1:numtest,F(:,4),'d') legend('CLGS','MGS','Householder','Matlab QR'), title('max entry of |I - Q* Q|') xlabel('test number'), ylabel error