Advertisement
Guest User

Untitled

a guest
May 13th, 2017
70
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Julia 1.29 KB | None | 0 0
  1. A = [2 0 -1; 1 0 -2; 0 3 0 ; 0 3 0]
  2. L = eig(transpose(A)*A)
  3. b = sqrt(L[1])
  4. S = sort(sqrt(L[1]),rev=true)
  5. P = sortperm(sqrt(L[1]),rev=true)
  6. V = L[2]
  7.  
  8. sorted_V = zeros(V)
  9. row = size(V)[1]
  10.  
  11. for i in 1:length(P)
  12.   for j in 1:row
  13.     get_column_of_sorted_V = (i-1)*row
  14.     current_cell = j
  15.     column_index_to_set = P[i]
  16.     get_column_of_V = (column_index_to_set-1) * row
  17.     sorted_V[get_column_of_sorted_V + current_cell] = V[get_column_of_V+current_cell]
  18.   end
  19. end
  20.  
  21. ## Calculating matrix U
  22. id_matrix = eye(row)
  23. inv_v = transpose(sorted_V \ id_matrix)
  24. inv_s = diagm(S) \ id_matrix
  25. U = A*inv_v*inv_s
  26.  
  27. println("SVD() As We Calculated:")
  28. println("U = ", U)
  29. println("S = ", S)
  30. println("V = ", sorted_V)
  31. println("------------------------------------------------------------")
  32. println("SVD() function in julia returns:")
  33. T = svd(A)
  34. println("U = ", T[1])
  35. println("S = ", T[2])
  36. println("V = ", T[3])
  37. println("------------------------------------------------------------")
  38.  
  39. println("CHECK CORRECTNESS:")
  40. println("Check: U'*U = ")
  41. println(transpose(U)*U)
  42. println("Check: V'*V = ")
  43. println(transpose(V)*V)
  44. println("U*S*transpose(V) = ")
  45. println(U*diagm(S)*transpose(sorted_V))
  46. println("ORIGINAL MATRIX A:")
  47. println(A)
  48. println("------------------------------------------------------------")
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement