in_chainz

Untitled

Dec 3rd, 2018
125
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.99 KB | None | 0 0
  1. def my_det(X):
  2. '''
  3. Parameters
  4. ----------
  5. X : array_like
  6.  
  7. Returns
  8. -------
  9. det : float
  10. Determinant of `a`.
  11. '''
  12.  
  13. a = X
  14. n = len(X)
  15. m = len(X[0])
  16. if n != m:
  17. raise ValueError("Matrices are of different sizes!")
  18. eps = 1e-6
  19. tmp = [[a[i][j] for j in range(m)] for i in range(n)]
  20. res = 1
  21. for i in range(n):
  22. ind = i
  23. for j in range(i + 1, n):
  24. ind = i if abs(tmp[j][i]) <= abs(tmp[ind][i]) else j
  25. if abs(tmp[ind][i]) < eps:
  26. return 0
  27. tmp[i], tmp[ind] = tmp[ind], tmp[i]
  28. if ind != i:
  29. res *= -1
  30. res *= tmp[i][i]
  31.  
  32. for j in range(i + 1, n):
  33. tmp[i][j] /= tmp[i][i]
  34. for j in range(n):
  35. if abs(tmp[j][i]) > eps and i != j:
  36. for p in range(i + 1, n):
  37. tmp[j][p] -= tmp[i][p] * tmp[j][i]
  38.  
  39. det = res
  40. # Your code here
  41.  
  42. return det
Advertisement
Add Comment
Please, Sign In to add comment