Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ########################## Question 2 ############################
- ############################ PART A ##############################
- function gram_schmidt(A)
- n = size(A,2); # assume A is m×n
- R = zeros(n,n);
- Q = zeros(n,n);
- R[1,1] = norm(A[:,1]);
- Q[:,1] = A[:,1]/R[1,1];
- for i=2:n
- z = A[:,i];
- for j=1:i-1
- R[j,i] = (Q[:,j]' * A[:,i])[1]
- z = z - R[j,i]*Q[:,j];
- end
- R[i,i] = norm(z);
- Q[:,i] = z/R[i,i];
- end
- return Q,R
- end
- function modified_gram_schmidt(A)
- n = size(A,1); # assume A is n×n
- R = zeros(n,n);
- Q = zeros(n,n);
- R[1,1] = norm(A[:,1]);
- Q[:,1] = A[:,1]/R[1,1];
- for i=2:n
- Q[:,i] = A[:,i];
- for j=1:i-1
- R[j,i] = (Q[:,j]' * Q[:,i])[1];
- Q[:,i] = Q[:,i] - R[j,i]*Q[:,j];
- end
- R[i,i] = norm(Q[:,i]);
- Q[:,i] = Q[:,i]/R[i,i];
- end
- return Q,R
- end
- ############################ PART B ##############################
- A_1 = [1 1 1; 1 0 0; 0 1 0];
- A_e = [1 1 1; 1e-10 0 0; 0 1e-10 0];
- Q1,R1 = gram_schmidt(A_1);
- Q2,R2 = gram_schmidt(A_e);
- Q3,R3 = modified_gram_schmidt(A_1);
- Q4,R4 = modified_gram_schmidt(A_e);
- ############################ PART C ##############################
- get_id_matrix = A -> eye(size(A)[1])
- get_norm = A -> vecnorm(A'*A-get_id_matrix(A))
- F1 = get_norm(Q1);
- F2 = get_norm(Q2);
- F3 = get_norm(Q3);
- F4 = get_norm(Q4);
- println("Factorizations")
- println("Gram Schmidt")
- println("F1 is: ", F1)
- println("F2 is: ", F2)
- println("Gram Schmidt Modified")
- println("F3 is: ", F3)
- println("F4 is: ", F4)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement