Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- def Gauss_Jordan_inverse(self):
- #Only if determinant() = True
- arr = self.data # arr is a list of a list
- #Add identity matrix on the right
- for i in range(self.rows):
- for j in range(self.cols):
- if j == i:
- arr[i].append(1)
- else:
- arr[i].append(0)
- #Reset all that is below the main diagonal
- for i in range(self.rows):
- arr[i] = [round(x * (1/arr[i][i]), 4) for x in arr[i]]
- for j in range(self.cols):
- try:
- j += i
- arr1 = [round(x * (-arr[j+1][i]),4) for x in arr[i]]
- arr[j+1] = map(lambda x,y: round(x+y, 4), arr[j+1], arr1 )
- except IndexError:
- break
- #Reset all that is above the main diagonal
- for i in range(self.rows-1, -1, -1):
- arr[i] = [round(x * (1/arr[i][i]), 4) for x in arr[i]]
- for j in range(self.cols-1, 0, -1):
- if j <= i:
- arr1 = [round(x * (-arr[j-1][i]),4) for x in arr[i]]
- arr[j-1] = map(lambda x, y: round(x+y, 4), arr[j-1], arr1)
- arr2 = [arr[l][self.rows:] for l in range(self.rows)]
- return arr2
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement