class multiDimensionalArray:
def __init__(self, numRows, numColumns):
self.R = numRows
self.C = numColumns
self.array = [[(x+3*y) for x in range(self.R)] for y in range(self.C)]
self.inverse = [[]]
def modifyItem(self, row, column, item):
self.array[row][column] = item
def getItem(self, row, column):
print self.array[row][column]
return self.array[row][column]
def showArray(self):
print self.array
def changeSize(self, rows, columns):
self.R = rows
self.C = columns
self.array = [[(x+3*y) for x in range(self.R)] for y in range(self.C)]
def getSize(self):
print [self.R, self.C]
return [self.R, self.C]
def getInverse(self):
if ((self.R == 2) and (self.C == 2)):
a = self.array[0][0]
b = self.array[0][1]
c = self.array[1][0]
d = self.array[1][1]
for L in self.array:
for item in L:
item = int(item)
self.inverse[0][0] = d
self.inverse[0][1] = b * (-1)
self.inverse[1][0] = c * (-1)
self.inverse[1][1] = a
self.inverse = self.inverse * (1/(a*d - b*c))
print self.inverse
return self.inverse
mat = multiDimensionalArray(2,2)
mat.showArray()
mat.getInverse()
此代碼卡在以下代碼行中。錯誤說「列表分配索引超出範圍」。我的目標是讓它做給定2x2矩陣的數學逆。 任何人都可以幫我搞定它嗎?謝謝創建2 x 2矩陣並查找其逆矩陣
self.inverse[0][0] = d
self.inverse[0][1] = b * (-1)
self.inverse[1][0] = c * (-1)
self.inverse[1][1] = a
你意識到numpy?在那裏你可以做'imat = numpy.linalg.inv(mat)'。或者,也許這是學習練習?即使作爲一種學習練習,您也可以利用簡單的語法將數組乘以一個常量,例如'inv = inv /(a * db * c)'和一個multidim構造函數,例如'inv = numpy.zeros ((2,2))'。 – tom10