Advertisement
Guest User

Untitled

a guest
Dec 18th, 2016
107
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Julia 1.49 KB | None | 0 0
  1. # Helpers
  2.  
  3. function input(prompt::AbstractString="")
  4.     print(prompt)
  5.     return chomp(readline())
  6. end
  7.  
  8. function swapRows!(X, i, j)
  9.     for k = 1:size(X,2)
  10.         X[i,k], X[j,k] = X[j,k], X[i,k]
  11.     end
  12. end
  13.  
  14. function get_pivot()
  15.   id = eye(dimension)
  16.  
  17.   for i in 1:dimension
  18.     max = A[i, i]
  19.     row = i
  20.  
  21.     for j in i:dimension
  22.       if A[j,i] > max
  23.         max = A[j,i]
  24.         row = j
  25.       end
  26.     end
  27.  
  28.     swapRows!(id, row, i)
  29.   end
  30.  
  31.   return id
  32. end
  33.  
  34. function lu_decomposition()
  35.   p = get_pivot()
  36.   tmp = p * A
  37.   u = zeros(dimension, dimension)
  38.   l = eye(dimension)
  39.  
  40.   for i in 1:dimension
  41.     for j in 1:dimension
  42.       if j >= i
  43.         sum = 0.0
  44.         for k in 1:i
  45.           sum = sum + u[k, j] * l[i, k]
  46.         end
  47.  
  48.         u[i, j] = tmp[i,j] - sum
  49.       else
  50.         sum = 0.0
  51.         for k in 1:j
  52.           sum = sum + u[k, j] * l[i, k]
  53.         end
  54.  
  55.         l[i, j] = (tmp[i,j] - sum) / u[j, j]
  56.       end
  57.     end
  58.   end
  59.   return l, u, p
  60. end
  61.  
  62. dimension = input("Podaj stopień macierzy: ")
  63. dimension = parse(Int, dimension)
  64. A = eye(dimension)
  65.  
  66. for row = 1:dimension
  67.   for column = 1:dimension
  68.     value = input("Podaj wartość komórki A[$(row), $(column)]")
  69.     A[row, column] = parse(Int, value)
  70.   end
  71. end
  72.  
  73. println("\n Wprowadzono macierz:")
  74. display(A)
  75. println("")
  76.  
  77. L, U, P = lu_decomposition()
  78.  
  79. println("\nMacierz trójkątna dolna:")
  80. display(L)
  81. println("")
  82. println("\nMacierz trójkątna górna:")
  83. display(U)
  84. println("")
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement