Advertisement
UsSe3wa

Untitled

Apr 16th, 2025
255
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.02 KB | None | 0 0
  1. # MatveyPanchenko DSAI-03
  2. from copy import deepcopy
  3.  
  4. def inverse_gj(a, eps=1e-12):
  5.     n = len(a)
  6.     if not all(len(r) == n for r in a):
  7.         raise ValueError("Matrix must be square")
  8.     aug = [r + [int(i == j) for j in range(n)] for i, r in enumerate(deepcopy(a))]
  9.     for c in range(n):
  10.         p = max(range(c, n), key=lambda r: abs(aug[r][c]))
  11.         if abs(aug[p][c]) < eps:
  12.             raise ValueError("Singular matrix")
  13.         aug[c], aug[p] = aug[p], aug[c]
  14.         piv = aug[c][c]
  15.         aug[c] = [x / piv for x in aug[c]]
  16.         for r in range(n):
  17.             if r == c:
  18.                 continue
  19.             f = aug[r][c]
  20.             aug[r] = [rv - f * cv for rv, cv in zip(aug[r], aug[c])]
  21.     return [row[n:] for row in aug]
  22.  
  23. def read_mat():
  24.     n = int(input("n: "))
  25.     return [list(map(float, input().split())) for _ in range(n)]
  26.  
  27. def show(mat, prec=6):
  28.     for r in mat:
  29.         print(*(f"{x:.{prec}f}" for x in r))
  30.  
  31. if __name__ == "__main__":
  32.     m = read_mat()
  33.     show(inverse_gj(m))
  34.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement