Advertisement
Guest User

Untitled

a guest
Oct 4th, 2018
197
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.28 KB | None | 0 0
  1. def Gauss_Jordan_inverse(self):
  2.         #Only if determinant() = True
  3.         arr = self.data # arr is a list of a list
  4.         #Add identity matrix on the right
  5.         for i in range(self.rows):
  6.             for j in range(self.cols):
  7.                 if j == i:
  8.                     arr[i].append(1)
  9.                 else:
  10.                     arr[i].append(0)
  11.         #Reset all that is below the main diagonal
  12.         for i in range(self.rows):
  13.             arr[i] = [round(x * (1/arr[i][i]), 4) for x in arr[i]]
  14.             for j in range(self.cols):
  15.                 try:
  16.                     j += i
  17.                     arr1 = [round(x * (-arr[j+1][i]),4) for x in arr[i]]
  18.                     arr[j+1] = map(lambda x,y: round(x+y, 4), arr[j+1], arr1 )
  19.                 except IndexError:
  20.                     break
  21.         #Reset all that is above the main diagonal
  22.         for i in range(self.rows-1, -1,  -1):
  23.             arr[i] = [round(x * (1/arr[i][i]), 4) for x in arr[i]]
  24.             for j in range(self.cols-1, 0, -1):
  25.                 if j <= i:
  26.                     arr1 = [round(x * (-arr[j-1][i]),4) for x in arr[i]]
  27.                     arr[j-1] = map(lambda x, y: round(x+y, 4), arr[j-1], arr1)
  28.         arr2 = [arr[l][self.rows:] for l in range(self.rows)]
  29.         return arr2
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement