# simeq.py solve simultaneous equations AX=Y and invert # solve real linear equations for X where Y = A * X # usage: X = simeq(A,Y) X = simeqb(B) B = invert(A) # for user using [[ ]] matrix rather than numpy array from numpy import array from numpy.linalg import solve from numpy.linalg import inv from numpy.linalg import det def simeq(A,Y): n = len(Y) a = array([[A[i][j] for j in range(n)]for i in range(n)]) y = array([Y[j] for j in range(n)]) x=solve(a,y) X = [x[j] for j in range(n)] return X; def simeqb(B): n = len(B) a = array([[B[i][j] for j in range(n)]for i in range(n)]) y = array([B[i][n] for i in range(n)]) x=solve(a,y) X = [x[j] for j in range(n)] return X; def invert(A): n = len(A) b = array([[A[i][j] for j in range(n)]for i in range(n)]) b = inv(b) B = [[b[i][j] for j in range(n)] for i in range(n)] return B def determ(A): n = len(A) b = array([[A[i][j] for j in range(n)]for i in range(n)]) B = det(b) return B