Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ##########################################################################
- # Trabalho 1 - TRANSMISSÃO DE CALOR E MECÂNICA DOS FLUIDOS COMPUTACIONAL #
- # Equipe: Levi Pio #
- ##########################################################################
- function sist_ger(n)
- i = 1
- j = 1
- somatorio = 0.0
- sist = rand(n,n)
- for i in 1:n
- for j in 1:n
- somatorio = somatorio + abs(sist[i,j])
- end
- if sist[i,i] < (somatorio - abs(sist[i,i]))
- sist[i,i] = somatorio
- somatorio = 0.0
- end
- end
- return sist
- end
- function term_ind(n)
- b = rand(n,1)
- return b
- end
- n = 10
- A = sist_ger(n)
- J = copy(A)
- mat = copy(A)
- b = term_ind(n)
- c = copy(b)
- ind = copy(b)
- function main()
- x = zeros(n)
- v = zeros(n)
- y = zeros(n)
- k = zeros(n)
- e = 1e-4
- res = inv(A)*b
- function gauss_seidel(n)
- i = 1
- j = 1
- for i in 1:n
- r = 1/A[i,i]
- for j in 1:n
- if i!=j
- A[i,j] = A[i,j]*r
- end
- end
- b[i] = b[i]*r
- x[i] = b[i]
- end
- i = 1
- j = 1
- while true
- for i in 1:n
- soma = 0.0
- for j in 1:n
- if i!=j
- soma = soma + A[i,j]*x[j]
- end
- end
- v[i] = x[i]
- x[i] = b[i] - soma
- end
- norma = maximum(abs(x - v))/maximum(abs(x))
- if norma <= e
- break
- end
- end
- return x
- end
- function gauss_jacobi(n)
- i = 1
- j = 1
- for i in 1:n
- t = 1/J[i,i]
- for j in 1:n
- if i!=j
- J[i,j] = J[i,j]*t
- end
- end
- c[i] = c[i]*t
- y[i] = c[i]
- end
- i = 1
- j = 1
- while true
- for i in 1:n
- soma = 0.0
- for j in 1:n
- if i!=j
- soma = soma + J[i,j]*y[j]
- end
- end
- k[i] = c[i] - soma
- end
- norma = maximum(abs(y - k))/maximum(abs(y))
- for i in 1:n
- y[i] = k[i]
- end
- if norma <= e
- break
- end
- end
- return y
- end
- col1 = res
- col2 = gauss_seidel(n)
- col3 = gauss_jacobi(n)
- println(" (A) (b) x(dir.) x(G.S.) x(G.J.))")
- return [mat ind col1 col2 col3]
- end
- main()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement