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×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