Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from random import seed, randint
- # pedir ao utilizador o valor M da matriz a ser gerada, esse valor vai ser inteiro (integer)
- m = int(raw_input("Size of the matrix:"))
- # iniciar a matriz a ser gerada
- matrix = []
- matrixInv = []
- # seed para geracao dos valores random
- seed(123132)
- # criar matriz atraves de 2 ciclos for
- for i in range(m):
- # gera a linha
- row = []
- for y in range(m):
- # cria os valores da coluna de forma aleatoria e adiciona os a linha, estes valores podem ser de 0 a 100 e sao inteiros
- row.append(float(randint(0, 10)))
- for y in range(m):
- if y == i:
- row.append(float(1))
- else:
- row.append(float(0))
- # adiciona a linha criada aleatoriamente a matriz
- matrix.append(row)
- # imprime a matriz gerada
- print("Generated Matrix:")
- # ciclo que imprime linha a linha
- for i in range(m):
- # cria uma string para ser impressa com os valores da linha
- printRow = ""
- for y in range(m):
- # vai adicionando a linha o proximo numero da coluna e um espaco para nao ficar tudo junto
- printRow = printRow + str(round(matrix[i][y], 3)) + " "
- print(printRow)
- #inicio algoritmo
- # trocas
- for i in range(m - 1):
- k = m - 1 - i
- if matrix[k - 1][0] < matrix[k][0]:
- for j in range(m*2):
- temp = matrix[k][j]
- matrix[k][j] = matrix[k - 1][j]
- matrix[k - 1][j] = temp
- # eliminacao
- for i in range(m):
- for j in range(m):
- if j != i:
- value = matrix[j][i] / matrix[i][i]
- for k in range(m*2):
- matrix[j][k] -= matrix[i][k] * value
- # no fim dividir as linhas pela valor das diagonais da matriz
- for i in range(m):
- diagonalValue = matrix[i][i]
- for j in range(m*2):
- matrix[i][j] = matrix[i][j] / diagonalValue
- # imprime a matriz gerada
- print("Inverted Matrix:")
- # ciclo que imprime linha a linha
- for i in range(m):
- # cria uma string para ser impressa com os valores da linha
- printRow = ""
- for y in range(m,m*2):
- # vai adicionando a linha o proximo numero da coluna e um espaco para nao ficar tudo junto
- printRow = printRow + str(round(matrix[i][y], 3)) + " "
- print(printRow)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement