Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # MatveyPanchenko DSAI-03
- from copy import deepcopy
- def inverse_gj(a, eps=1e-12):
- n = len(a)
- if not all(len(r) == n for r in a):
- raise ValueError("Matrix must be square")
- aug = [r + [int(i == j) for j in range(n)] for i, r in enumerate(deepcopy(a))]
- for c in range(n):
- p = max(range(c, n), key=lambda r: abs(aug[r][c]))
- if abs(aug[p][c]) < eps:
- raise ValueError("Singular matrix")
- aug[c], aug[p] = aug[p], aug[c]
- piv = aug[c][c]
- aug[c] = [x / piv for x in aug[c]]
- for r in range(n):
- if r == c:
- continue
- f = aug[r][c]
- aug[r] = [rv - f * cv for rv, cv in zip(aug[r], aug[c])]
- return [row[n:] for row in aug]
- def read_mat():
- n = int(input("n: "))
- return [list(map(float, input().split())) for _ in range(n)]
- def show(mat, prec=6):
- for r in mat:
- print(*(f"{x:.{prec}f}" for x in r))
- if __name__ == "__main__":
- m = read_mat()
- show(inverse_gj(m))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement