Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # Helpers
- function input(prompt::AbstractString="")
- print(prompt)
- return chomp(readline())
- end
- function swapRows!(X, i, j)
- for k = 1:size(X,2)
- X[i,k], X[j,k] = X[j,k], X[i,k]
- end
- end
- function get_pivot()
- id = eye(dimension)
- for i in 1:dimension
- max = A[i, i]
- row = i
- for j in i:dimension
- if A[j,i] > max
- max = A[j,i]
- row = j
- end
- end
- swapRows!(id, row, i)
- end
- return id
- end
- function lu_decomposition()
- p = get_pivot()
- tmp = p * A
- u = zeros(dimension, dimension)
- l = eye(dimension)
- for i in 1:dimension
- for j in 1:dimension
- if j >= i
- sum = 0.0
- for k in 1:i
- sum = sum + u[k, j] * l[i, k]
- end
- u[i, j] = tmp[i,j] - sum
- else
- sum = 0.0
- for k in 1:j
- sum = sum + u[k, j] * l[i, k]
- end
- l[i, j] = (tmp[i,j] - sum) / u[j, j]
- end
- end
- end
- return l, u, p
- end
- dimension = input("Podaj stopień macierzy: ")
- dimension = parse(Int, dimension)
- A = eye(dimension)
- for row = 1:dimension
- for column = 1:dimension
- value = input("Podaj wartość komórki A[$(row), $(column)]")
- A[row, column] = parse(Int, value)
- end
- end
- println("\n Wprowadzono macierz:")
- display(A)
- println("")
- L, U, P = lu_decomposition()
- println("\nMacierz trójkątna dolna:")
- display(L)
- println("")
- println("\nMacierz trójkątna górna:")
- display(U)
- println("")
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement