Kiri3L

Untitled

Dec 13th, 2019
127
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.18 KB | None | 0 0
  1. import re
  2.  
  3.  
  4. def parse_matrix(filename):
  5. f = open(filename)
  6. matrix = []
  7. for line in f:
  8. if not line.startswith('#'):
  9. matrix.append([])
  10. line = line.replace('\n', '')
  11. line = re.split('\s+', line)
  12. line.pop(0)
  13. for i in range(len(line)):
  14. matrix[-1].append(int(line[i]))
  15. for i in range(1, len(matrix)):
  16. for j in range(i):
  17. matrix[i].insert(j, 1 / matrix[j][i])
  18. return matrix
  19.  
  20.  
  21. def geometric_mean(vector):
  22. result = 1
  23. for i in vector:
  24. result *= i
  25. result **= (1/len(vector))
  26. return result
  27.  
  28.  
  29. class Table:
  30. def __init__(self):
  31. self.matrix = []
  32. self.K = []
  33. self.V = []
  34. self.W = []
  35. self.S = []
  36. self.SumV = 0
  37.  
  38. def parse_table(self, filename):
  39. self.matrix = parse_matrix(filename)
  40.  
  41. def calculate_V(self):
  42. self.V = []
  43. for i in range(len(self.matrix)):
  44. self.V.append(geometric_mean(self.matrix[i]))
  45.  
  46. def calculate_sum_V(self):
  47. self.SumV = 0
  48. for i in self.V:
  49. self.SumV += i
  50.  
  51. def calculate_W(self):
  52. pass
  53.  
  54. def calculate_S(self):
  55. self.S = []
  56. for i in range(len(self.matrix)):
  57. self.S.append(0)
  58. for j in range(len(self.matrix)):
  59. self.S[-1] += self.matrix[j][i]
  60.  
  61. def normal_V(self):
  62. self.W = []
  63. for i in range(len(self.matrix)):
  64. self.W.append(self.V[i] / self.SumV)
  65.  
  66. def print_table(self):
  67. pass
  68.  
  69.  
  70.  
  71.  
  72. #
  73. # e = parse_matrix('input.txt')
  74. # for i in e:
  75. # for j in i:
  76. # print('"{}"'.format(j), end=' ')
  77. # print()
  78. #
  79. #
  80. #
  81. # for line in e:
  82. # for i in line:
  83. # print('%.2f' % i, end=' ')
  84. # print()
  85. #
  86. #
  87.  
  88.  
  89. t = Table()
  90. t.parse_table('input.txt')
  91.  
  92. for line in t.matrix:
  93. for i in line:
  94. print('%.2f' % i, end=' ')
  95. print()
  96.  
  97. t.calculate_V()
  98. t.calculate_sum_V()
  99. t.normal_V()
  100. t.calculate_S()
  101.  
  102. for i in t.S:
  103. print(i)
  104.  
  105.  
  106. #
  107. # for i in t.V:
  108. # print(i)
  109. #
  110. # print()
  111. # print(t.SumV)
  112. # print()
  113. #
  114. # for i in t.W:
  115. # print(i)
  116. #
Advertisement
Add Comment
Please, Sign In to add comment