Advertisement
Guest User

Untitled

a guest
Dec 12th, 2019
124
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.47 KB | None | 0 0
  1. table = []
  2. res = []
  3.  
  4.  
  5. def makeSimTab(a, b, c):
  6.     global res
  7.     for i in range(n):
  8.         table.append([b[i]])
  9.         table[i] += a[i] + [0] * n
  10.         table[i][m + i + 1] = 1
  11.     table.append([0] + [-i for i in c] + [0] * n)
  12.     res = [0] * (n + 1)
  13.  
  14.  
  15. def printTable():
  16.     global res
  17.     out = ["H"] + ['x' + str(i + 1) for i in range(n + m)] + ["res"]
  18.     for i in out:
  19.         print("%8s" % i, end="")
  20.     print()
  21.     for j, r in zip(table, res):
  22.         for i in j:
  23.             print("%8s" % (str("%.2f" % i)), end="")
  24.         print("%8s" % (str("%.2f" % r)))
  25.     print()
  26.     print()
  27.  
  28.  
  29. def method():
  30.     global res
  31.     while True:
  32.         mx = min(table[-1])
  33.         if mx >= 0:
  34.             break
  35.         indMx = table[-1].index(mx)
  36.  
  37.         res = [table[i][0] / table[i][indMx] if table[i][indMx] > 0 else 99 for i in range(n)]
  38.         indMn = res.index(min(res))
  39.         # print(res)
  40.         res.append(0)
  41.         myVal = table[indMn][indMx]
  42.         for i in range(len(table[indMn])):
  43.             table[indMn][i] /= myVal
  44.         for i in range(n + 1):
  45.             if i == indMn:
  46.                 continue
  47.             val = table[i][indMx]
  48.             for j in range(n + m + 1):
  49.                 table[i][j] -= table[indMn][j] * val
  50.         printTable()
  51.  
  52.  
  53. a = [[-1, 3, 0, 2, 1], [2, -1, 1, 2, 3], [1, -1, 2, 1, 0]]
  54. b = [1, 4, 5]
  55. c = [-1, 0, -2, 5, 4]
  56. n = len(b)
  57. m = len(c)
  58. makeSimTab(a, b, c)
  59. printTable()
  60. method()
  61. print(table[-1][0])
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement