Reformatting code
This commit is contained in:
parent
12c4af1846
commit
c32a8ed722
1 changed files with 36 additions and 17 deletions
49
gauss.py
49
gauss.py
|
@ -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)
|
||||||
|
|
Loading…
Reference in a new issue