Error Analysis of Modern Gram Schmidt Technique -code bug

AI Thread Summary
The discussion focuses on a coding issue related to the Modified Gram-Schmidt algorithm for computing the QR decomposition of a matrix A. The user is experiencing an unexpectedly high error value of 1.00 when calculating the one norm of (Q transpose * Q) - I. A suggestion is made to modify the code by setting p(:,u) to e(:,u) at the end of each loop iteration to ensure proper normalization. This adjustment aims to correct the error in the computation. The conversation highlights the importance of maintaining consistency between the matrices used in the algorithm.
SchrodingersMu
Messages
14
Reaction score
0
Hi all,

I am to compute A = QR using the Modified Gram-Schmidt algorithm. I need to find the error using

the one norm of : (Q transpose * Q) - I.

Here is my code:
Code:
%Modern Gram Schmidt
p=zeros(5,5);
e=zeros(5,5);
g=zeros(5,5);

for k=1:n;
    p(:,k)=(A(:,k));
end
%j=k, i=u, r=g, q=e, v=p
for u=1:n
    g(u,u)=norm(p(:,u),2);
    e(:,u)=p(:,u)/g(u,u);
    for k=u+1:n
        g(u,k)=e(:,u)'*p(:,k);
        p(:,k)=p(:,k)-(e(:,u)*g(u,k));
    end
end

W=((p*p')-I);
errormod=norm(W,1);

save errorMGS.dat errormod -ascii
I am getting an errormod of 1.00 . It obviously should be way less than this. I can't see what I am doing wrong, though. I modeled my code after an example proided by my prof: (The left part of the powerpoint)

upload_2015-2-26_0-15-21.png


Any help is appreciated!
 
Last edited by a moderator:
Physics news on Phys.org
Reading through your code, it looks like you are saving the p as the full-scale matrix, where e is the normalized matrix.
Try setting p(:,u)=e(:.u) at the end of the loop for each u.
 
Back
Top