#under specified problem solved with svd. import numpy as np import numpy.linalg as la avals = [[1,2,1],[2,2,2],[1,0,1]] bvals = [4,6,2] A = np.array(avals) b = np.array(bvals) b = b.reshape(len(b),1) U,s,V = la.svd(A) print A print b print print print U print s print V print "Condition = ", s[0]/s[len(s)-1] x=np.dot(np.transpose(U),b) x=x[0:len(s)] for i in range(len(s)): if s[i] >1e-10: x[i,0]=x[i,0]/s[i] else: print "+ any amount", V[i] x=np.dot(np.transpose(V[0:len(s)]),x) print x