Reformatting code

This commit is contained in:
madmaurice 2015-10-06 04:44:06 +02:00
parent 12c4af1846
commit c32a8ed722

View file

@ -1,44 +1,63 @@
def gauss(A,b,offset=(0,0)): def gauss(A,b,offset=(0,0)):
ox,oy = offset ox,oy = offset
if len(A)-1 < oy:
return A,b
for i in range(oy,len(A)): for i in range(oy,len(A)):
if A[i][ox] != 0: if A[i][ox] != 0:
if i > oy:
A[i], A[oy] = A[oy], A[i] A[i], A[oy] = A[oy], A[i]
b[i], b[oy] = b[oy], b[i] b[i], b[oy] = b[oy], b[i]
break break
pprint(A)
for i in range(oy+1,len(A)): for i in range(oy+1,len(A)):
if A[i][ox] != 0: if A[i][ox] != 0:
c = A[i][0]/A[oy][0] c = A[i][0]/A[oy][0]
A[i] = [ (A[i][x] - A[oy][x]*c) for x in range(ox,len(A[i])) ] A[i] = [ (A[i][x] - A[oy][x]*c) for x in range(ox,len(A[i])) ]
b[i] = b[i] - b[oy]*c b[i] = b[i] - b[oy]*c
return gauss(A,b,offset=(ox+1,oy+1)) if oy < len(A)-1:
A,b = gauss(A,b,offset=(ox+1,oy+1))
b[oy] /= A[oy][ox]
x = b[oy]
for y in range(oy):
b[y] -= A[y][ox]*x
return A,b
def vprint(A): def vprint(A):
print("Vector ----")
for i in range(len(A)): for i in range(len(A)):
print("%3d" % A[i]) print("%10.4f" % A[i])
print("-----")
def pprint(A): def pprint(A):
print("Matrix ----")
for i in range(len(A)): for i in range(len(A)):
print( " ".join(["%3d" % (A[i][j]) for j in range(len(A[i])) ]) ) print( " ".join(["%10.4f" % (A[i][j]) for j in range(len(A[i])) ]) )
print("-----")
A = [ [ 0, 0, 0,-1,-1, 1 ],
[ -1, 1, 0, 0, 0, 0 ],
[ 0, -1, 1, 0, 0, 0 ],
[-1000, 0, 0, 1, 0, 0 ],
[ 0, -1000, 0, 0, 1, 0 ],
[ 0, 0, 0, 0, 0, 1 ] ]
A = [ [ 1, 1 ], b = [ 0,
[ 1,-1 ] ] 0,
0,
b = [ 5, 0,
3 ] 0,
5 ]
pprint(A) pprint(A)
vprint(b) vprint(b)
A, b = gauss(A,b) # _, x = gauss(A,b)
pprint(A) from numpy.linalg import solve
vprint(b) x = solve(A,b)
vprint(x)