function gsexp t = (1:25)'; m = length(t); errgs = []; for n = 1:15, A = repmat(t,1,n).^repmat(0:n-1,m,1); cond(A) Q = gs(A); errgs = [errgs;norm(eye(n)-Q'*Q)]; end semilogy(1:15,errgs,'b-'); makelarge hold on pause errgsmod = []; for n = 1:15, A = repmat(t,1,n).^repmat(0:n-1,m,1); Q = gsmod(A); errgsmod = [errgsmod;norm(eye(n)-Q'*Q)]; end semilogy(1:15,errgsmod,'r-'); makelarge pause errgstw = []; for n = 1:15, A = repmat(t,1,n).^repmat(0:n-1,m,1); Q = gstw(A); errgstw = [errgstw;norm(eye(n)-Q'*Q)]; end semilogy(1:15,errgstw,'k-'); makelarge hold off function A = gs(A) % Die Spalten von A enthalten % a_1, ..., a_n und werden mit % q_1, ..., q_n ueberschrieben. n=size(A,2); for l = 1:n, sl = A(:,1:l-1)'*A(:,l); qlhut = A(:,l) - A(:,1:l-1)*sl; rll = norm(qlhut); A(:,l) = qlhut / rll; end function A = gsmod(A) % Modifizierter Gram-Schmidt-Algorithmus % Die Spalten von A enthalten % a_1, ..., a_n und werden mit % q_1, ..., q_n ueberschrieben. [m,n]=size(A); for l = 1:n, rll = norm( A(:,l) ); ql = A(:,l) / rll; for j = l+1:n, rlj = ql'*A(:,j); A(:,j) = A(:,j) - rlj*ql; end A(:,l) = ql; end function A = gstw(A) % Die Spalten von A enthalten % a_1, ..., a_n und werden mit % q_1, ..., q_n ueberschrieben. n=size(A,2); for l = 1:n, sl = A(:,1:l-1)'*A(:,l); qlhut = A(:,l) - A(:,1:l-1)*sl; sl = A(:,1:l-1)'*qlhut; qlhut = qlhut - A(:,1:l-1)*sl; rll = norm(qlhut); A(:,l) = qlhut / rll; end