Advertisement
boris-vlasenko

Метод Крамера, определитель

Oct 20th, 2018
1,143
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.08 KB | None | 0 0
  1. import copy
  2.  
  3. #вначале нужно посчитать определитель
  4. def minor(a,c_): #столбец
  5.     res = []
  6.     for r in range(1,len(a)): # первую строку вычеркиваем , поэтому с единицы начинаем
  7.        
  8.         res.append([])
  9.         for c in range(len(a[0])):
  10.             if c != c_:
  11.                 res[-1].append(a[r][c]) # добавляем в последнюю строку
  12.     return res
  13.  
  14. def determinant(a):
  15.     if len(a) == 1:
  16.         return a[0][0]
  17.     res = 0
  18.     k = 1
  19.     for c in range(len(a[0])):
  20.         res += k*a[0][c]*determinant(minor(a,c))
  21.         k *= -1
  22.     return res
  23.      
  24.    
  25.  
  26.  
  27.    
  28. #print(determinant(a))
  29.  
  30. #2 -3 -1 = 7
  31. #5 +2 +3 = 9
  32. #6 -5 -4 = 3  
  33.  
  34. a = []
  35. n = int(input())
  36. for i in range(n):
  37.     a.append(list(map(int,input().split())))
  38. print('b>>')
  39. b = list(map(int,input().split()))
  40.  
  41. D = determinant(a)
  42. print('D='D)
  43.  
  44.  
  45. def Kramer(a,b):
  46.     res = []
  47.     for c in range(len(a)):
  48.         aa = copy.deepcopy(a)
  49.         for r in range(len(a)):
  50.             aa[r][c] = b[r]
  51.         d = determinant(aa)
  52.         res.append(d/D)
  53.     return res
  54.    
  55.    
  56. print(Kramer(a,b))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement