Advertisement
Guest User

Untitled

a guest
Dec 15th, 2019
107
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.22 KB | None | 0 0
  1. from random import seed, randint
  2. # pedir ao utilizador o valor M da matriz a ser gerada, esse valor vai ser inteiro (integer)
  3. m = int(raw_input("Size of the matrix:"))
  4. # iniciar a matriz a ser gerada
  5. matrix = []
  6. matrixInv = []
  7. # seed para geracao dos valores random
  8. seed(123132)
  9.  
  10. # criar matriz atraves de 2 ciclos for
  11. for i in range(m):
  12.     # gera a linha
  13.     row = []
  14.     for y in range(m):
  15.         # cria os valores da coluna de forma aleatoria e adiciona os a linha, estes valores podem ser de 0 a 100 e sao inteiros
  16.         row.append(float(randint(0, 10)))
  17.     for y in range(m):
  18.         if y == i:
  19.             row.append(float(1))
  20.         else:
  21.             row.append(float(0))
  22.     # adiciona a linha criada aleatoriamente a matriz
  23.     matrix.append(row)
  24.  
  25. # imprime a matriz gerada
  26. print("Generated Matrix:")
  27. # ciclo que imprime linha a linha
  28. for i in range(m):
  29.     # cria uma string para ser impressa com os valores da linha
  30.     printRow = ""
  31.     for y in range(m):
  32.         # vai adicionando a linha o proximo numero da coluna e um espaco para nao ficar tudo junto
  33.         printRow = printRow + str(round(matrix[i][y], 3)) + " "
  34.     print(printRow)
  35.  
  36. #inicio algoritmo
  37. # trocas
  38. for i in range(m - 1):
  39.     k = m - 1 - i
  40.     if matrix[k - 1][0] < matrix[k][0]:
  41.         for j in range(m*2):
  42.             temp = matrix[k][j]
  43.             matrix[k][j] = matrix[k - 1][j]
  44.             matrix[k - 1][j] = temp
  45.  
  46. # eliminacao
  47. for i in range(m):
  48.     for j in range(m):
  49.         if j != i:
  50.             value = matrix[j][i] / matrix[i][i]
  51.             for k in range(m*2):
  52.                 matrix[j][k] -= matrix[i][k] * value
  53.  
  54. # no fim dividir as linhas pela valor das diagonais da matriz
  55. for i in range(m):
  56.     diagonalValue = matrix[i][i]
  57.     for j in range(m*2):
  58.         matrix[i][j] = matrix[i][j] / diagonalValue
  59.  
  60. # imprime a matriz gerada
  61. print("Inverted Matrix:")
  62. # ciclo que imprime linha a linha
  63. for i in range(m):
  64.     # cria uma string para ser impressa com os valores da linha
  65.     printRow = ""
  66.     for y in range(m,m*2):
  67.         # vai adicionando a linha o proximo numero da coluna e um espaco para nao ficar tudo junto
  68.         printRow = printRow + str(round(matrix[i][y], 3)) + " "
  69.     print(printRow)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement