Advertisement
Guest User

Untitled

a guest
May 14th, 2017
78
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Julia 2.20 KB | None | 0 0
  1. ########################## Question 2 ############################
  2.  
  3. ############################ PART A ##############################
  4. function gram_schmidt(A)
  5.     n = size(A,2); # assume A is m×n
  6.     m = size(A,1);
  7.     R = zeros(n,n);
  8.     Q = zeros(m,n);
  9.     R[1,1] = norm(A[:,1]);
  10.     Q[:,1] = A[:,1]/R[1,1];
  11.  
  12.     for i=2:n
  13.         z = A[:,i];
  14.         for j=1:i-1
  15.             column_q_j = Q[:,j]';
  16.            row_a_i = A[:,i];
  17.            R[j,i] = vecdot(column_q_j , row_a_i)
  18.            z = z - R[j,i]*Q[:,j];
  19.        end
  20.        R[i,i] = norm(z);
  21.        Q[:,i] = z/R[i,i];
  22.    end
  23.  
  24.    return Q,R
  25. end
  26.  
  27. function modified_gram_schmidt(A)
  28.    n = size(A,2); # assume A is m×n
  29.    m = size(A,1);
  30.    R = zeros(n,n);
  31.    Q = zeros(m,n);
  32.    R[1,1] = norm(A[:,1]);
  33.    Q[:,1] = A[:,1]/R[1,1];
  34.  
  35.    for i=2:n
  36.        Q[:,i] = A[:,i];
  37.        for j=1:i-1
  38.            R[j,i] = vecdot(Q[:,j]',Q[:,i]);
  39.             Q[:,i] = Q[:,i] - R[j,i]*Q[:,j];
  40.         end
  41.         R[i,i] = norm(Q[:,i]);
  42.         Q[:,i] = Q[:,i]/R[i,i];
  43.     end
  44.  
  45.     return Q,R
  46. end
  47.  
  48. ############################ PART B ##############################
  49. A_1 = [1.0 1.0 1.0; 1.0 0.0 0.0; 0.0 1.0 0.0; 0.0 0.0 1.0];
  50. A_e = [1.0 1.0 1.0; 1e-10 0.0 0.0; 0.0 1e-10 0.0; 0.0 0.0 1e-10];
  51.  
  52. # QR factorization of the matrix A
  53. Q1,R1 = gram_schmidt(A_1);
  54. Q2,R2 = gram_schmidt(A_e);
  55. Q3,R3 = modified_gram_schmidt(A_1);
  56. Q4,R4 = modified_gram_schmidt(A_e);
  57. println("              PART B              ")
  58. println("QR factorization of the matrix A");
  59. println("Q1 is: ", Q1)
  60. println("R1 is: ", R1)
  61. println("Q2 is: ", Q2)
  62. println("R2 is: ", R2)
  63. println("Q3 is: ", Q3)
  64. println("R3 is: ", R3)
  65. println("Q4 is: ", Q4)
  66. println("R4 is: ", R4)
  67. println("")
  68. ############################ PART C ##############################
  69. get_id_matrix = P -> eye(size(P,2))
  70. get_norm = A -> vecnorm(A'*A-get_id_matrix(A))
  71.  
  72. F1 = get_norm(Q1);
  73. F2 = get_norm(Q2);
  74. F3 = get_norm(Q3);
  75. F4 = get_norm(Q4);
  76. println("              PART C              ")
  77. println("# Calculating Fᵢ = ||QᵀᵢQᵢ-I|| ")
  78. println("Gram Schmidt")
  79. println("F1 is: ", F1)
  80. println("F2 is: ", F2)
  81. println("Gram Schmidt Modified")
  82. println("F3 is: ", F3)
  83. println("F4 is: ", F4)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement