Book
Linear Algebra
Author
Gilbert Strang
Edition
import numpy
# LU decomposiong method
def LU_decompose(a):
n = len(a)
for k in range(0,n-1):
for i in range(k+1,n):
if a[i,k] != 0.0:
lam = a [i,k]/a[k,k]
a[i,k+1:n] = a[i,k+1:n] - lam*a[k,k+1:n]
a[i,k] = lam
return a
#solving LU
def LU_solution(a,b):
n = len(a)
for k in range(1,n):
b[k] = b[k] - numpy.dot(a[k,0:k],b[0:k])
for k in range(n-1,-1,-1):
b[k] = (b[k] - numpy.dot(a[k,k+1:n],b[k+1:n]))/a[k,k]
return b
a=[]
m = eval(raw_input("Enter number of rows: " ))
n = eval(raw_input("Enter number of columns: " ))
for i in range(m):
for j in range(n):
c = eval(raw_input("Enter element %d %d: " %(i+1,j+1) ))
a.append(c)
a = numpy.reshape(a,(m,n))
a = LU_decompose(a)
det = numpy.prod(numpy.diagonal(a))
print '\nDeterminant =',det
while 1:
print '\nInput constant vector (press return to exit):'
try:
b = numpy.array(eval(raw_input('==> ')))
except SyntaxError: break
x = LU_solution(a,b)
print 'The solution is:\n',x
raw_input("\nPress return to exit")
Solution by:
<Selwyn Jacob>, <Student>, <Gitam University>