Advertisement
999ms

matrix det

Feb 4th, 2019
204
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.52 KB | None | 0 0
  1. def det(matrix):
  2.     n = len(matrix)
  3.  
  4.     def add_line(index1, index2, k): # matrix[index1] - matrix[index2]*k
  5.         for i in range(n):
  6.             matrix[index1][i]+=matrix[index2][i]*k
  7.  
  8.     for i in range(n):
  9.         first_index = -1;
  10.         for j in range(i,n):
  11.             if(matrix[i][j]!=0):
  12.                 first_index = j;
  13.                 break;
  14.  
  15.         if first_index==-1:
  16.             return 0
  17.  
  18.         if first_index>i:
  19.             add_line(i,first_index,1)
  20.  
  21.         for j in range(i+1, n):
  22.             if(matrix[j][i]!=0):
  23.                 add_line(j,i,-matrix[j][i]/matrix[i][i])
  24.  
  25.     ans = 1
  26.     for i in range(n):
  27.         ans*=matrix[i][i]
  28.     return ans
  29.  
  30.  
  31. dimCorrect = False
  32. input_dim = 0
  33. while True:
  34.     print("Введите размерность матрицы")
  35.     input_dim = input()
  36.     try:
  37.         input_dim = int(input_dim)
  38.         if input_dim>0:
  39.             break
  40.     except Exception as e:
  41.         continue
  42.     print("Ошибка")
  43.  
  44. matrix = [0 for _ in range(input_dim)]
  45. for i in range(input_dim):
  46.     input_line = []
  47.     while True:
  48.         print("Введите ",int(i+1)," строку матрицы")
  49.         try:
  50.             input_line = list(map(float,input().split()))
  51.             if len(input_line) == input_dim:
  52.                 lineCorrect = True
  53.                 break
  54.         except Exception as e:
  55.             continue
  56.         print("Ошибка")
  57.     matrix[i] = input_line
  58.  
  59. print("Определитель матрицы равен: ", det(matrix))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement