from fractions import Fraction
def gauss(_arr):
    arr = [[Fraction(x) for x in r] + [{i: Fraction(1)}] for i, r in enumerate(_arr)]
    n, m = len(arr), len(arr[0])
    h, k = 0, 0
    while h < n and k < m:
        idx = next((i for i in range(h, n) if arr[i][k] != 0), None)
        if idx is None:
            k += 1
        else:
            arr[idx], arr[h] = arr[h], arr[idx]
            for i in range(h + 1, n):                    
                f = Fraction(arr[i][k], arr[h][k])
                arr[i][k] = Fraction(0)
                for j in range(k + 1, m - 1):
                    arr[i][j] -= arr[h][j] * f
                for key, value in arr[h][m - 1].items():
                    arr[i][m - 1][key] = arr[i][m - 1].get(key, 0) - value * f
            h += 1
            k += 1
    return arr
A = [[1, -2, 5],[3,2,-7], [-1, 1, 0]]
B = [11,-2,-4]
def get_inverse(_arr):
    arr = gauss(_arr)
    n = len(arr)
    sol = [None] * n
    sol[-1] = {key: value / arr[-1][-2] for key, value in arr[-1][-1].items()}
    for i in range(n - 2, -1, -1):
        d = dict(arr[i][-1])
        for j in range(i + 1, n):
            for key, value in sol[j].items():
                d[key] = d.get(key, 0) - sol[j].get(key, 0) * arr[i][j]
            for key in d:
                d[key] /= arr[i][i]
        sol[i] = d
    return sol

def solve(A, B):
    n = len(A)
    inv = get_inverse(A)
    return [sum(B[k] * v for k, v in inv[i].items()) for i in range(n)]
print(solve(A, B))    
# def solve(a):
#     n, m = len(a), len(a[0])
#     arr = gauss(a)  
#     print(arr)
#     sol = [None] * n
#     sol[-1] = arr[-1][-1] / arr[-1][-2]
#     for i in range(n - 2, -1, -1):
#         sol[i] = (arr[i][-1] - sum(arr[i][j] * sol[j] for j in range(i + 1, n))) / arr[i][i]
#     return sol

Embed on website

To embed this program on your website, copy the following code and paste it into your website's HTML: